github弃用通知: 该项目的开发已移至 GitHub 的 http://github.com/github/github-mcp-server 仓库。
GitHub API 的 MCP 服务器,支持文件操作、仓库管理、搜索功能等。
create_or_update_file
owner(字符串):仓库所有者(用户名或组织)repo(字符串):仓库名称path(字符串):创建/更新文件的路径content(字符串):文件内容message(字符串):提交信息branch(字符串):创建/更新文件的分支sha(可选字符串):被替换文件的 SHA(用于更新)push_files
owner(字符串):仓库所有者repo(字符串):仓库名称branch(字符串):推送到的分支files(数组):要推送的文件,每个文件包含 path 和 contentmessage(字符串):提交信息search_repositories
query(字符串):搜索查询page(可选数字):分页的页码perPage(可选数字):每页结果数(最多 100)create_repository
name(字符串):仓库名称description(可选字符串):仓库描述private(可选布尔值):仓库是否私有autoInit(可选布尔值):是否使用 README 初始化get_file_contents
owner(字符串):仓库所有者repo(字符串):仓库名称path(字符串):文件/目录的路径branch(可选字符串):获取内容的分支create_issue
owner(字符串):仓库所有者repo(字符串):仓库名称title(字符串):问题标题body(可选字符串):问题描述assignees(可选字符串数组):要分配的用户名labels(可选字符串数组):要添加的标签milestone(可选数字):里程碑编号create_pull_request
owner(字符串):仓库所有者repo(字符串):仓库名称title(字符串):PR 标题body(可选字符串):PR 描述head(字符串):包含更改的分支base(字符串):要合并到的分支draft(可选布尔值):是否创建为草稿 PRmaintainer_can_modify(可选布尔值):是否允许维护者编辑fork_repository
owner(字符串):仓库所有者repo(字符串):仓库名称organization(可选字符串):要分叉到的组织create_branch
owner(字符串):仓库所有者repo(字符串):仓库名称branch(字符串):新分支的名称from_branch(可选字符串):源分支(默认为仓库默认分支)list_issues
owner(字符串):仓库所有者repo(字符串):仓库名称state(可选字符串):按状态过滤('open', 'closed', 'all')labels(可选字符串数组):按标签过滤sort(可选字符串):按排序('created', 'updated', 'comments')direction(可选字符串):排序方向('asc', 'desc')since(可选字符串):按日期过滤(ISO 8601 时间戳)page(可选数字):页码per_page(可选数字):每页结果数update_issue
owner(字符串):仓库所有者repo(字符串):仓库名称issue_number(数字):要更新的问题编号title(可选字符串):新标题body(可选字符串):新描述state(可选字符串):新状态('open' 或 'closed')labels(可选字符串数组):新标签assignees(可选字符串数组):新分配者milestone(可选数字):新里程碑编号add_issue_comment
owner(字符串):仓库所有者repo(字符串):仓库名称issue_number(数字):要评论的问题编号body(字符串):评论文本search_code
q(字符串):使用 GitHub 代码搜索语法的搜索查询sort(可选字符串):排序字段(仅 'indexed')order(可选字符串):排序顺序('asc' 或 'desc')per_page(可选数字):每页结果数(最多 100)page(可选数字):页码search_issues
q(字符串):使用 GitHub 问题搜索语法的搜索查询sort(可选字符串):排序字段(评论、反应、创建时间等)order(可选字符串):排序顺序('asc' 或 'desc')per_page(可选数字):每页结果数(最多 100)page(可选数字):页码search_users
q(字符串):使用 GitHub 用户搜索语法的搜索查询sort(可选字符串):排序字段(关注者、仓库、加入时间)list_commits
owner (string): 代码库所有者repo (string): 代码库名称page (可选 string): 页码per_page (可选 string): 每页记录数sha (可选 string): 分支名称get_issueowner (string): 代码库所有者repo (string): 代码库名称issue_number (number): 要检索的 issue 编号get_pull_requestowner (string): 代码库所有者repo (string): 代码库名称pull_number (number): pull request 编号list_pull_requestsowner (string): 代码库所有者repo (string): 代码库名称state (可选 string): 按状态筛选 ('open', 'closed', 'all')head (可选 string): 按 head 用户/组织和分支筛选base (可选 string): 按 base 分支筛选sort (可选 string): 按排序 ('created', 'updated', 'popularity', 'long-running')direction (可选 string): 排序方向 ('asc', 'desc')per_page (可选 number): 每页结果数 (最大 100)page (可选 number): 页码create_pull_request_reviewowner (string): 代码库所有者repo (string): 代码库名称pull_number (number): 拉取请求编号body (string): 评审评论文本event (string): 评审操作 ('APPROVE', 'REQUEST_CHANGES', 'COMMENT')commit_id (optional string): 待评审提交的 SHA 值comments (optional array): 行内评论,每个评论包含:
path (string): 文件路径position (number): diff 中的行号body (string): 评论文本merge_pull_requestowner (string): 代码库所有者repo (string): 代码库名称pull_number (number): 拉取请求编号commit_title (optional string): 合并提交的标题commit_message (optional string): 合并提交的额外信息merge_method (optional string): 合并方法 ('merge', 'squash', 'rebase')get_pull_request_filesowner (string): 代码库所有者repo (string): 代码库名称pull_number (number): 拉取请求编号get_pull_request_statusowner (string): 代码库所有者repo (string): 代码库名称pull_number (number): 拉取请求编号update_pull_request_branchowner (string): 仓库所有者repo (string): 仓库名称pull_number (number): 拉取请求编号expected_head_sha (optional string): 拉取请求 HEAD ref 的预期 SHA 值get_pull_request_commentsowner (string): 仓库所有者repo (string): 仓库名称pull_number (number): 拉取请求编号get_pull_request_reviewsowner (string): 仓库所有者repo (string): 仓库名称pull_number (number): 拉取请求编号language:javascript: 按编程语言搜索repo:owner/name: 在特定仓库中搜索path:app/src: 在特定路径中搜索extension:js: 按文件扩展名搜索q: "import express" language:typescript path:src/is:issue 或 is:pr: 按类型筛选is:open 或 is:closed: 按状态筛选label:bug: 按标签搜索author:username: 按作者搜索q: "memory leak" is:issue is:open label:bugtype:user 或 type:org:按账户类型筛选followers:>1000:按关注者数量筛选location:London:按位置搜索q: "fullstack developer" location:London followers:>100更多详细的搜索语法,请参考GitHub 搜索文档。
创建具有相应权限的GitHub 个人访问令牌:
repo 权限的令牌(“对私有仓库的完全控制权限”)
public_repo 权限要在 Claude Desktop 中使用此功能,请将以下内容添加到您的 claude_desktop_config.json 文件中:
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"mcp/github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}

{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}

快速安装,请使用以下任一键:
手动安装:在 VS Code 的用户设置 (JSON) 文件中添加以下 JSON 代码块。您可以按 Ctrl + Shift + P 并输入 Preferences: Open User Settings (JSON) 来完成此操作。
或者,您可以将其添加到工作区中的 .vscode/mcp.json 文件。这允许您与他人共享配置。
请注意,
.vscode/mcp.json文件中不需要mcp键。
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "github_token",
"description": "GitHub 个人访问令牌",
"password": true
}
],
"servers": {
"github": {
"command": "docker",
"args": ["run", "-i", "--rm", "mcp/github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
}
}
}
}
}

{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "github_token",
"description": "GitHub 个人访问令牌",
"password": true
}
],
"servers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
}
}
}
}
}

Docker 构建:
docker build -t mcp/github -f src/github/Dockerfile .
此 MCP 服务器采用 MIT 许可证授权。这意味着您可以自由使用、修改和分发此软件,但须遵守 MIT 许可证的条款和条件。更多详情,请参阅项目仓库中的 LICENSE 文件。