使用说明

项目简介

本项目 'github-oauth-mcp' 是一个最小化的 MCP (Model Context Protocol) 服务器示例,旨在演示如何将 GitHub OAuth 认证集成到 MCP 服务器中。请注意,这是一个非生产环境示例,仅供学习和参考。 它展示了如何通过 MCP 工具安全地向 LLM 客户端提供经过 GitHub OAuth 认证的用户信息。

主要功能点

  • 工具 (Tools) 注册和执行: 提供一个名为 'getUserDetails' 的工具,允许经过身份验证的客户端获取当前 GitHub 用户的详细信息(姓名、登录名、个人简介)。
  • GitHub OAuth 认证: 集成了 GitHub OAuth 流程,用于用户身份验证和授权。
  • SSE 传输: 使用 Server-Sent Events (SSE) 作为 MCP 服务器的传输协议。
  • Bearer Token 认证: 客户端需要提供 Bearer Token 进行身份验证才能连接和使用 MCP 服务器。
  • 会话管理: 使用内存中的 'TokenStore' 管理用户会话和访问令牌。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/dend/github-oauth-mcp.git
    cd github-oauth-mcp
  2. 配置 GitHub OAuth 应用:
    • 前往 GitHub 开发者设置 注册一个新的 GitHub App。
    • 注册应用时,Authorization callback URL 设置为 'http://localhost:3001/auth/callback'。
    • 生成新的 Client secret
    • 获取 Client ID
  3. 配置环境变量:
    • 在项目根目录下创建 '.env' 文件。
    • 将 GitHub App 的 Client ID 和 Client Secret 填入 '.env' 文件:
      GITHUB_CLIENT_ID=YOUR_CLIENT_ID
      GITHUB_CLIENT_SECRET=YOUR_SECRET
  4. 安装依赖并构建项目:
    npm install
    npm run build
  5. 启动服务器:
    npm run start
    服务器默认运行在 'http://localhost:3001'。

服务器配置 (MCP 客户端)

MCP 客户端需要配置以下信息以连接到此 MCP 服务器。以下是 JSON 格式的配置示例,请根据您的 MCP 客户端进行相应配置:

{
  "serverName": "simple-mcp-server",
  "command": "npm",
  "args": ["run", "start"],
  "transport": "sse",
  "endpoint": "http://localhost:3001/sse",
  "authentication": "bearerToken"
}

配置参数说明:

  • 'serverName': 服务器名称,本项目中定义为 "simple-mcp-server"。
  • 'command': 启动服务器的命令,这里使用 'npm'。
  • 'args': 启动命令的参数,'["run", "start"]' 表示执行 'npm run start' 命令。
  • 'transport': 传输协议,这里使用 'sse' (Server-Sent Events)。
  • 'endpoint': SSE 连接的端点 URL,指向服务器的 '/sse' 路径。
  • 'authentication': 客户端认证方式,这里使用 'bearerToken',表示需要提供 Bearer Token 进行认证。

注意: 客户端连接服务器时,需要在 HTTP Header 中包含有效的 Bearer Token。首次使用时,客户端需要引导用户完成 GitHub OAuth 授权流程以获取 Bearer Token。

基本使用方法

  1. 启动 MCP 服务器 (按照上面的安装步骤)。
  2. 配置 MCP 客户端 (例如 MCP Inspector) 连接到 'http://localhost:3001/sse',并配置 Bearer Token 认证。
  3. 使用 MCP 客户端 向服务器发送 MCP 请求,例如 'ListToolsRequest' 获取可用工具列表,然后调用 'CallToolRequest' 执行 'getUserDetails' 工具。
  4. GitHub OAuth 流程: 首次连接或 Token 无效时,客户端需要引导用户访问服务器提供的授权链接,完成 GitHub OAuth 授权,并获取 Bearer Token 用于后续请求。

重要提示: 由于这是一个示例项目,Token 管理和安全性方面可能较为简化。在实际生产环境中,请务必加强安全措施,例如使用更安全的 Token 存储、更完善的错误处理和更严格的输入验证。

信息

分类

开发者工具