远程MCP服务器

一个轻量级的远程MCP服务器,为Firm工作空间提供Git仓库支持的远程访问功能,适用于个人或小团队的AI代理工作。

  • by 42futures
  • Rust
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 42futures/firm-remote-mcp

使用说明

公司远程MCP

轻量级遥控器 主控程序 服务器 公司 工作区,设计用于在Google Cloud Run上执行。

这是一个概念验证,展示了如何让AI代理远程访问由Git存储库支持的Firm工作区。它将工具从 firm_mcp crate并在上面添加了基于Git的持久性和OAuth身份验证。它不适用于生产用途或更大的团队。把它看作是你可以适应的起点。

运作原理

服务器使用Git存储库作为其数据层:

  1. 启动时,服务器克隆存储库并签出一个专用分支(默认: mcp),合并到最新的 main.
  2. 读取操作 (列表、获取、查询、搜索等)在不修改任何内容的情况下对本地克隆进行操作。
  3. 写入操作 (添加实体,写入/替换/删除源代码)验证更改,应用更改,并创建推送到的原子提交 mcp 支。
  4. 在一段时间的不活动之后,Cloud Run将实例缩放为零。下一个请求从一个新的克隆开始将其带回。

这意味着您的代理可以安全地读取和修改您的工作区:更改会落在一个单独的分支上,您可以按照自己的节奏进行查看和合并。

局限性

  • 单用户。 没有冲突处理。如果本地状态与远程状态不同,服务器将重置以匹配源。不适合多人同时使用。
  • 无状态的基础设施。 身份验证码和会话状态存在于内存中。当实例缩放到零时,它们就会丢失。JWT之所以能够生存,是因为它们是自给自足的。
  • 没有动态客户端注册。 服务器使用预先配置的OAuth凭据。必须直接向您的MCP客户端提供客户端ID和密钥。
  • 基本安全强化。 恒定时间凭证比较、PKCE强制、重定向URI验证、JWT签名。适合个人/小团队使用,不适合高安全环境。

设置

先决条件

  • 启用计费的GCP项目
  • gcloud CLI已安装并经过身份验证
  • 包含贵公司工作区的GitHub存储库
  • 具有repo访问权限的GitHub个人访问令牌

配置

复制 .env.example 到 .env 并填写以下值:

cp .env.example .env
变量 描述
PROJECT_ID 您的GCP项目ID
REGION GCP区域(默认值: europe-west1)
SERVER_URL 服务器的公共URL(如果省略,我们会首先尝试检测它的部署)
REPO_URL 贵公司工作空间存储库的HTTPS URL
BRANCH MCP提交的分支(默认值: mcp)
GITHUB_TOKEN 具有仓库访问权限的GitHub PAT
OAUTH_CLIENT_ID 您选择此选项,然后将其交给您的MCP客户端
OAUTH_CLIENT_SECRET 您选择此选项,然后将其交给您的MCP客户端
JWT_SIGNING_KEY 用于签名令牌的密钥(如果省略,则在首次部署时自动生成)
ALLOWED_REDIRECT_URIS MCP客户端的逗号分隔的OAuth回调URL
WORKSPACE_SUBDIR 存储库中包含工作区的子目录(可选)

对于Claude,将重定向URI设置为:

ALLOWED_REDIRECT_URIS=https://claude.ai/api/mcp/auth_callback,https://claude.com/api/mcp/auth_callback

部署

./deploy.sh

脚本:

  • 启用云运行、云构建和密钥管理器API
  • 商店 GITHUB_TOKEN 和 OAUTH_CLIENT_SECRET 秘密经理
  • 生成一个 JWT_SIGNING_KEY 如果秘密管理器不存在
  • 构建容器并将其部署到Cloud Run

完成后,它会打印服务器URL和MCP客户端所需的凭据。

连接您的MCP客户端

在Claude(或另一个支持OAuth远程服务器的MCP客户端)中,添加一个自定义连接器:

设置 值
服务器URL https://<your-service>.run.app/mcp
客户端ID OAUTH_CLIENT_ID 您已配置
客户秘密 OAUTH_CLIENT_SECRET 您已配置

服务器使用PKCE实现OAuth 2.0授权代码流。在第一次连接时,您的客户端将自动完成OAuth握手。

许可证

AGPL-3.0