项目简介
"GitHub MCP SSE 服务端" 是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在将 GitHub API 的功能以标准化的方式提供给大型语言模型(LLM)客户端。它支持多种通信协议,特别是 Server-Sent Events (SSE) 和现代 Streamable HTTP,确保与LLM客户端的实时、高效交互。通过该服务器,LLM可以调用一系列预定义的工具来执行 GitHub 上的操作,例如管理议题、拉取请求和仓库。
主要功能点
- GitHub API集成: 将 GitHub API 的核心功能封装成可供LLM调用的工具。
- 支持多种通信协议: 支持 Server-Sent Events (SSE) 用于实时通信,以及现代 Streamable HTTP 以实现更高效的双向通信。
- 丰富的GitHub工具: 提供了管理 GitHub 议题 (Issues)、拉取请求 (Pull Requests)、代码仓库 (Repositories) 及用户信息的工具集,允许LLM进行创建、读取、更新、搜索等多种操作。
- 模块化架构: 代码结构清晰,按功能(如议题、拉取请求)进行组织,易于维护和扩展。
- 灵活的配置: 支持通过环境变量配置服务器端口、超时时间、CORS设置、日志级别、SSE复用模式以及多种精细的速率限制策略。
- Docker支持: 提供 Dockerfile 和 Docker Compose 配置,方便部署和运行。
安装步骤
- 克隆仓库:
git clone https://github.com/JesusMaster/github-see-mcp-server.git cd github-see-mcp-server - 安装依赖:
npm install # 或使用 pnpm pnpm install - 创建'.env'配置文件:
在项目根目录创建名为 '.env' 的文件,并填入以下内容。请务必将 'your_github_token_here' 替换为您的 GitHub 个人访问令牌。
# GitHub MCP SSE Server Configuration # GitHub API Token (必需,用于API访问) # 在 https://github.com/settings/tokens 生成您的令牌 GITHUB_TOKEN=your_github_token_here # 服务器端口配置 MCP_SSE_PORT=3200 # 超时配置 (毫秒) MCP_TIMEOUT=180000 # 日志级别 (debug, info, warn, error) LOG_LEVEL=info # CORS 配置 CORS_ALLOW_ORIGIN=* # SSE 复用传输配置 # 设置为 'true' 启用复用SSE传输 (单个传输处理多个客户端) # 设置为 'false' 为每个客户端使用独立的SSE传输 (传统行为) USE_MULTIPLEXING_SSE=false # 速率限制配置 (示例值,可根据需要调整) RATE_LIMIT_WINDOW_MS=900000 RATE_LIMIT_MAX_REQUESTS=100 RATE_LIMIT_SSE_MAX=5 RATE_LIMIT_MESSAGES_MAX=30 DEFAULT_USER_RATE_LIMIT=1000 - 构建项目:
npm run build # 或使用 pnpm pnpm run build
服务器配置 (MCP客户端使用)
MCP客户端需要配置服务器的启动命令和参数才能连接。以下是两个示例JSON配置,您需要替换 '{Your domain}' 为您的服务器实际运行的域名或IP地址。
1. 使用 Server-Sent Events (SSE) 传输协议(推荐兼容性高): 此配置通过 '/sse' 端点连接,适合对实时通信有较高要求或传统SSE客户端。
{ "mcpServers": { "GitHub_SSE": { "command": "npx", "args": [ "-y", "[email protected]", "https://{Your domain}/sse", "--transport", "sse-only" ], "description": "提供GitHub API上下文和工具的MCP服务器 (SSE传输)" } } }
参数注释:
- '"command"': 启动 'mcp-remote' 客户端工具的命令。
- '"args"': 传递给 'mcp-remote' 的参数列表。
- '"-y"': 自动确认安装 'mcp-remote' 包。
- '"[email protected]"': 指定 'mcp-remote' 工具的版本。
- '"https://{Your domain}/sse"': 您的GitHub MCP服务器的SSE端点URL。
- '"--transport"': 指定使用的传输协议。
- '"sse-only"': 明确指定使用SSE传输协议。
- '"description"': 服务器的功能描述,方便您在MCP客户端中识别。
2. 使用 Streamable HTTP 传输协议(推荐性能更优): 此配置通过 '/mcp' 端点连接,提供更高效的双向通信,适合支持此协议的MCP客户端。
{ "mcpServers": { "GitHub_Streamable": { "command": "npx", "args": [ "-y", "[email protected]", "https://{Your domain}/mcp", "--transport", "streamable-http" ], "description": "提供GitHub API上下文和工具的MCP服务器 (Streamable HTTP传输)" } } }
参数注释:
- '"command"' 和 '"args"' 的大部分含义同上。
- '"https://{Your domain}/mcp"': 您的GitHub MCP服务器的Streamable HTTP端点URL。
- '"streamable-http"': 明确指定使用Streamable HTTP传输协议。
基本使用方法
- 启动服务器:
服务器将在 '.env' 文件中配置的端口(默认为 3200)上启动。如果该端口被占用,它将自动查找并使用一个可用端口。npm run start # 或使用 pnpm pnpm run start - 连接LLM客户端: 一旦服务器运行,请按照上述 "服务器配置" 部分提供的JSON配置信息,在您的LLM客户端(如Claude)中添加此MCP服务器。
- LLM调用GitHub功能: 成功连接后,您的LLM客户端将能够通过服务器提供的工具(例如 'create_issue', 'list_pull_requests', 'get_file_contents' 等)与 GitHub 进行交互。LLM将根据其理解和用户指令,选择并调用合适的工具来完成任务。
信息
分类
开发者工具