项目简介

该项目是一个基于 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应用和长连接场景。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/localden/min-py-mcp-auth
    cd min-py-mcp-auth
  2. 安装依赖: 推荐使用 'uv' 包管理器:
    uv pip install -e .
    或使用 'pip':
    pip install -e .
  3. 配置服务器: 复制示例配置文件,并根据您的环境进行修改:
    cp .env.example .env
    编辑 '.env' 文件,其中包含服务器的监听地址、端口、授权服务器地址、客户端ID和密钥等关键配置。

服务器配置 (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': 对该服务器功能的简要描述。

基本使用方法

  1. 启动OAuth 2.0授权服务器(先决条件): 这个MCP服务器需要一个运行中的OAuth 2.0授权服务器进行令牌校验。您可以参考MCP Python SDK中提供的示例授权服务器进行测试:
    git clone https://github.com/modelcontextprotocol/python-sdk.git
    cd python-sdk/examples/servers/simple-auth
    uv run mcp-simple-auth-as --port=9000
    请确保您的 'min-py-mcp-auth' 项目的 '.env' 文件中配置的 'AUTH_HOST' 和 'AUTH_PORT' 与此授权服务器的地址和端口匹配。
  2. 运行MCP认证服务器: 在 'min-py-mcp-auth' 项目根目录下,确保 '.env' 文件已正确配置后,执行:
    mcp-auth-server
    服务器将根据 '.env' 文件或环境变量启动,并在控制台显示其监听地址和端口。
  3. 通过MCP客户端测试: 使用任何支持OAuth认证和Streamable HTTP传输的MCP客户端连接此服务器,即可调用其提供的 'add_numbers' 和 'multiply_numbers' 工具。 例如,您可以使用 'curl' 命令测试服务器的RFC 9728资源发现端点:
    curl http://localhost:3000/.well-known/oauth-protected-resource

信息

分类

AI与计算