OAuth代理服务

一个基于FastMCP的Entra ID OAuth代理服务,用于身份验证和授权管理。

  • by SBejga
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 SBejga/just-mcp-oauth-proxy-example

使用说明

Just-MCP-OAuth-Proxy 示例

使用FastMCP的OAuth代理身份验证入口

进入ID应用程序注册

遵循以下链接:https://github.com/jlowin/fastmcp/blob/v2.13.0rc2/docs/integrations/azure.mdx

  1. 十、 Azure 门户 “Microsoft Entra ID”>“应用程序注册”
  2. [X] “新注册”
    • 名字: just-mcp-oauth-proxy-example
    • 支持的账户类型:“任何组织目录中的账户(任何 Microsoft Entra ID 租户 - 多租户)”
    • 重定向URI: Web - http://localhost:6274/oauth/callback (对于MCP检查员,稍后添加ngrok或类似工具)
  3. [X] “注册”
  4. [X] “公开API”:配置您的应用程序ID URI并定义作用域
    • 转到应用程序注册侧边栏中的“公开API”。
    • 点击 添加 在“Application ID URI”旁边(原本应为“Add”而非“Set”)并选择以下选项之一:
      • 保持默认设置 api://<your generated client id>}
      • 把它记下来以备后用作为 identifier_uri
    • 点击“添加范围”并为您的应用创建一个范围
      • 范围名称: read
      • 谁可以同意:管理员和用户
      • 管理员同意显示名称: Read access to just-mcp-oauth-proxy-example
      • 管理员同意说明: Allows read access to just-mcp-oauth-proxy-example
      • 用户同意显示名称: Read access to just-mcp-oauth-proxy-example
      • 用户同意说明: Allows read access to just-mcp-oauth-proxy-example
      • 状态:已启用
      • “添加范围”
      • 记下范围(“读取”)
  5. [X] “配置访问令牌版本”:确保您的应用程序使用访问令牌v2
    • 在应用程序注册侧边栏中,转到“清单”。
    • 注意这解释了为什么默认情况下总是使用旧的、已弃用的 Azure AD Graph 清单!
    • 提示你可以通过“Entra ID 管理门户”进行检查!https://entra.microsoft.com/ > “Azure Active Directory” > “应用程序注册” > 选择你的应用程序 > “清单” > “编辑清单” > 查看 JSON 属性 accessTokenAcceptedVersion
  6. [X] “证书与密钥”>“新建客户端密钥”
    • 描述: just-mcp-oauth-proxy-example-secret
    • 过期时间: In 6 months
    • “Add”翻译成中文是“添加”
    • 记下这个密钥值(立即记下,之后将不再显示)
  7. [X] “概览”:记下“应用程序(客户端)ID”和“目录(租户)ID”
    • 应用程序(客户端)ID一个类似UUID的(字符串/标识符) 835f09b6-0f0f-40cc-85cb-f32c5829a149
    • 目录(租户)ID一个类似UUID的(字符串/标识符) 08541b6e-646d-43de-a0eb-834e6713d6d5
  8. 将自己添加为应用程序注册的所有者

跑步

设置所需的环境变量,以使用并配置与Entra ID的OAuth代理。 见 .env - 我使用1password CLI从上面的应用程序注册中注入客户端ID、密钥和租户ID。 (./run.sh main.py)

然后我用MCP Inspector进行测试。检查是否有新版本发布。

具有连接类型 via proxy据我了解,fastmcp 默认情况下不会添加 CORS 头。

npx @modelcontextprotocol/inspector@0.17.1

兼容 FastMCP 2.13.0rc2 和 MCP Inspector 0.17.1

测试使用:

fastmcp 2.13.0rc2(可译为“fastmcp 2.13.0候选发布版2”)

main-self.py 翻译成中文可以是“主-自我.py”或者根据上下文更自然地表达为“主程序-自我模块.py”(如果这是指一个程序中的主要部分和自我管理/自我处理的模块)。不过,具体翻译还需结合该文件的实际用途和上下文来确定最准确的表述

  • [X] MCP Inspector 0.17.1 - 本地主机(localhost) via proxy (工具/列表,工具/调用,版本,获取用户信息)

  • [ ] MCP Inspector 0.17.1 - 本地主机 direct (跨域资源共享问题)

  • [ ] MCP Inspector 0.17.1 - fastmcp.cloud(可翻译为:“[ ] MCP 检查器 0.17.1 - fastmcp.cloud”) via proxy (CORS问题,fastmcp-cloud未处理auth=public的情况?)

  • [ ] ChatGPT网页版

    • [X] 添加,列表/工具
    • [ ] 工具调用 => 401
  • [ ] Claude Desktop(可译为“克劳德桌面版”或根据具体语境简化为“克劳德桌面应用”)

  • [ ] 克劳德·韦布

更新fastmcp依赖

在(某处)更改版本 pyproject.toml

fastmcp==2.13.0rc2

然后运行: uv sync