项目简介

"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 配置,方便部署和运行。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/JesusMaster/github-see-mcp-server.git
    cd github-see-mcp-server
  2. 安装依赖:
    npm install
    # 或使用 pnpm
    pnpm install
  3. 创建'.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
  4. 构建项目:
    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传输协议。

基本使用方法

  1. 启动服务器:
    npm run start
    # 或使用 pnpm
    pnpm run start
    服务器将在 '.env' 文件中配置的端口(默认为 3200)上启动。如果该端口被占用,它将自动查找并使用一个可用端口。
  2. 连接LLM客户端: 一旦服务器运行,请按照上述 "服务器配置" 部分提供的JSON配置信息,在您的LLM客户端(如Claude)中添加此MCP服务器。
  3. LLM调用GitHub功能: 成功连接后,您的LLM客户端将能够通过服务器提供的工具(例如 'create_issue', 'list_pull_requests', 'get_file_contents' 等)与 GitHub 进行交互。LLM将根据其理解和用户指令,选择并调用合适的工具来完成任务。

信息

分类

开发者工具