MCP OAuth 服务器实现库(mcp-oauth)

使用说明

  • 项目简介
    • 该仓库实现了一个面向 MCP 服务器的后端基础组件,提供与 MCP 客户端互通所需的认证与授权能力、资源元数据发现、授权服务器元数据发现、OIDC 配置、以及对资源的上下文信息提供等能力,便于在 MCP 场景下搭建可扩展的上下文服务框架。
    • 通过 OAuth 2.1/OIDC 机制实现对资源的访问授权、对工具的注册与调用、以及对 Prompt/Scopes 等 MCP 约束的支持;并提供对跨提供商的令牌校验、资源元数据发现和授权服务器元数据的统一暴露。
  • 主要功能点
    • MCP 兼容资源元数据发现:暴露受保护资源的元数据,支持按路径的分层配置。
    • MCP 兼容授权服务器元数据与 OpenID 连接发现:支持单租户和多租户模式的发现端点。
    • OAuth 2.1 + PKCE 支持:包含授权码、刷新、令牌端点、令牌校验、撤销与自注册等完整流程。
    • OIDC 参数转发与提示参数:对 prompt、login_hint、max_age、id_token_hint、acr_values 等进行转发与校验,提升静默认证和体验。
    • 客户注册(RFC 7591)与审计日志:提供动态客户端注册、注册速率限制、以及可观测的事件日志。
    • 安全特性与可观测性:内置 CORS、JWT/令牌安全、OpenTelemetry 指标、审计日志等。
    • 资源与端点的安全保护:通过 WWW-Authenticate 头提供端点级作用域指引;支持资源元数据的 CSP/安全头。
  • 安装步骤
    • 确保安装 Go 环境并获取仓库依赖。
    • 将库引入你的 MCP 服务中并编译为一个 MCP 服务后端应用,结合你现有的 MCP 客户端与 MCP 服务配置使用。
  • 服务器配置(MCP 服务器端配置说明)
    • 该配置描述用于 MCP 客户端在启动时如何启动并连接到 MCP 服务器(作为后端服务)。客户端需要一个启动命令和参数来运行 MCP 服务器的实现(示例用途,仅作理解用,不提供具体可执行二进制)。
    • 下面给出一个示例性 JSON 配置项说明,包含服务器名称、启动命令和参数等字段,帮助 MCP 客户端在实际部署时对接服务器。
    • 示例 JSON(注释性说明为帮助理解,实际客户端请按照自身部署方式使用): { "server_name": "mcp-oauth-server", "command": "mcp-oauth-server", "args": [ "--issuer=https://auth.example.com", "--resource=https://mcp.example.com", "--config=path/to/config.json" ], "notes": "上述字段用于描述 MCP 服务的启动信息。实际生产环境中需替换为你部署时的可执行二进制、参数与配置文件路径。此处仅提供结构化示例,客户端本身并不需要直接解析服务器内部实现细节,而是使用该信息启动并连接到 MCP 服务器。" }
  • 基本使用方法
    • 在你的 MCP 应用中集成此库,创建一个 MCP 服务器实例并绑定到你希望暴露的端点(如资源元数据、授权服务器元数据、OIDC 配置、令牌端点等)。
    • 配置 MCP 资源标识、支持的作用域、OIDC/PKCE 参数策略、速率限制、以及安全选项(如加密、审计、注册策略等)。
    • 启动后端服务后,MCP 客户端即可通过统一的 MCP 请求/响应机制访问资源元数据、授权能力、以及资源/提示模板等功能。
    • 若你使用自定义身份提供者(Provider),可实现对应接口并将其集成到服务中,以实现跨身份源的认证能力与令牌管理。
  • 基本用法摘要
      1. 配置 MCP 资源、作用域与提供者
      1. 启动后端服务并暴露 MCP 端点(资源元数据、授权元数据、OIDC 配置等)
      1. 使用 MCP 客户端对资源进行访问、获取令牌、并调用所需工具
      1. 根据需要启用审计、指标与安全头等强化特性

服务器信息