使用说明
GitHub助理MCP服务器
A. 模型上下文协议(MCP) 将Claude Desktop连接到GitHub API的服务器。在不离开对话的情况下,向Claude自然语言提问有关任何公共GitHub存储库的问题——问题、拉取请求、存储库元数据、README。
什么是MCP?
MCP(模型上下文协议)是一个开放标准,允许AI应用程序通过统一的接口连接到外部工具和数据源。将其视为AI的USB-C端口——任何兼容MCP的客户端(Claude Desktop、Cursor、VS Code Copilot等)都可以插入任何MCP服务器。
Claude Desktop (MCP Host)
|
| stdio — JSON-RPC 2.0
v
GitHub Assistant MCP Server <-- this project
|
| HTTPS
v
GitHub REST API v3
当你问克劳德 *“microsoft/vcode中有哪些悬而未决的问题?”*克劳德称此服务器为 list_issues 工具,服务器从GitHub获取数据,并返回答案——所有这些在对话中都是透明的。
工具
| 工具 | 说明 |
|---|---|
search_repos |
按关键字搜索GitHub仓库。支持以下限定符 language:python, stars:>1000 |
get_repo |
获取特定仓库的元数据:星、叉、语言、许可证、主题 |
list_issues |
列出回购的未结/已结问题(不包括PR) |
get_issue |
按编号获取特定问题的全文和详细信息 |
list_pull_requests |
列出打开/关闭的PR,包括草稿状态和分支机构信息 |
资源
| URI模式 | 描述 |
|---|---|
repo://{owner}/{repo}/readme |
任何存储库的原始README标记 |
对话示例
“在GitHub上搜索最受欢迎的Python web框架”
“告诉我有关microsoft/vcode存储库的信息”
“microsoft/vcode中最近更新的10个未决问题是什么?”
“显示microsoft/vcode中问题#301645的详细信息”
“fastapi/fastapi中有哪些开放拉取请求?”
设置
先决条件
- Python 3.13+
- 紫外线 包管理器
- 克劳德桌面版
- A. GitHub个人访问令牌 (5000需求/小时与60需求/小时相比)
安装
git clone https://github.com/yourusername/github-mcp
cd github-mcp
# Install dependencies
uv sync
# Copy and fill in your token
cp .env.example .env
# Edit .env and set GITHUB_TOKEN=ghp_your_token_here
连接到克劳德桌面
添加以下内容 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"github-assistant": {
"command": "/path/to/uv",
"args": [
"--directory", "/absolute/path/to/github-mcp",
"run", "python", "-m", "github_mcp.server"
],
"env": {
"GITHUB_TOKEN": "ghp_your_token_here"
}
}
}
}
重新启动克劳德桌面。您应该在聊天输入中看到一个锤子图标——这是您的MCP工具。
项目结构
github-mcp/
├── src/
│ └── github_mcp/
│ ├── __init__.py
│ ├── github_client.py # GitHub REST API wrapper (pure async httpx)
│ └── server.py # MCP server — tool & resource definitions
├── .env # Your GITHUB_TOKEN (never commit this)
├── .gitignore
├── pyproject.toml
└── README.md
建筑
github_client.py 是围绕GitHub REST API v3的精简异步包装器。它不了解MCP,只知道返回字典的Python函数。这种分离使得独立测试变得容易。
server.py 是MCP层。它创造了一个 FastMCP 实例和装饰功能 @mcp.tool() 和 @mcp.resource().FastMCP根据Python类型提示和文档字符串自动为每个工具生成JSON模式——Claude读取的是您为人类编写的相同文档字符串来决定 当 调用你的工具。
运输: stdio(标准输入/标准输出)。Claude Desktop将此服务器作为子进程启动,并通过stdin发送JSON-RPC 2.0消息。服务器将响应写入stdout。这就是为什么我们登录到stderr——stdout是为协议保留的。
学到的关键概念
- MCP图元:工具(可调用函数)、资源(可读数据)、提示(模板)
- JSON-RPC 2.0:有线协议——请求/响应
id,通知无 - 工具描述很重要:LLM读取您的docstring以决定何时调用工具
- stdio传输:本地工具不需要HTTP服务器,只需要一个带管道的进程
- 异步Python:
httpx.AsyncClient用于非阻塞的GitHub API调用 - 身份验证模式:通过环境变量注入令牌——从不硬编码
许可证
麻省理工学院
