模型上下文协议(MCP)服务器 + Github OAuth
这是一个支持远程 MCP 连接的模型上下文协议 (MCP)服务器,内置 Github OAuth。
您可以将其部署到您自己的 Cloudflare 帐户,在创建您自己的 Github OAuth 客户端应用后,您将拥有一个功能齐全的远程 MCP 服务器,并可在此基础上进行构建。用户只需使用他们的 GitHub 帐户登录即可连接到您的 MCP 服务器。
您可以将此作为参考示例,了解如何使用workers-oauth-provider将其他 OAuth 提供程序与部署到 Cloudflare 的 MCP 服务器集成。
MCP 服务器(由Cloudflare Workers提供支持):
充当 MCP 客户端的 OAuth服务器
充当真实OAuth 服务器(在本例中为 GitHub)的 OAuth客户端
入门
直接克隆 repo 并安装依赖项: npm install 。
或者,您可以使用下面的命令行在本地计算机上创建远程 MCP 服务器:
用于生产
创建一个新的GitHub OAuth 应用程序:
对于主页 URL,请指定
https://mcp-github-oauth.<your-subdomain>.workers.dev对于授权回调 URL,请指定
https://mcp-github-oauth.<your-subdomain>.workers.dev/callback记下您的客户端 ID 并生成客户端密钥。
通过 Wrangler 设置秘密
设置KV命名空间
创建 KV 命名空间:
wrangler kv:namespace create "OAUTH_KV"使用 KV ID 更新 Wrangler 文件
部署和测试
部署 MCP 服务器,使其在您的 workers.dev 域上wrangler deploy
使用Inspector测试远程服务器:
输入https://mcp-github-oauth.<your-subdomain>.workers.dev/sse并点击“连接”。完成身份验证流程后,您将看到工具正在运行:
您现在已经部署了远程 MCP 服务器!
访问控制
此 MCP 服务器使用 GitHub OAuth 进行身份验证。所有经过身份验证的 GitHub 用户都可以访问“add”和“userInfoOctokit”等基本工具。
“generateImage”工具仅限于ALLOWED_USERNAMES配置中列出的特定 GitHub 用户使用:
从 Claude Desktop 访问远程 MCP 服务器
打开 Claude Desktop,前往“设置”->“开发者”->“编辑配置”。这将打开配置文件,该文件控制 Claude 可以访问哪些 MCP 服务器。
将内容替换为以下配置。重启 Claude Desktop 后,将打开一个浏览器窗口,显示您的 OAuth 登录页面。完成身份验证流程,授予 Claude 访问您的 MCP 服务器的权限。授予访问权限后,您就可以使用这些工具了。
当工具(位于🔨下方)出现在界面中时,您可以要求 Claude 使用它们。例如:“您可以使用数学工具将 23 和 19 相加吗?”。Claude 应该会调用该工具并显示 MCP 服务器生成的结果。
为了地方发展
如果您想迭代和测试您的 MCP 服务器,您可以在本地开发中进行。这需要您在 GitHub 上创建另一个 OAuth 应用:
对于主页 URL,指定
http://localhost:8788对于授权回调 URL,指定
http://localhost:8788/callback记下您的客户端 ID 并生成客户端密钥。
使用以下命令在项目根目录中创建
.dev.vars文件:
开发和测试
在本地运行服务器,使其在http://localhost:8788可用wrangler dev
要测试本地服务器,请在 Inspector 中输入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)。
Related MCP server: GitHub MCP Bridge
它是如何工作的?
OAuth 提供程序
OAuth 提供程序库是 Cloudflare Workers 的完整 OAuth 2.1 服务器实现。它处理 OAuth 流程的复杂性,包括令牌颁发、验证和管理。在本项目中,它扮演着双重角色:
验证连接到服务器的 MCP 客户端
管理与 GitHub 的 OAuth 服务的连接
在 KV 存储中安全地存储令牌和身份验证状态
耐用的 MCP
Durable MCP 通过 Cloudflare 的 Durable Objects 扩展了基本 MCP 功能,提供:
MCP 服务器的持久状态管理
请求之间的身份验证上下文的安全存储
通过
this.props访问已认证用户信息支持根据用户身份有条件地提供工具
MCP 远程
MCP Remote 库使您的服务器能够公开可由 MCP 客户端(例如 Inspector)调用的工具。它:
定义客户端和服务器之间的通信协议
提供定义工具的结构化方法
处理请求和响应的序列化和反序列化
维护客户端和服务器之间的服务器发送事件 (SSE) 连接