使用说明
模型上下文协议(MCP)服务器 + GitHub OAuth
这是一个 模型上下文协议(MCP) 支持远程MCP连接的服务器,内置Github OAuth。
您可以将其部署到您自己的Cloudflare账户中,创建完自己的GitHub OAuth客户端应用程序后,您将拥有一个功能齐全的远程MCP服务器,可以在此基础上进行开发。用户将能够通过使用他们的GitHub账户登录来连接到您的MCP服务器。
你可以将此作为参考示例,了解如何使用(此处原文未完整,假设后续内容为相关方法或工具)将其他OAuth提供商与部署在Cloudflare上的MCP服务器进行集成 workers-oauth-provider 图书馆。
MCP服务器(由……提供支持) Cloudflare Workers(云防护网络工作者)):
- 作为OAuth(的一种) 服务器 给您的MCP客户端
- 作为OAuth(认证授权) 客户 致你的 真实的 OAuth服务器(在此情况下为GitHub)
入门指南
直接克隆仓库并安装依赖项: npm install。
或者,您可以使用以下命令行在本地机器上创建远程MCP服务器:
npm create cloudflare@latest -- my-mcp-server --template=cloudflare/ai/demos/remote-mcp-github-oauth
用于生产
创建一个新的 GitHub OAuth 应用:
- 对于主页URL,请指定
https://mcp-github-oauth.<your-subdomain>.workers.dev - 对于授权回调URL,请指定
https://mcp-github-oauth.<your-subdomain>.workers.dev/callback - 记下您的客户端ID并生成客户端密钥。
- 通过 Wrangler 设置秘密
wrangler secret put GITHUB_CLIENT_ID
wrangler secret put GITHUB_CLIENT_SECRET
wrangler secret put COOKIE_ENCRYPTION_KEY # add any random string here e.g. openssl rand -hex 32
[!重要] 当你创建第一个密钥时,Wrangler 会询问你是否想要创建一个新的 Worker。输入“Y”以创建新的 Worker 并保存该密钥。
设置一个KV命名空间
- 创建KV命名空间:
wrangler kv namespace create "OAUTH_KV" - 使用KV ID更新Wrangler文件
部署与测试
部署MCP服务器,使其在workers.dev域名上可用
wrangler deploy
使用(工具/方法)测试远程服务器 检查员:
npx @modelcontextprotocol/inspector@latest
输入 https://mcp-github-oauth.<your-subdomain>.workers.dev/sse 然后点击连接。一旦您完成了身份验证流程,您就会看到工具正在运行:
您现在已经部署了一个远程MCP服务器!
访问控制
这个MCP服务器使用GitHub OAuth进行身份验证。所有经过身份验证的GitHub用户都可以访问基本工具,如“add”和“userInfoOctokit”。
“generateImage”工具仅限于列表中特定的GitHub用户使用 ALLOWED_USERNAMES 配置:
// Add GitHub usernames for image generation access
const ALLOWED_USERNAMES = new Set([
'yourusername',
'teammate1'
]);
从Claude Desktop访问远程MCP服务器
打开Claude桌面版,导航至“设置”->“开发者”->“编辑配置”。这将打开控制Claude可以访问的MCP服务器的配置文件。
将内容替换为以下配置。一旦您重启Claude桌面应用,将会打开一个浏览器窗口,显示您的OAuth登录页面。完成认证流程以授予Claude访问您的MCP服务器的权限。授权后,相关工具即可供您使用。
{
"mcpServers": {
"math": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp-github-oauth.<your-subdomain>.workers.dev/sse"
]
}
}
}
一旦工具(位于🔨下方)出现在界面上,你就可以要求Claude使用它们。例如:“你能用数学工具来计算23加19吗?”Claude应该调用该工具,并显示由MCP服务器生成的结果。
用于本地开发
如果您想迭代并测试您的MCP服务器,您可以在本地开发环境中进行。这将要求您在GitHub上创建另一个OAuth应用程序:
- 对于主页URL,请指定
http://localhost:8788 - 对于授权回调URL,请指定
http://localhost:8788/callback - 记下您的客户端ID并生成一个客户端密钥。
- 创建一个
.dev.vars在项目根目录下创建文件,内容为:
GITHUB_CLIENT_ID=your_development_github_client_id
GITHUB_CLIENT_SECRET=your_development_github_client_secret
开发与测试
在本地运行服务器,以便在 http://localhost:8788
wrangler dev
要测试本地服务器,请输入 http://localhost:8788/sse 进入“检查器”并点击“连接”。按照提示操作后,您将能够“列出工具”。
使用Claude和其他MCP客户端
当你使用Claude连接到你的远程MCP服务器时,可能会看到一些错误信息。这是因为Claude Desktop目前还不支持远程MCP服务器,所以有时会感到困惑。要验证MCP服务器是否已连接,请将鼠标悬停在Claude界面右下角的🔨图标上。你应该能看到你的工具在那里显示。
使用Cursor和其他MCP客户端
要将Cursor连接到您的MCP服务器,请选择 Type“命令”和在 Command 字段,将命令字段和参数字段合并为一个(例如。 npx mcp-remote https://<your-worker-name>.<your-subdomain>.workers.dev/sse)。
请注意,虽然 Cursor 支持 HTTP+SSE 服务器,但它不支持身份验证,因此您仍然需要使用 mcp-remote (并且使用STDIO服务器,而不是HTTP服务器)。
你可以通过打开客户端的配置文件,添加用于设置Claude的相同JSON内容,然后重启MCP客户端,将你的MCP服务器连接到其他MCP客户端,如Windsurf。
它是怎么工作的?
OAuth 提供者
OAuth 提供者库为 Cloudflare Workers 提供了一个完整的 OAuth 2.1 服务器实现。它处理 OAuth 流程中的复杂性,包括令牌的颁发、验证和管理。在这个项目中,它扮演着双重角色:
- 验证连接到您服务器的MCP客户端
- 管理与GitHub OAuth服务的连接
- 在键值存储(KV存储)中安全地存储令牌和认证状态
耐用型MCP(多层陶瓷封装)
持久化MCP通过Cloudflare的持久化对象扩展了基础MCP的功能,提供了:
- 为您的MCP服务器提供持久化状态管理
- 在请求之间安全地存储认证上下文
- 通过(某种方式)访问经过验证的用户信息
this.props - 根据用户身份支持有条件地提供工具可用性
MCP 远程(或:MCP 远程控制)
MCP Remote库使您的服务器能够暴露工具,这些工具可以被MCP客户端(如Inspector)调用。它
- 定义客户端与您的服务器之间的通信协议
- 提供一种结构化的方式来定义工具
- 处理请求和响应的序列化与反序列化
- 维护客户端与服务器之间的服务器发送事件(SSE)连接
