OAuth认证服务器

基于FastAPI的OAuth 2.1认证服务器,支持动态客户端注册和元数据发现。

  • by shahrear33
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 shahrear33/mcp-oauth

使用说明

MCP OAuth服务器示例

此项目演示了在FastAPI上安装了承载令牌身份验证的FastMCP服务器,包括用于动态客户端注册和元数据发现的OAuth 2.1端点。

MCP服务器设置

需求

  • Python 3.8+
  • 看 requirements.txt 对于所有依赖项

安装

pip install -r requirements.txt

环境

cp .env.example .env

使用任何OAuth提供者创建OAuth应用程序。(我用过 职员 作为一个例子。)
获取 client_id 和 client_secret 来自您的供应商。
更新您的 .env 包含相应环境变量的文件:

CLERK_ISSUER=<issuer_url>
CLERK_AUDIENCE=<clerk_client_id>
CLERK_CLIENT_SECRET=<clerk_client_secret>
BASE_URL=http://localhost:8000

运行服务器

python server.py

如。

python server.py --transport sse --host 0.0.0.0 --port 8000 --log-level info

命令行选项

python server.py --help
  • --transport:运输类型(sse 或 http,默认值: sse)
  • --host:主机地址(默认值: 127.0.0.1)
  • --port:端口号(默认值: 8000)
  • --log-level:日志记录级别(默认值: info)

测试服务器

方法1:MCP检查员

这 MCP检查员 提供了一个基于web的界面,用于使用OAuth身份验证测试MCP服务器。

  1. 配置服务器URL:输入 http://localhost:8000/mcp/sse 在MCP检查器中

  2. 启动OAuth流:单击“快速OAuth流”按钮开始身份验证

  3. 完成身份验证:按照OAuth步骤并授予必要的权限

方法2:FastMCP Python客户端

使用 FastMCP客户端 用于通过OAuth身份验证进行程序化访问。

  1. 更新客户端配置:在中修改服务器URL client.py 以匹配您的服务器端点
  2. 运行客户端:
    python client.py
    

方法3:克劳德整合

将MCP服务器直接与Claude集成,以便AI助手访问。

  1. 导航到设置:转到设置→ 集成→ 添加集成
  2. 配置服务器:输入服务器配置详细信息
  3. 建立连接:单击“连接”启用集成

服务器端点

核心终点

  • MCP服务器: http://127.0.0.1:8000/mcp -主MCP端点
  • 健康检查: http://127.0.0.1:8000/mcp/health -服务器运行状况
  • API文档: http://127.0.0.1:8000/docs -FastAPI自动生成文档

OAuth 2.1端点

  • 授权服务器元数据: http://127.0.0.1:8000/.well-known/oauth-authorization-server
  • OpenID连接发现: http://127.0.0.1:8000/.well-known/openid-configuration
  • 受保护资源元数据: http://127.0.0.1:8000/.well-known/oauth-protected-resource
  • 动态客户端注册: POST http://127.0.0.1:8000/register

开发终点

  • 开发令牌: http://127.0.0.1:8000/dev/token -生成测试令牌

环境变量

您可以使用环境变量配置服务器:

  • ISSUER:JWT发行人(默认值: https://dev.example.com)
  • AUDIENCE:JWT受众(默认: my-mcp-server)
  • CLIENT_SECRET:OAuth客户端密钥(默认:自动生成UUID)
  • BASE_URL:服务器的基本URL(默认值: http://127.0.0.1:8000)

MCP工具示例

  • hello(name: str) -> str:返回问候信息
  • add_numbers(a: int, b: int) -> int:将两个数字相加

这两个工具都需要有效的身份验证。

OAuth 2.1合规性

此服务器实现了关键的OAuth 2.1端点:

  • 授权服务器元数据发现
  • 动态客户端注册(RFC 7591)
  • 受保护资源元数据(RFC 8705)

注意:这是一个开发/演示服务器。对于生产使用,请与适当的OAuth 2.1授权服务器或身份提供者集成。

特性

  • 安装在FastAPI上的FastMCP服务器
  • 使用RSA公钥验证的承载令牌(JWT)身份验证
  • OAuth 2.1授权服务器元数据端点
  • 动态客户端注册端点
  • OpenID连接发现端点
  • 用于跨源请求的CORS中间件
  • 使用loguru进行结构化日志记录
  • 开发令牌生成端点
  • 健康检查端点
  • 多个MCP工具(你好,add_numbers)

参考文献