内容
# GitHub 问题 MCP 服务器
一个用于发现和分类开源 GitHub 问题的 MCP(模型上下文协议)服务器 - 由手动构建,与 Claude Desktop 连接,用于查找适合贡献的问题(SGLang,vLLM 等)。
## 功能
- **`fetch_issue(repo, issue_number)`** — 获取单个问题的详细信息:标题、正文、状态、评论、标签以及是否为 PR。
- **`list_issues(repo, state, labels, sort, direction, include_prs)`** — 按状态、标签和排序顺序(每次调用最多 100 个)获取和筛选仓库的问题。
- **`find_related_prs(repo, issue_number)`** — 检查问题的创建时间轴中是否有链接的拉取请求,并报告是否有任何请求是打开或已合并的。
## 设置
1. 安装依赖项:
```bash
pip install -r requirements.txt
```
2. 在项目根目录中创建一个 `.env` 文件:
```
GITHUB_TOKEN=你的个人访问令牌
```
在 GitHub → 设置 → 开发者设置 → 个人访问令牌(只读,`public_repo` 范围足够)中生成令牌。
3. 使用 MCP 检查器在本地进行测试:
```bash
mcp dev server.py
```
## 连接到 Claude Desktop
将服务器添加到 Claude Desktop 的 MCP 配置(设置 → 开发者 → 编辑配置):
```json
{
"mcpServers": {
"github-issues": {
"command": "uv",
"args": ["run", "--with", "mcp", "mcp", "run", "/绝对路径/to/server.py"]
}
}
}
```
完全退出并重新打开 Claude Desktop。连接后,您可以询问类似的问题:
> "在 sgl-project/sglang 中查找开放的好第一个问题"
Claude 将直接调用工具并返回实时结果。
## 项目结构
```
├── server.py # MCP 服务器入口点,工具注册
├── github_client.py # GitHub API 包装器(身份验证,请求,错误处理)
├── tools/
│ ├── fetch_issue.py
│ ├── list_issues.py
│ └── find_related_prs.py
└── requirements.txt
```
## 备注
- 使用带有个人访问令牌(免费,每小时 5,000 次请求,已验证)的 GitHub REST API。
- 速率限制和深度错误处理故意超出此版本的范围 - 仅基本状态代码检查(200 / 404 / 401 / 其他)。
- `find_related_prs` 依赖于问题时间线端点的 `cross-referenced` 事件;手动关闭的问题(无链接 PR)将正确显示无链接 PR。
## 许可证
MIT