模型上下文协议OAuth认证服务
一个需要通过 Auth0 进行用户身份验证的模型上下文协议服务器,然后才能代表已验证用户启用安全的 API 访问。
服务介绍
Model Context Protocol (MCP) 服务器
这是一个需要用户首先进行身份验证的MCP服务器。然后,MCP服务器将能够代表用户调用受保护的API。
配置
Todos API
在使用MCP服务器之前,您需要按照这里的文档部署Todos API。
Auth0配置
在Auth0仪表板中,在“应用程序”部分创建一个新的应用程序(类型:“常规Web应用程序”)。
一旦应用程序被创建,请在本地开发时将以下URL配置为回调URL:
http://localhost:8788/callback
设置KV命名空间
- 创建KV命名空间:
wrangler kv:namespace create "OAUTH_KV" - 使用KV ID更新Wrangler文件
环境变量
此MCP服务器需要配置一些环境变量:
| 设置 | 描述 |
|---|---|
AUTH0_DOMAIN |
您的Auth0租户的域名(例如,acme.auth0.com) |
AUTH0_CLIENT_ID |
从您创建的Auth0应用程序中获取的客户端ID |
AUTH0_CLIENT_SECRET |
从您创建的Auth0应用程序中获取的客户端密钥 |
AUTH0_AUDIENCE |
您在Auth0仪表板中注册的API的唯一标识符(例如,urn:todos-api) |
AUTH0_SCOPE |
MCP服务器请求的作用域。这里我们请求基本的个人资料信息(openid email profile)、刷新令牌能力(offline_access)以及API访问权限(read:todos) |
NODE_ENV |
环境设置 - 对于本地开发使用development |
API_BASE_URL |
您运行Todos API的基础URL |
开发
在项目的根目录下创建一个.dev.vars文件,并采用如下结构:
AUTH0_DOMAIN=yourdomain.us.auth0.com
AUTH0_CLIENT_ID=您在Auth0中创建的应用程序的客户端ID
AUTH0_CLIENT_SECRET=您在Auth0中创建的应用程序的客户端密钥
AUTH0_AUDIENCE=urn:todos-api
AUTH0_SCOPE=openid email profile offline_access read:todos
NODE_ENV=development
API_BASE_URL=http://localhost:8789
测试MCP服务器
要启动MCP服务器,可以使用以下命令:
npm run dev
通过MCP Inspector,您可以连接到MCP服务器,列出可用工具并调用它们。请确保将传输类型设置为sse并将URL设置为http://localhost:8788/sse。
将MCP服务器部署到Cloudflare
要将MCP服务器部署到Cloudflare,您首先需要设置以下密钥:
bash
wrangler secret put AUTH0_DOMAIN
wrangler secret put AUTH0_CLIENT_ID
wrangler secret put AUTH0_CLIENT_SECRET
wrangler secret put AUTH0_AUDIENCE
wrangler secret put AUTH0_SCOPE
wrangler secret put API_BASE_URL一旦设置好密钥,您可以使用以下命令部署 API:
bash
npm run deploy
在 Auth0 仪表板中,还需要为已部署的 MCP 服务器添加一个新的回调 URL,例如:
bash
https://mcp-auth0-oidc..workers.dev/callback
要测试这一点,现在可以使用 Workers AI LLM Playground。导航至 https://playground.ai.cloudflare.com/ 并在左下角通过以下 URL 模式连接到您的 MCP 服务器:
bash
https://mcp-auth0-oidc..workers.dev/sse
这将打开一个弹出窗口,您可以在其中登录,之后便能够使用所有工具。
故障排除
如果您在设置或使用 MCP 服务器时遇到任何问题,这里有一些故障排除步骤:
检查 Worker 日志
访问您的仪表板中的 Cloudflare Workers 日志
Auth0 仪表板日志
- 导航到 Auth0 仪表板中的日志部分
- 查看身份验证尝试和失败记录
常见问题
- 如果身份验证失败,请验证您的 Auth0 配置和密钥
- 对于连接问题,请确保您的 Worker 已部署且域名正确
- 确保所有回调 URL 在 Auth0 中都已正确配置
- 验证 API_BASE_URL 与您部署的 API 端点匹配