使用说明
项目简介
本项目 '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' 管理用户会话和访问令牌。
安装步骤
- 克隆仓库:
git clone https://github.com/dend/github-oauth-mcp.git cd github-oauth-mcp - 配置 GitHub OAuth 应用:
- 前往 GitHub 开发者设置 注册一个新的 GitHub App。
- 注册应用时,Authorization callback URL 设置为 'http://localhost:3001/auth/callback'。
- 生成新的 Client secret。
- 获取 Client ID。
- 配置环境变量:
- 在项目根目录下创建 '.env' 文件。
- 将 GitHub App 的 Client ID 和 Client Secret 填入 '.env' 文件:
GITHUB_CLIENT_ID=YOUR_CLIENT_ID GITHUB_CLIENT_SECRET=YOUR_SECRET
- 安装依赖并构建项目:
npm install npm run build - 启动服务器:
服务器默认运行在 'http://localhost:3001'。npm run start
服务器配置 (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。
基本使用方法
- 启动 MCP 服务器 (按照上面的安装步骤)。
- 配置 MCP 客户端 (例如 MCP Inspector) 连接到 'http://localhost:3001/sse',并配置 Bearer Token 认证。
- 使用 MCP 客户端 向服务器发送 MCP 请求,例如 'ListToolsRequest' 获取可用工具列表,然后调用 'CallToolRequest' 执行 'getUserDetails' 工具。
- GitHub OAuth 流程: 首次连接或 Token 无效时,客户端需要引导用户访问服务器提供的授权链接,完成 GitHub OAuth 授权,并获取 Bearer Token 用于后续请求。
重要提示: 由于这是一个示例项目,Token 管理和安全性方面可能较为简化。在实际生产环境中,请务必加强安全措施,例如使用更安全的 Token 存储、更完善的错误处理和更严格的输入验证。
信息
分类
开发者工具