Rust OAuth2 Server – MCP 集成服务端

使用说明

  • 项目简介

    • 本仓库包含一个使用 MCP(Model Context Protocol)标准的服务端实现,用于向 AI 客户端(如大语言模型驱动的代理)暴露对 OAuth2 服务的访问能力。MCP 服务端通过 JSON-RPC 提供“工具(Tools)”来对外注册和执行功能,例如注册客户端、获取/撤销令牌、健康与指标查询等。MCP 客户端可通过标准化的工具调用,与后端 Rust/Actix-Web 的 OAuth2 服务进行交互。
  • 主要功能点

    • MCP 服务端实现:通过 JSON-RPC 提供工具清单与执行入口,供 LLM/代理调度执行。
    • 工具集成:包含注册客户端、获取令牌、交换授权码、令牌撤销、健康检查、指标查询等工具。
    • 连接后端:工具实现对接 Rust OAuth2 服务的 REST API(如 /clients/register、/oauth/token、/oauth/introspect、/oauth/revoke、/health、/metrics、/.well-known/openid-configuration)。
    • 运行环境:Node.js 作为 MCP 服务器实现,后端 Rust 服务通过 HTTP/HTTPS 暴露 API。
    • 安全与可观测性:结合现有监控/指标能力,配套日志与追踪。
  • 安装步骤

    • 启动 MCP 服务器
      • 进入 mcp-server 目录,安装依赖并启动 Node 服务(需要 Node.js 环境)。
        • 常规步骤:npm install
        • 运行命令:node src/index.js
    • 启动后端 OAuth2 服务器
      • 按仓库中的文档在根目录下编译并运行整个 Rust OAuth2 服务(使用 cargo/run,或使用 Docker/Kubernetes 部署)。
    • 配置 MCP 客户端(示例配置见下方的 JSON 配置片段)
      • MCP 客户端需要知道 MCP 服务器的启动命令、参数及服务器名称等信息,具体在“服务器配置”中给出。
    • 连接测试
      • 启动后通过 MCP 客户端向 MCP 服务器发起工具调用,确保工具能够正确地调用后端 OAuth2 服务并返回结果。
  • 服务器配置(MCP 客户端需要的最小配置信息) 注:以下为生成用于 MCP 客户端的服务器配置示例,描述 MCP 服务器的启动命令、名称等信息。MCP 客户端本身不依赖代码,仅用于描述如何在客户端配置连接。

    { "server_name": "oauth2-server-mcp", "command": "node", "args": [ "/path/to/rust_oauth2_server/mcp-server/src/index.js" ], "env": { "OAUTH2_BASE_URL": "http://localhost:8080" } }

    说明:

    • server_name 表示 MCP 服务器在客户端注册时的标识名称。
    • command/args 指定启动 MCP 服务器的命令及参数。此处为 Node.js 运行 mcp-server 的入口文件路径。
    • env 中的 OAUTH2_BASE_URL 指向后端 OAuth2 服务的网关地址,MCP 工具在执行时会调用该后端 API。
    • MCP 客户端并不需要额外的程序逻辑来实现服务器,只需提供以上配置信息即可建立连接并执行工具。
  • 基本使用方法

    • 启动 MCP 服务端后,使用 MCP 客户端向 MCP 服务器请求以下操作:
      • 获取工具列表:了解可用的工具(如 register_client、get_token、exchange_code、introspect_token、revoke_token、health、metrics、openid_config 等)。
      • 调用具体工具:按需求向指定工具传入参数,MCP 服务端将通过底层 HTTP 请求与 OAuth2 服务交互并返回结果。
    • 结合 OpenID 配置与健康/指标等接口实现对后端的状态监控。
    • 在集成测试中,可通过调用 health/readiness/metrics 等工具,验证 MCP 服务端与 OAuth2 服务的连通性与稳定性。
  1. 关键词
  • OAuth2 服务
  • OpenID Connect
  • 自动化集成
  • 分布式观测
  • API 安全性
  1. 分类ID
  • 6

服务器信息