GitHub实时事件流服务

一个用于GitHub集成的模型上下文协议(MCP)服务器,提供实时事件流和RESTful API访问GitHub数据。

  • by Joseph19820124
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 joseph19820124/github-mcp-server-joseph

使用说明

GitHub MCP服务器

用于GitHub与实时事件流集成的模型上下文协议(MCP)服务器。

特性

  • 通过服务器发送事件(SSE)实时显示GitHub存储库事件
  • 用于GitHub数据访问的RESTful API
  • Docker支持生产就绪配置
  • 安全环境变量配置

快速开始

使用Docker Compose

  1. 克隆存储库:
git clone https://github.com/Joseph19820124/github-mcp-server-joseph.git
cd github-mcp-server-joseph
  1. 设置环境变量:
cp .env.example .env
  1. 编辑 .env 文件并添加您的GitHub令牌:
GITHUB_TOKEN=your_github_personal_access_token
PORT=3000
  1. 启动服务器:
docker-compose up -d

替代方案:直接运行Docker

您还可以直接使用环境变量运行容器:

# Build the image
docker build -t github-mcp-server .

# Run with environment variable
docker run -d \
  --name github-mcp-server \
  -p 3000:3000 \
  -e GITHUB_TOKEN=your_github_personal_access_token \
  -e PORT=3000 \
  github-mcp-server:latest

地方发展

# Install dependencies
npm install

# Set environment variables
export GITHUB_TOKEN=your_github_personal_access_token
export PORT=3000

# Start the server
npm start

GitHub令牌设置

  1. 转到GitHub设置→ 开发人员设置→ 个人访问令牌
  2. 生成具有以下权限的新令牌:
    • repo (用于访问存储库)
    • read:org (用于组织数据)
    • user (供用户参考)
  3. 复制令牌并在环境配置中使用它

API终点

  • GET /health -健康检查
  • GET /sse/github/:owner/:repo -实时事件的SSE端点
  • GET /api/repos/:owner/:repo -获取存储库信息
  • GET /api/repos/:owner/:repo/commits -获取存储库提交

环境变量

变量 描述 必填 默认
GITHUB_TOKEN GitHub个人访问令牌 是 -
PORT 服务器端口 否 3000
NODE_ENV 环境(开发/生产) 否 开发

安全

  • 永远不要将GitHub令牌提交给版本控制
  • 使用环境变量进行敏感配置
  • Docker镜像不包含任何硬编码的令牌
  • 所有令牌都是在运行时通过环境变量注入的

健康检查

服务器包括一个健康检查端点,位于 /health 返回:

{
  "status": "healthy",
  "timestamp": "2025-07-06T11:00:00.000Z"
}

生产部署

对于生产部署,请使用提供的 docker-compose.prod.yml:

docker-compose -f docker-compose.prod.yml up -d

这包括:

  • Nginx反向代理
  • 健康检查
  • 日志轮转
  • 重新启动策略

故障排除

常见问题

  1. “凭据错误”错误:检查您的GitHub令牌权限
  2. 端口已在使用中:更改PORT环境变量
  3. Docker构建失败:确保Docker正在运行,并且您可以访问互联网

日志

查看容器日志:

docker-compose logs -f github-mcp-server

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 彻底测试
  5. 提交拉取请求

许可证

这个项目是开源的,可以在MIT许可证下使用。