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": "" }
]
}
}设置
先决条件
- 带有Workers和Access的Cloudflare帐户
- 可通过Cloudflare隧道访问的MCP服务器
- 保护隧道主机名的CF Access自托管应用程序
- CF Access SaaS应用程序作为工人的OIDC提供商
1.创建KV命名空间
wrangler kv namespace create OAUTH_KV --env 更新 id 在 wrangler.jsonc 为了您的环境。
2.设置秘密
# For each environment:
wrangler secret put MCP_UPSTREAM_URL --env
wrangler secret put SERVICE_CLIENT_ID --env
wrangler secret put SERVICE_CLIENT_SECRET --env
wrangler secret put ACCESS_CLIENT_ID --env
wrangler secret put ACCESS_CLIENT_SECRET --env
wrangler secret put ACCESS_TOKEN_URL --env
wrangler secret put ACCESS_AUTHORIZATION_URL --env
wrangler secret put ACCESS_JWKS_URL --env
wrangler secret put COOKIE_ENCRYPTION_KEY --env 生成 COOKIE_ENCRYPTION_KEY 与: openssl rand -hex 32
3.部署
npm install
wrangler deploy --env 4.连接Claude.ai
添加为MCP连接器: https://.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加密的随机十六进制字符串 |
许可证
麻省理工学院
