mcpField
R
Remote MCP Server on Cloudflare

Remote MCP Server on Cloudflare

本地服务
github.com/hemanth云与基础设施174 周前更新

关于 Remote MCP Server on Cloudflare

这是一个在 Cloudflare Workers 上构建和部署远程 MCP 服务的示例,包含 OAuth 登录、示例工具及独立客户端,便于测试连接。

主要功能

  1. 01OAuth 登录流程
  2. 02SSE 传输
  3. 03部署到 Cloudflare Workers
  4. 04add 和 xkcd 示例工具
  5. 05独立客户端示例

适用场景

  1. 01搭建受 OAuth 保护的远程 MCP 服务
  2. 02使用 MCP Inspector 测试工具
  3. 03让 Claude Desktop 连接本地或已部署服务

MCP 相关

通过 SSE 向 MCP 客户端提供工具,并支持 OAuth 登录。项目包含 MCP Inspector 和 Claude Desktop 的连接示例。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"remote-mcp-server-hemanth": {
"command": "npx",
"args": [
"-y",
"mcp-remote"
]
}
}
}
启动命令npx -y mcp-remote

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-remote

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Cloudflare 上的远程 MCP 服务

让我们在 Cloudflare Workers 上运行一个远程 MCP 服务,并配备 OAuth 登录功能!

本地开发

# clone the repository
git clone [email protected]:hemanth/remote-mcp-server.git

# install dependencies
cd remote-mcp-server
npm install

# run locally
npm run dev

你应该可以在浏览器中打开 http://localhost:8787/

将 MCP Inspector 连接到你的服务

要探索新的 MCP API,可以使用 MCP Inspector。

  • 运行 npx @modelcontextprotocol/inspector@latest
  • 在 Inspector 中,将 Transport Type 切换为 SSE,输入 http://localhost:8787/sse 作为要连接的 MCP 服务 URL,然后点击“Connect”
  • 你将进入一个(模拟的)用户名/密码登录页面。输入任意邮箱和密码即可登录。
  • 随后你会被重定向回 MCP Inspector,现在可以列出并调用所有已定义的工具!
配置如上所示的 MCP Inspector
成功调用工具后的 MCP Inspector

将 Claude Desktop 连接到本地 MCP 服务

MCP Inspector 很好用,但我们真正想做的是将它连接到 Claude!按照 Anthropic 的快速入门指南操作,然后在 Claude Desktop 中前往“设置” > “开发者” > “编辑配置”以找到配置文件。

用文本编辑器打开该文件,并将其替换为以下配置:

{
  "mcpServers": {
    "math": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:8787/sse"
      ]
    }
  }
}

这会运行一个本地代理,让 Claude 通过 HTTP 与你的 MCP 服务通信。

打开 Claude 时,应该会弹出浏览器窗口供你登录。你应该能在右下角看到可用工具。使用合适的提示词时,Claude 应该会请求调用该工具。

点击锤子图标可查看可用工具列表
Claude 通过调用 MCP 加法工具回答提示词“I seem to have lost my calculator and have run out of fingers. Could you use the math tool to add 23 and 19?”

部署到 Cloudflare

  1. npx wrangler@latest kv namespace create remote-mcp-server-oauth-kv
  2. 按照说明将 kv 命名空间 ID 添加到 wrangler.jsonc
  3. npm run deploy

从远程 MCP 客户端调用新部署的远程 MCP 服务

和上面“本地开发”部分一样,运行 MCP Inspector:

npx @modelcontextprotocol/inspector@latest

然后在 Inspector 中输入你的 Worker 的 workers.dev URL(例如:worker-name.account-name.workers.dev/sse),作为要连接的 MCP 服务 URL,并点击“Connect”。

现在,你已从远程 MCP 客户端连接到 MCP 服务。

使用独立 MCP 客户端示例

此项目包含一个独立 MCP 客户端示例,演示如何以编程方式连接到 MCP 服务并调用其工具。这对于测试、集成或构建与 MCP 服务交互的自定义应用很有帮助。

客户端代码位于 src/client/mcp-client.ts,运行示例脚本为 src/run-client.ts。

前提条件
  1. 服务正在运行:确保 MCP 服务正在运行,可以是在本地(npm run dev 或 npx nx dev remote-mcp-server),也可以是已部署的服务。
  2. 客户端凭据:客户端使用 OAuth 2.0 客户端凭据进行身份验证。
    • 对于本地开发,示例客户端(src/run-client.ts)已预先配置测试凭据(test-client / test-secret)。如果服务端没有实现特定的客户端注册机制,默认 OAuth 提供方配置会使用这些凭据。
    • 如果你的 OAuth 服务上有特定的客户端注册系统,则需要注册客户端并获取客户端 ID 和密钥。
运行客户端示例
  1. 设置环境变量(可选): 客户端脚本 src/run-client.ts 可通过环境变量进行配置:

    • MCP_SERVER_URL:MCP 服务的基础 URL(例如,http://localhost:8787 或已部署的 worker URL)。默认值为 http://localhost:8787。
    • MCP_CLIENT_ID:OAuth 客户端 ID。默认值为 test-client。
    • MCP_CLIENT_SECRET:OAuth 客户端密钥。默认值为 test-secret。

    你可以在 shell 中设置这些变量:

    export MCP_SERVER_URL="http://your-server-url"
    export MCP_CLIENT_ID="your-client-id"
    export MCP_CLIENT_SECRET="your-client-secret"
    
  2. 执行脚本: 在项目根目录运行以下命令:

    npm run run:client
    

    这将使用 ts-node 执行 src/run-client.ts。脚本会尝试连接服务、完成身份验证,并调用示例 add 工具。

    注意:此客户端的初始版本在 src/client/mcp-client.ts 中,对实际的 SDK 客户端实例化(new McpClient(...))和工具调用(client.callTool(...))采用了占位实现。为了使工具调用成功,你可能需要根据 @modelcontextprotocol/sdk 提供的具体 API 更新这些部分(待 API 最终确定后)。如果服务的 OAuth /token 端点正常运行,身份验证部分(getAccessToken)应该可以正常工作。

将 Claude Desktop 连接到远程 MCP 服务

更新 Claude 配置文件,将其指向你的 workers.dev URL(例如:worker-name.account-name.workers.dev/sse),然后重启 Claude

{
  "mcpServers": {
    "math": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://worker-name.account-name.workers.dev/sse"
      ]
    }
  }
}

调试

如果出现问题,重启 Claude,或尝试在命令行中直接连接到 MCP 服务,运行以下命令可能会有所帮助。

npx mcp-remote@latest http://localhost:8787/sse

在少数情况下,清除添加到 ~/.mcp-auth 的文件可能会有所帮助

rm -rf ~/.mcp-auth

使用 xkcd 工具

xkcd 工具会获取一张随机 xkcd 漫画图片的 URL 及其替代文本。使用方法如下:

  1. 按照上文所述,使用 MCP Inspector 或 Claude Desktop 连接到 MCP 服务。
  2. 调用 xkcd 工具。

使用 MCP Inspector 的示例:

  • 在 MCP Inspector 中,从可用工具列表中选择 xkcd 工具。
  • 点击“Invoke”以获取一张随机 xkcd 漫画。

使用 Claude Desktop 的示例:

  • 打开 Claude Desktop,并确认其已连接到 MCP 服务。
  • 使用类似“使用 xkcd 工具获取一张随机 xkcd 漫画。”的提示词。

响应中会包含随机 xkcd 漫画的图片 URL 和替代文本。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。