OAuth网关服务

MCP Auth Gateway是一个基于Cloudflare Workers的OAuth安全网关,用于为本地未经认证的MCP服务器提供认证和授权服务。

  • by NickChristensen
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 NickChristensen/mcp-auth-gateway

使用说明

MCP认证网关

OAuth为Cloudflare Workers保护MCP网关。使用Cloudflare Access为本地未经身份验证的MCP服务器提供身份验证和授权。

概述

此Worker充当支持OAuth的网关,它:

  • 通过Cloudflare Access(OIDC)对用户进行身份验证
  • 代理通过Cloudflare隧道向后端服务器发送经过身份验证的MCP请求
  • 防止使用Service Auth令牌直接访问源端点

设置

先决条件

  • 启用Workers的Cloudflare帐户
  • Cloudflare Tunnel已配置并路由到您的LAN MCP服务器
  • Node.js 18+和npm

安装

npm install

配置

  1. 更新wrangler.toml 对于您的部署:

    • 集 name 到 paperless-mcp-gateway 或 things-mcp-gateway
    • 配置 routes 对于您的自定义域
    • 集 ORIGIN_MCP_URL 到您的后端源URL
  2. 设置所需的机密 通过Wrangler CLI:

# OAuth configuration from Cloudflare Access SaaS app
wrangler secret put ACCESS_CLIENT_ID
wrangler secret put ACCESS_CLIENT_SECRET
wrangler secret put ACCESS_AUTHORIZATION_URL
wrangler secret put ACCESS_TOKEN_URL
wrangler secret put ACCESS_JWKS_URL

# Session encryption
wrangler secret put COOKIE_ENCRYPTION_KEY  # 32+ random characters

# Origin service token from Cloudflare Access self-hosted app
wrangler secret put CF_ACCESS_CLIENT_ID
wrangler secret put CF_ACCESS_CLIENT_SECRET

发展

# Run locally
npm run dev

# Type check
npx tsc --noEmit

# View logs
npm run tail

部署

# Deploy to Cloudflare
npm run deploy

# Deploy specific backend
npm run deploy:paperless
npm run deploy:things

建筑

看 规格.md 了解完整的架构文档和实现细节。

路线

  • /mcp -MCP端点(在OAuth之后代理到后端)
  • /authorize -OAuth授权
  • /callback -OAuth回调
  • /token -OAuth令牌交换
  • /register -OAuth动态客户端注册
  • /.well-known/oauth-authorization-server -OAuth发现

安全

  • 所有机密均通过Wrangler CLI管理(从不在源代码管理中)
  • 服务身份验证令牌阻止直接访问源端点
  • 所有MCP访问都需要OAuth
  • 会话使用HttpOnly、安全、SameSite Cookie

故障排除

请参阅中的故障排除指南部分 规格.md 常见问题和解决方案。