返回市场
认证云运行服务

认证云运行服务

作者:the-freetech-company22 星标更新:2025-06-05

项目介绍

【技术文档摘要】

在 Google Cloud Run 上托管 MCP SSE 服务器

目前(2024年3月4日),MCP 正在处理身份验证和授权问题。他们计划在2025年上半年完成这些工作。问题是,我现在就想与我的团队分享我的 MCP 服务器。因此,我们在这里。目前唯一可以立即使用 Cursor 等 SSE MCP 服务器的方法是基于网络层的解决方案(例如,代理)。基本认证、API 密钥等都不适用。

利用 GCP Cloud Run 和基于用户的 IAM 身份验证,我创建了一种简单且安全的方式,允许客户端通过互联网访问自定义的 MCP 服务器。

MCP 发展路线图

MCP 不支持

工作原理

MCP 服务器托管在 Google Cloud Run 上。利用 Cloud Run IAM 身份验证,我们可以使用 Google Cloud SDK 创建一个代理连接,从而安全地从互联网连接到服务器。

TLDR 说明文件

如果你已经本地安装了 Docker 和 gcloud CLI,这个 应该开箱即用,只需进行少量配置即可。

步骤 1: 更新 deploy.sh 文件中的项目 ID、服务账户电子邮件地址等信息。

步骤 2: 部署成功后,获取提供的 Cloud Run URL,并将其添加到 mcp_proxy.ts 中,同时添加你的项目 ID。

步骤 3: 运行代理 npx ts-node mcp_proxy.ts 运行代理并提问

步骤 3: 使用 http://localhost:3030 访问你的 MCP 服务器 - 在 Cursor 的设置 > 功能 > MCP 服务器中添加它(确保选择 SSE 而不是命令)

详细的无聊说明文件

部署步骤

  1. 克隆仓库
  2. 运行 npm install 安装依赖项
  3. 运行 npm run dev 启动本地服务器

部署到 Google Cloud Run

要将你的 MCP 服务器部署到 Google Cloud Run:

  1. 确保已安装 Google Cloud SDK
  2. 更新 deploy.sh 脚本中的项目详细信息:
    • PROJECT_ID: 你的 Google Cloud 项目 ID
    • REGION: 你首选的 GCP 区域
    • SERVICE_ACCOUNT_EMAIL: 具有适当权限的服务账户电子邮件地址
  3. 运行部署脚本:
    chmod +x deploy.sh
    ./deploy.sh
    

部署脚本将:

  • 构建你的 MCP 服务器的 Docker 容器
  • 将其推送到 Google Container Registry
  • 启用身份验证后将其部署到 Cloud Run

连接到已部署的 MCP 服务器

要连接到已部署的 MCP 服务器:

  1. 在本地运行 MCP 代理:

    npx ts-node mcp_proxy.ts
    
  2. 代理将:

    • 检查你是否已通过 Google Cloud 身份验证
    • 自动获取身份验证令牌
    • 创建本地代理服务器(默认:http://localhost:3030)
    • 将经过身份验证的请求转发到你的 Cloud Run 服务
  3. 配置你的 MCP 客户端以连接到本地代理 URL

在 Cursor 中使用 MCP 服务器

  1. 首先,让我们运行代理以建立本地机器与托管在 Google Cloud Run 上的 MCP 服务器之间的连接。
npx ts-node mcp_proxy.ts
  1. 现在让我们在 Cursor 的设置 > 功能标签页中的 MCP 服务器部分添加我们的本地代理服务器。

添加代理到 Cursor

添加代理到 Cursor

  1. 现在,一切就绪!启动一个新的 Composer(确保你在代理模式下)并询问某个地点的天气。你的终端输出(连接代理的地方)+ Composer 输出应如下所示:

运行代理并提问

安全性

此设置提供了多个安全优势:

  • 未经身份验证,你的 MCP 服务器无法公开访问
  • 所有连接都通过 Google Cloud IAM 加密
  • 团队成员需要 Google Cloud SDK 访问权限才能连接

连接问题

  • 验证 mcp_proxy.ts 中的 Cloud Run URL 是否与你的部署服务匹配
  • 检查 Cloud Run 日志中的任何服务器端错误

贡献

欢迎贡献!请随意提交问题或拉取请求。

许可证

MIT