项目简介
该项目是一个基于 Model Context Protocol (MCP) 的Python服务器实现,集成了OAuth 2.0认证功能。它作为一个资源服务器,通过与授权服务器交互来验证访问令牌,确保只有经过认证的LLM客户端才能访问其托管的工具和资源。
主要功能点
- 安全认证: 支持OAuth 2.0协议进行身份验证和授权,确保LLM客户端与服务器之间的通信安全。
- 令牌校验: 通过OAuth 2.0令牌自省(Token Introspection)机制,与外部授权服务器实时验证访问令牌的有效性。
- 标准协议: 遵循MCP规范,通过JSON-RPC协议提供标准化的上下文服务和工具接口。
- 工具托管: 托管并执行多个工具,例如示例中的数学运算工具('add_numbers' 和 'multiply_numbers'),可供LLM客户端调用以扩展其能力。
- 流式HTTP传输: 支持Streamable HTTP传输协议,适用于现代Web应用和长连接场景。
安装步骤
- 克隆仓库:
git clone https://github.com/localden/min-py-mcp-auth cd min-py-mcp-auth - 安装依赖:
推荐使用 'uv' 包管理器:
或使用 'pip':uv pip install -e .pip install -e . - 配置服务器:
复制示例配置文件,并根据您的环境进行修改:
编辑 '.env' 文件,其中包含服务器的监听地址、端口、授权服务器地址、客户端ID和密钥等关键配置。cp .env.example .env
服务器配置 (MCP客户端使用)
MCP客户端通常需要一个配置来了解如何启动和连接到MCP服务器。虽然此服务器的监听地址和端口主要通过其 '.env' 文件或环境变量配置,但以下是一个示例MCP客户端配置,用于启动该服务器进程:
{ "server_name": "Python MCP认证服务器", "command": "mcp-auth-server", "args": [], "description": "一个支持OAuth 2.0认证的MCP服务器,提供安全的数学运算工具。服务器的实际监听地址和端口需通过其部署目录下的 .env 文件进行配置(例如:HOST=localhost, PORT=3000)。" }
参数注释:
- 'server_name': 给这个MCP服务器实例取一个易于识别的名称。
- 'command': 用于启动MCP服务器进程的命令,本例中为'mcp-auth-server'。
- 'args': 传递给'command'的额外命令行参数。对于此服务器,其核心配置(如监听地址、端口、传输协议)通过'.env'文件或环境变量加载,因此通常无需在此处指定额外参数。
- 'description': 对该服务器功能的简要描述。
基本使用方法
- 启动OAuth 2.0授权服务器(先决条件):
这个MCP服务器需要一个运行中的OAuth 2.0授权服务器进行令牌校验。您可以参考MCP Python SDK中提供的示例授权服务器进行测试:
请确保您的 'min-py-mcp-auth' 项目的 '.env' 文件中配置的 'AUTH_HOST' 和 'AUTH_PORT' 与此授权服务器的地址和端口匹配。git clone https://github.com/modelcontextprotocol/python-sdk.git cd python-sdk/examples/servers/simple-auth uv run mcp-simple-auth-as --port=9000 - 运行MCP认证服务器:
在 'min-py-mcp-auth' 项目根目录下,确保 '.env' 文件已正确配置后,执行:
服务器将根据 '.env' 文件或环境变量启动,并在控制台显示其监听地址和端口。mcp-auth-server - 通过MCP客户端测试:
使用任何支持OAuth认证和Streamable HTTP传输的MCP客户端连接此服务器,即可调用其提供的 'add_numbers' 和 'multiply_numbers' 工具。
例如,您可以使用 'curl' 命令测试服务器的RFC 9728资源发现端点:
curl http://localhost:3000/.well-known/oauth-protected-resource
信息
分类
AI与计算