Skip to main content
Glama
danrthompson

Remote MCP Server with GitHub OAuth

by danrthompson

模型上下文协议(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 服务器:

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

设置KV命名空间

  • 创建 KV 命名空间: wrangler kv:namespace create "OAUTH_KV"

  • 使用 KV ID 更新 Wrangler 文件

部署和测试

部署 MCP 服务器,使其在您的 workers.dev 域上wrangler deploy

使用Inspector测试远程服务器:

npx @modelcontextprotocol/inspector@latest

输入https://mcp-github-oauth.<your-subdomain>.workers.dev/sse并点击“连接”。完成身份验证流程后,您将看到工具正在运行:

您现在已经部署了远程 MCP 服务器!

访问控制

此 MCP 服务器使用 GitHub OAuth 进行身份验证。所有经过身份验证的 GitHub 用户都可以访问“add”和“userInfoOctokit”等基本工具。

“generateImage”工具仅限于ALLOWED_USERNAMES配置中列出的特定 GitHub 用户使用:

// Add GitHub usernames for image generation access const ALLOWED_USERNAMES = new Set([ 'yourusername', 'teammate1' ]);

从 Claude Desktop 访问远程 MCP 服务器

打开 Claude Desktop,前往“设置”->“开发者”->“编辑配置”。这将打开配置文件,该文件控制 Claude 可以访问哪些 MCP 服务器。

将内容替换为以下配置。重启 Claude Desktop 后,将打开一个浏览器窗口,显示您的 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

要测试本地服务器,请在 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) 连接

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/danrthompson/remote-mcps'

If you have feedback or need assistance with the MCP directory API, please join our Discord server