MCP代理服务

一个通用的Cloudflare Worker,通过Cloudflare Access和Tunnel将经过身份验证的MCP请求代理到上游服务器。

  • by TWDickson
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 TWDickson/cf-mcp-proxy

使用说明

cf mcp代理

一个通用的Cloudflare Worker,通过Cloudflare访问和隧道将经过身份验证的MCP(模型上下文协议)请求代理到上游服务器。

建筑

Claude.ai (OAuth 2.1 + PKCE)
  → CF Worker (OAuth provider + proxy)
    → CF Access validates via SaaS app
    → Worker injects CF Access Service Token headers
    → CF Tunnel → your MCP server

多环境部署

这个工人完全可以重复使用。使用wrangler环境从一个代码库部署多个实例:

wrangler deploy --env ha        # → cf-ai.your-subdomain.workers.dev
wrangler deploy --env obsidian  # → cf-obsidian.your-subdomain.workers.dev

在中添加新环境 wrangler.jsonc:

"env": {
  "my-service": {
    "name": "cf-my-service",
    "kv_namespaces": [
      { "binding": "OAUTH_KV", "id": "<create via wrangler kv namespace create OAUTH_KV>" }
    ]
  }
}

设置

先决条件

  • 带有Workers和Access的Cloudflare帐户
  • 可通过Cloudflare隧道访问的MCP服务器
  • 保护隧道主机名的CF Access自托管应用程序
  • CF Access SaaS应用程序作为工人的OIDC提供商

1.创建KV命名空间

wrangler kv namespace create OAUTH_KV --env <env-name>

更新 id 在 wrangler.jsonc 为了您的环境。

2.设置秘密

# For each environment:
wrangler secret put MCP_UPSTREAM_URL --env <env-name>
wrangler secret put SERVICE_CLIENT_ID --env <env-name>
wrangler secret put SERVICE_CLIENT_SECRET --env <env-name>
wrangler secret put ACCESS_CLIENT_ID --env <env-name>
wrangler secret put ACCESS_CLIENT_SECRET --env <env-name>
wrangler secret put ACCESS_TOKEN_URL --env <env-name>
wrangler secret put ACCESS_AUTHORIZATION_URL --env <env-name>
wrangler secret put ACCESS_JWKS_URL --env <env-name>
wrangler secret put COOKIE_ENCRYPTION_KEY --env <env-name>

生成 COOKIE_ENCRYPTION_KEY 与: openssl rand -hex 32

3.部署

npm install
wrangler deploy --env <env-name>

4.连接Claude.ai

添加为MCP连接器: https://<worker-name>.your-subdomain.workers.dev/mcp

秘密参考

机密 描述
MCP_UPSTREAM_URL 上游MCP服务器的完整URL(例如。, https://service.yourdomain.com/mcp)
SERVICE_CLIENT_ID CF访问服务令牌客户端ID(注入到上游请求中)
SERVICE_CLIENT_SECRET CF访问服务令牌客户端密钥
ACCESS_CLIENT_ID CF Access SaaS应用程序客户端ID(OIDC提供商)
ACCESS_CLIENT_SECRET CF Access SaaS应用程序客户端密码
ACCESS_TOKEN_URL CF Access SaaS应用令牌端点
ACCESS_AUTHORIZATION_URL CF Access SaaS应用程序授权端点
ACCESS_JWKS_URL CF Access SaaS应用程序JWKS端点
COOKIE_ENCRYPTION_KEY 用于cookie加密的随机十六进制字符串

许可证

麻省理工学院