使用说明
认证MCP服务器
受Auth0 OAuth保护的远程MCP(模型上下文协议)服务器。它为经过身份验证的用户提供了工具(问候、书写提示)和可选的Gmail访问(列出登录用户的最新电子邮件)。
先决条件
- Python 3.13+
- 紫外线 (安装)
- Auth0帐户 (用于MCP认证)
- 谷歌云项目 (仅当您需要Gmail工具时)
端到端设置
1.克隆并安装
git clone <your-repo-url>
cd auth-mcp-remote
uv sync
2.Auth0设置(必需)
您需要Auth0应用程序和API,以便MCP客户端可以进行身份验证。
-
创建Auth0帐户 在 auth0.com 并打开 仪表盘.
-
创建API (这是你的“听众”):
- 应用程序 → 应用程序编程接口 → 创建API
- 名称:例如。
Auth MCP Server - 标识符:例如。
https://your-server.example.com/mcp(使用您的真实MCP URL;这是您的 观众) - 签名算法: RS256 → 创建
-
创建应用程序 (针对MCP客户端):
- 应用程序 → 应用程序 → 创建应用
- 名称:例如。
MCP Client - 类型: 机器对机器 (或 本土的 本地客户)
- 选择您的API并授权它;授权范围:
openid,profile,email - 注意 客户端ID 和 客户端密钥 如果你需要他们为客户
-
注意您的Auth0域 (例如。
your-tenant.auth0.com)从Auth0仪表板。 -
环境变量 (见下面的步骤5):您将设置:
AUTH0_DOMAIN=您的租户域名(例如。your-tenant.auth0.com)AUTH0_AUDIENCE=您设置的API标识符(例如。https://your-server.example.com/mcp)RESOURCE_SERVER_URL=与受众相同,或与您的MCP服务器所在的公共URL相同(例如。https://your-server.example.com/mcp)
3.谷歌云设置(可选,适用于Gmail工具)
只有你愿意的时候才需要 list_my_recent_emails 和 link_my_gmail.
-
创建或选择项目 在 谷歌云控制台.
-
启用Gmail API:
- API和服务 → 图书馆 → 搜索 Gmail API → 启用.
-
配置OAuth同意屏幕:
- API和服务 → OAuth同意屏幕.
- 用户类型: 外部的 → 创建.
- 应用程序信息:name(例如。
dibya-mcp-gmail),支持电子邮件,开发人员联系方式→ 保存并继续. - 范围 → 添加或删除作用域 → add
https://www.googleapis.com/auth/gmail.readonly→ 保存并继续. - 测试用户 (如果处于测试模式):添加将使用该应用程序的Gmail地址(例如您自己的)→ 保存并继续.
- 摘要 → 返回仪表盘.
-
创建OAuth 2.0凭据:
- API和服务 → 凭证 → 创建凭据 → OAuth客户端ID.
- 应用程序类型: 桌面应用 (或 Web应用程序 下面有重定向URI)。
- 名称:例如。
MCP Gmail. - 如果 Web应用程序:低于 授权重定向URI 精确添加:
http://localhost:8080/. - 创建 → copy 客户端ID 和 客户端密钥.
-
环境变量 (见步骤5):您将设置:
GOOGLE_CLIENT_ID=OAuth客户端客户端IDGOOGLE_CLIENT_SECRET=OAuth客户端密码
4.获取Gmail刷新令牌(可选,适用于Gmail工具)
MCP服务器需要 刷新令牌 由...签发 你的 OAuth客户端(来自Google OAuth Playground的令牌将无法使用)。
-
在Google Cloud中添加重定向URI (如果还没有):
- API和服务 → 凭证 → 您的OAuth 2.0客户端ID。
- 在...之下 授权重定向URI 添加:
http://localhost:8080/(带尾随斜线)→ 保存.
-
运行一次性脚本 从项目根:
uv run python scripts/get_gmail_refresh_token.py- 如果需要,该脚本会打印出要添加的确切重定向URI。
- 按Enter键打开浏览器;使用您要使用其Gmail的Google帐户登录。
- 同意后,脚本会打印一个 刷新令牌。复制它。
-
将Gmail链接到MCP服务器 (在服务器运行并且您通过Auth0身份验证后):
- 调用MCP工具
link_my_gmail使用该刷新令牌。服务器为您的Auth0用户存储它,以便list_my_recent_emails可以工作。
- 调用MCP工具
5.环境变量
在项目根目录中,创建 .env 文件(参见 .env.example):
必需(Auth0):
AUTH0_DOMAIN=your-tenant.auth0.com
AUTH0_AUDIENCE=https://your-server.example.com/mcp
RESOURCE_SERVER_URL=https://your-server.example.com/mcp
可选(Gmail):
GOOGLE_CLIENT_ID=xxx.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=xxx
可选: GMAIL_TOKEN_STORE_PATH=.gmail_tokens.json (默认情况下;存储每个用户的刷新令牌)。
6.运行服务器
uv run python main.py
服务器运行于 http://0.0.0.0:8000/mcp (或您在生产中使用的URL,例如在反向代理后面)。MCP客户端必须使用API的有效Auth0访问令牌(承载器)发送请求。
MCP工具
| 工具 | 说明 |
|---|---|
greet_user |
按姓名问候经过身份验证的用户。 |
fetch_instructions(prompt_name) |
返回书写模板: write_blog_post, write_social_post, write_video_chapters. |
link_my_gmail(refresh_token) |
使用Google刷新令牌(一次性)链接当前Auth0用户的Gmail。 |
list_my_recent_emails(max_results) |
列出已验证用户的最近Gmail邮件(默认10封,最多20封)。需要先链接Gmail。 |
故障排除
-
“未配置Gmail”
集GOOGLE_CLIENT_ID和GOOGLE_CLIENT_SECRET在.env,然后使用link_my_gmail使用来自的刷新令牌scripts/get_gmail_refresh_token.py. -
“redirect_uri_mismatch”
精确添加http://localhost:8080/转到您的Google OAuth客户端 授权重定向URI 并保存。 -
“此应用程序的请求无效”/“仅限开发人员批准的测试人员”
OAuth应用程序已在 测试.In API和服务 → OAuth同意屏幕 → 测试用户,添加您的Gmail地址。或 发布应用程序 (在验证完成之前,您将看到“未验证的应用程序”警告)。 -
列出电子邮件时为“未经授权的客户端”
刷新令牌必须来自 你的 OAuth客户端。买一个新的uv run python scripts/get_gmail_refresh_token.py并呼叫link_my_gmail再一次。
技术栈
- FastMCP –MCP服务器
- 身份验证0 –OAuth 2.0用于MCP身份验证
- 谷歌API –链接用户的Gmail只读
- 紫外线 Python依赖管理