使用说明
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服务器。
-
配置服务器URL:输入
http://localhost:8000/mcp/sse在MCP检查器中 -
启动OAuth流:单击“快速OAuth流”按钮开始身份验证
-
完成身份验证:按照OAuth步骤并授予必要的权限
方法2:FastMCP Python客户端
使用 FastMCP客户端 用于通过OAuth身份验证进行程序化访问。
- 更新客户端配置:在中修改服务器URL
client.py以匹配您的服务器端点 - 运行客户端:
python client.py
方法3:克劳德整合
将MCP服务器直接与Claude集成,以便AI助手访问。
- 导航到设置:转到设置→ 集成→ 添加集成
- 配置服务器:输入服务器配置详细信息
- 建立连接:单击“连接”启用集成
服务器端点
核心终点
- 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)
