模型上下文协议(MCP)服务器+PingOne
这是一个 模型上下文协议(MCP) 支持远程MCP连接的服务器,内置PingOne。
MCP服务器(由 Cloudflare员工):
- 充当 _OAuth服务器_ 您的MCP客户
- 充当 _OIDC客户端_ 到您的PingOne环境
\[!警告\] 这是一个演示模板,旨在帮助您快速入门。虽然我们已经实施了几种安全控制, 在部署到生产环境之前,您必须实施所有预防性和深度防御安全措施。请查看我们的综合安全指南: 保护MCP服务器
入门指南
本演示展示了MCP服务器如何代表最终用户安全地调用受保护的API。首先:
- 部署 所有API.
- 部署 OIDC MCP服务器 (适用于Cloudflare管理同意)或 DaVinci OIDC MCP服务器 (PingOne DaVinci管理同意书)。
\[!注意\] 这里使用的API可以是任何PingOne安全的API。在本例中,我们使用Cloudflare workers API,但目标是演示如何使用此体系结构将任何API连接到MCP服务器。
从Cloudflare Workers AI LLM Playground访问远程MCP服务器
引导到 https://playground.ai.cloudflare.com 并使用以下URL模式连接到您的MCP服务器:
https://remote-mcp-pingone(-dv)..workers.dev/mcp从Claude Desktop访问远程MCP服务器
打开克劳德桌面,导航到设置->开发人员->编辑配置。这将打开控制Claude可以访问哪些MCP服务器的配置文件。
用以下配置替换内容。重新启动Claude Desktop后,将打开一个浏览器窗口,显示您的OAuth登录页面。完成身份验证流程,授予Claude访问您的MCP服务器的权限。授予访问权限后,这些工具将可供您使用。
{
"mcpServers": {
"todo-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"https://remote-mcp-pingone(-dv)..workers.dev/mcp"
]
}
}
}一旦工具(下🔨) 在界面中显示,您可以要求Claude使用它们。例如:“你能告诉我我的待办事项列表中有什么吗?”。Claude应该调用该工具并显示MCP服务器生成的结果。
它是如何工作的?
这种架构将Cloudflare workers的无状态特性与经过身份验证的MCP会话的有状态要求联系起来。
OAuth提供者(身份代理)
OAuth提供者库直接在Cloudflare worker中实现了兼容的OAuth 2.1服务器。它充当安全网关,执行双重角色:
- OAuth服务器: 它管理与MCP客户端的直接关系,处理注册和颁发会话令牌。
- OIDC客户: 它与PingOne协调上游联盟,交换调用受保护API所需的访问令牌的授权码。
Cloudflare代理(州和交通)
MCP服务器扩展了McpAgent类,该类自动将MCP逻辑封装在持久对象中。这可以处理复杂的基础设施要求:
- 会话持久性: 它为每个MCP连接创建一个专用的隔离环境,并将PingOne令牌安全地保存在持久对象的存储中(
this.props). - 流式HTTP: 代理自动处理网络传输层。它接受来自MCP客户端的标准HTTP请求,并将其路由到正确持久对象中的MCP工具。
MCP SDK(工具逻辑)
官方的 @modelcontextprotocol/sdk 用于定义MCP服务器的实际能力。在代理内部,有一个McpServer实例:
- 处理协议: 管理JSON-RPC消息和工具定义的序列化。
- 启用流媒体: 实现可流式HTTP,以支持通过单个端点进行实时双向通信。
用例和可扩展性
此架构演示了将AI代理连接到PingOne保护的API的模式。通过充当OAuth代理,MCP服务器使LLM能够代表经过身份验证的用户与服务交互,而无需修改下游API的现有权限模型。无论是使用Cloudflare直接同意方法还是DaVinci编排流程,该项目都提供了一个配置指南,用于在保持基于身份的访问控制的同时,实现与企业数据的自然语言交互。
