认证MCP服务器

一个通过Auth0 OAuth保护的远程MCP服务器,提供认证用户的工具(问候、写作提示)和可选的Gmail访问功能(列出登录用户的最近邮件)。

  • by DibyaRanjan1
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 DibyaRanjan1/AUTH-MCP-REMOTE

使用说明

认证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客户端可以进行身份验证。

  1. 创建Auth0帐户 在 auth0.com 并打开 仪表盘.

  2. 创建API (这是你的“听众”):

    • 应用程序 → 应用程序编程接口 → 创建API
    • 名称:例如。 Auth MCP Server
    • 标识符:例如。 https://your-server.example.com/mcp (使用您的真实MCP URL;这是您的 观众)
    • 签名算法: RS256 → 创建
  3. 创建应用程序 (针对MCP客户端):

    • 应用程序 → 应用程序 → 创建应用
    • 名称:例如。 MCP Client
    • 类型: 机器对机器 (或 本土的 本地客户)
    • 选择您的API并授权它;授权范围: openid, profile, email
    • 注意 客户端ID 和 客户端密钥 如果你需要他们为客户
  4. 注意您的Auth0域 (例如。 your-tenant.auth0.com)从Auth0仪表板。

  5. 环境变量 (见下面的步骤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.

  1. 创建或选择项目 在 谷歌云控制台.

  2. 启用Gmail API:

    • API和服务 → 图书馆 → 搜索 Gmail API → 启用.
  3. 配置OAuth同意屏幕:

    • API和服务 → OAuth同意屏幕.
    • 用户类型: 外部的 → 创建.
    • 应用程序信息:name(例如。 dibya-mcp-gmail),支持电子邮件,开发人员联系方式→ 保存并继续.
    • 范围 → 添加或删除作用域 → add https://www.googleapis.com/auth/gmail.readonly → 保存并继续.
    • 测试用户 (如果处于测试模式):添加将使用该应用程序的Gmail地址(例如您自己的)→ 保存并继续.
    • 摘要 → 返回仪表盘.
  4. 创建OAuth 2.0凭据:

    • API和服务 → 凭证 → 创建凭据 → OAuth客户端ID.
    • 应用程序类型: 桌面应用 (或 Web应用程序 下面有重定向URI)。
    • 名称:例如。 MCP Gmail.
    • 如果 Web应用程序:低于 授权重定向URI 精确添加: http://localhost:8080/.
    • 创建 → copy 客户端ID 和 客户端密钥.
  5. 环境变量 (见步骤5):您将设置:

    • GOOGLE_CLIENT_ID =OAuth客户端客户端ID
    • GOOGLE_CLIENT_SECRET =OAuth客户端密码

4.获取Gmail刷新令牌(可选,适用于Gmail工具)

MCP服务器需要 刷新令牌 由...签发 你的 OAuth客户端(来自Google OAuth Playground的令牌将无法使用)。

  1. 在Google Cloud中添加重定向URI (如果还没有):

    • API和服务 → 凭证 → 您的OAuth 2.0客户端ID。
    • 在...之下 授权重定向URI 添加: http://localhost:8080/ (带尾随斜线)→ 保存.
  2. 运行一次性脚本 从项目根:

    uv run python scripts/get_gmail_refresh_token.py
    
    • 如果需要,该脚本会打印出要添加的确切重定向URI。
    • 按Enter键打开浏览器;使用您要使用其Gmail的Google帐户登录。
    • 同意后,脚本会打印一个 刷新令牌。复制它。
  3. 将Gmail链接到MCP服务器 (在服务器运行并且您通过Auth0身份验证后):

    • 调用MCP工具 link_my_gmail 使用该刷新令牌。服务器为您的Auth0用户存储它,以便 list_my_recent_emails 可以工作。

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依赖管理