Skip to main content
Glama
mcp-google-oauth

mcp-google-oauth

Model Context Protocol (MCP) 服务器 + Google OAuth

这是一个支持远程 MCP 连接的 Model Context Protocol (MCP) 服务器,内置 Google OAuth 功能。

你可以将其部署到你自己的 Cloudflare 账户中,创建自己的 Google Cloud OAuth 客户端应用后,即可获得一个功能完整的远程 MCP 服务器,并在此基础上进行构建。用户可以通过登录其 Google 账户来连接到你的 MCP 服务器。

你可以将此作为参考示例,了解如何使用 workers-oauth-provider 库 将其他 OAuth 提供商与部署在 Cloudflare 上的 MCP 服务器集成。

该 MCP 服务器(由 Cloudflare Workers 提供支持):

  • 对你的 MCP 客户端充当 OAuth 服务器

  • 对你的真实 OAuth 服务器(在本例中为 Google)充当 OAuth 客户端

[!WARNING] 这是一个演示模板,旨在帮助你快速入门。虽然我们已经实现了一些安全控制措施,但在部署到生产环境之前,你必须实施所有预防性和纵深防御安全措施。请查阅我们的综合安全指南:Securing MCP Servers

快速开始

克隆仓库并安装依赖:npm install

生产环境

创建一个新的 Google Cloud OAuth 应用:

  • 对于 Homepage URL,指定 https://mcp-google-oauth.<your-subdomain>.workers.dev

  • 对于 Authorization callback URL,指定 https://mcp-google-oauth.<your-subdomain>.workers.dev/callback

  • 记下你的 Client ID 并生成一个 Client secret。

  • 通过 Wrangler 设置密钥

wrangler secret put GOOGLE_CLIENT_ID
wrangler secret put GOOGLE_CLIENT_SECRET
wrangler secret put COOKIE_ENCRYPTION_KEY # add any random string here e.g. openssl rand -hex 32
wrangler secret put HOSTED_DOMAIN # optional: use this when restrict google account domain

设置 KV 命名空间

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

  • 使用 KV ID 更新 Wrangler 文件

部署与测试

部署 MCP 服务器,使其在你的 workers.dev 域名上可用 wrangler deploy

使用 Inspector 测试远程服务器:

npx @modelcontextprotocol/inspector@latest

输入 https://mcp-google-oauth.<your-subdomain>.workers.dev/mcp 并点击连接。完成身份验证流程后,你将看到工具正常工作:

现在你已经部署了一个远程 MCP 服务器!

访问控制

此 MCP 服务器使用 Google Cloud OAuth 进行身份验证。所有经过身份验证的 Google 用户都可以访问 "add" 等基本工具。当你使用托管域名限制用户时,请设置 HOSTED_DOMAIN 环境变量。

从 Claude Desktop 访问远程 MCP 服务器

打开 Claude Desktop,导航到 Settings -> Developer -> Edit Config。这将打开控制 Claude 可以访问哪些 MCP 服务器的配置文件。

将内容替换为以下配置。重新启动 Claude Desktop 后,将打开一个浏览器窗口,显示你的 OAuth 登录页面。完成身份验证流程,授予 Claude 访问你的 MCP 服务器的权限。授予访问权限后,这些工具将可供你使用。

{
  "mcpServers": {
    "math": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp-google-oauth.<your-subdomain>.workers.dev/mcp"
      ]
    }
  }
}

当工具(位于 🔨 下)出现在界面中后,你可以让 Claude 使用它们。例如:"Could you use the math tool to add 23 and 19?"。Claude 应调用该工具并显示 MCP 服务器生成的结果。

本地开发

如果你想迭代和测试你的 MCP 服务器,可以在本地开发环境中进行。这需要你在 Google Cloud 上创建另一个 OAuth 应用:

  • 对于 Homepage URL,指定 http://localhost:8788

  • 对于 Authorization callback URL,指定 http://localhost:8788/callback

  • 记下你的 Client ID 并生成一个 Client secret。

  • 在项目根目录创建一个 .dev.vars 文件,内容如下:

GOOGLE_CLIENT_ID=your_development_google_cloud_oauth_client_id
GOOGLE_CLIENT_SECRET=your_development_google_cloud_oauth_client_secret

开发与测试

在本地运行服务器,使其在 http://localhost:8788 可用 wrangler dev

要测试本地服务器,请在 Inspector 中输入 http://localhost:8788/mcp 并点击连接。按照提示操作后,你将能够 "List Tools"。

使用 Claude 和其他 MCP 客户端

使用 Claude 连接到远程 MCP 服务器时,你可能会看到一些错误消息。这是因为 Claude Desktop 尚不支持远程 MCP 服务器,所以有时会感到困惑。要验证 MCP 服务器是否已连接,请将鼠标悬停在 Claude 界面右下角的 🔨 图标上。你应该会看到你的工具可用。

使用 Cursor 和其他 MCP 客户端

要将 Cursor 与你的 MCP 服务器连接,请选择 Type:"Command",并在 Command 字段中将命令和参数字段合并为一个(例如 npx mcp-remote https://<your-worker-name>.<your-subdomain>.workers.dev/mcp)。

请注意,虽然 Cursor 支持 HTTP+SSE 服务器,但它不支持身份验证,因此你仍然需要使用 mcp-remote(并且要使用 STDIO 服务器,而不是 HTTP 服务器)。

你可以将 MCP 服务器连接到其他 MCP 客户端(如 Windsurf),方法是打开客户端的配置文件,添加与 Claude 设置相同的 JSON,然后重新启动 MCP 客户端。

Related MCP server: cloudflare-mcp-google-auth

它是如何工作的?

OAuth Provider

OAuth Provider 库是 Cloudflare Workers 的完整 OAuth 2.1 服务器实现。它处理 OAuth 流程的复杂性,包括令牌签发、验证和管理。在此项目中,它扮演双重角色:

  • 对连接到服务器的 MCP 客户端进行身份验证

  • 管理与 Google Cloud OAuth 服务的连接

  • 在 KV 存储中安全地存储令牌和身份验证状态

Durable MCP

Durable MCP 通过 Cloudflare 的 Durable Objects 扩展了基础 MCP 功能,提供:

  • MCP 服务器的持久状态管理

  • 请求之间身份验证上下文的安全存储

  • 通过 this.props 访问已认证用户信息

  • 基于用户身份的条件工具可用性支持

MCP Remote

MCP Remote 库使你的服务器能够公开可由 Inspector 等 MCP 客户端调用的工具。它:

  • 定义客户端与服务器之间的通信协议

  • 提供定义工具的结构化方式

  • 处理请求和响应的序列化与反序列化

  • 支持 Streamable HTTP(推荐)和 Server-Sent Events (SSE) 两种客户端通信协议

传输协议迁移

此示例已更新为支持新的 Streamable HTTP 传输协议,该协议取代了已弃用的 Server-Sent Events (SSE) 协议。服务器现在公开两个端点:

  • /mcp - 推荐:使用新的 Streamable HTTP 协议

  • /sse - 已弃用:旧版 SSE 协议(为向后兼容而保留)

所有新集成都应使用 /mcp 端点。SSE 端点将在未来版本中移除。

Related MCP Connectors

Related MCP Servers