mcpField
G
GitHub MCP Server

GitHub MCP Server

本地服务
github.com/sumirati版本控制12 周前更新

关于 GitHub MCP Server

@sumirati/mcp-github 将 MCP 客户端连接到 GitHub REST API,支持仓库和开发工作流。五工具接口按需发现并执行广泛的操作目录,同时直接提供常用的文件、仓库和提交操作。

主要功能

  1. 01按需发现 13 个领域的操作
  2. 02仓库、分支和文件操作
  3. 03提交与拉取请求工作流
  4. 04议题、Actions 和发布管理
  5. 05只读模式与输出投影

适用场景

  1. 01检查仓库文件和提交差异
  2. 02管理拉取请求与代码审查
  3. 03检查工作流并排查任务失败
  4. 04管理议题、发布和仓库设置

MCP 相关

该 MCP 服务提供五个工具:两个用于发现和执行目录操作,另有文件、仓库和提交的直接访问工具。操作目录覆盖 83 项 GitHub 操作,并可选择启用只读模式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"sumirati-mcp-github": {
"command": "npx",
"args": [
"-y",
"@sumirati/mcp-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<GITHUB_PERSONAL_ACCESS_TOKEN>",
"GITHUB_API_URL": "<GITHUB_API_URL>",
"GITHUB_READ_ONLY": "<GITHUB_READ_ONLY>",
"GITHUB_EXPOSE_ALL_TOOLS": "<GITHUB_EXPOSE_ALL_TOOLS>",
"MCP_OUTPUT_FORMAT": "<MCP_OUTPUT_FORMAT>"
}
}
}
}
启动命令npx -y @sumirati/mcp-github
需要配置的环境变量
GITHUB_PERSONAL_ACCESS_TOKEN密钥GitHub Personal Access Token (classic or fine-grained)
GITHUB_API_URLGitHub API URL (defaults to https://api.github.com)
GITHUB_READ_ONLYEnable 3-tier read-only safety mode (true/false)
GITHUB_EXPOSE_ALL_TOOLSSet to 'true' to expose all 83 tools directly instead of the 5-tool hybrid discovery mode
MCP_OUTPUT_FORMATDefault output format for tool responses ('markdown' or 'json')

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@sumirati/mcp-github2.2.0

工具

5

收录的工具列表 · 更新于 2 周前

参数类型必填说明
querystring否用于匹配操作名称、领域或描述的关键词查询(例如 'pull request'、'issue comment'、'webhook'、'deploy'、'dependabot')
domainenum否可选的领域筛选条件,用于将发现范围限制在特定功能类别repositories | commits | pull-requests | issues | milestones | collaborators | variables | gists | actions | releases | security | webhooks | user
formatenum是输出格式:'json'(默认,结构化对象)或 'markdown'(紧凑、便于人类/LLM 阅读的文本表格)json | markdown

详细介绍

GitHub MCP 服务(@sumirati/mcp-github)

面向 GitHub REST API 的现代化、原生支持 AI 的 2026 年 Model Context Protocol(MCP)服务,专为自主 AI Agent 和开发者工作流打造。

npm version License: MIT GitHub


v2 的独特之处:2026 年 5 工具混合标准

早期 MCP 服务会暴露 50–100 多个主动加载的工具定义,让每次 LLM 交互都充斥数千个冗余的架构令牌(“系统提示词税”),并降低推理连贯性。

@sumirati/mcp-github 通过 5 工具混合界面解决了这个问题:

  • Glama TDQS 连贯性等级 A(5/5):服务恰好向客户端暴露 5 个工具,处于理想的 3–15 个工具连贯性区间。
  • 超精简的系统提示词税:将架构开销从 23,112 个令牌(92,447 B)降至 1,125 个令牌(4,498 B)(减少 95.1%),保留上下文窗口并最大化 LLM 提示词缓存命中率。
  • 零跳转每小时驱动项:开发者和 Agent 经常使用的 3 项操作(get_file_contents、get_repository、get_commit)仍作为主动加载的工具,可即时零跳转执行。
  • 按需访问 100% 的平台功能:整个 13 个领域的 83 项操作平台功能,可通过动态操作发现(github_find_actions $\rightarrow$ github_execute_action)按需使用;默认采用高密度 Markdown 表格和摘要(format: "markdown" | "json"),可节省 91%–99% 的令牌。
  • 弹性回退:如果 Agent 直接调用任何目录操作名称(例如 list_pull_requests),服务会动态执行该操作,并进行完整的输入验证和投影。
LLM Prompt Context (5-Tool Hybrid Surface):
├── 1. github_find_actions(query, [domain], [format])     [Meta Discovery]
├── 2. github_execute_action(action, params, [format])   [Meta Dynamic Execution]
├── 3. get_file_contents(owner, repo, path)               [Eager Daily Driver #1]
├── 4. get_repository(owner, repo)                        [Eager Daily Driver #2]
└── 5. get_commit(owner, repo, ref)                       [Eager Daily Driver #3]

Under the hood (Dynamic Registry):
└── 83 Curated Actions across 13 Domains (grounded in GitHub REST API 2022-11-28)

13 个领域的核心能力

  1. 仓库与分支治理(repositories,12 个操作):完整的仓库生命周期管理、分支管理、分支保护规则(get_branch_protection)、文件读取(自动进行 Base64 解码、提供符号大纲和行切片)、单文件提交以及派生仓库。
  2. 提交与提交状态(commits,6 个操作):提交历史、带令牌上限的提交差异(get_commit)、通过 Git Trees API 原子提交多个文件(create_commit、push_files)以及提交状态检查。
  3. 拉取请求与代码评审(pull-requests,11 个操作):PR 生命周期(create、update、merge)、评审评论、行内差异评审,以及支持筛除锁定文件的统一差异检查。
  4. 议题与标签(issues,8 个操作):议题跟踪、上游索引筛选、对话评论以及标签管理。
  5. 项目里程碑(milestones,4 个操作):创建里程碑、跟踪进度以及管理截止日期。
  6. 协作者与权限(collaborators,4 个操作):审计和管理仓库协作者及其权限级别。
  7. Actions 变量与密钥(variables,6 个操作):管理仓库 Actions 配置变量并查看密钥元数据。
  8. Gist 与代码片段(gists,5 个操作):完整的 Gist 生命周期管理,用于分享多文件代码片段和配置。
  9. GitHub Actions 与 CI/CD(actions,10 个操作):工作流检查、工作流运行、作业步骤明细、构建产物(list_workflow_run_artifacts、get_workflow_run_artifact)、智能提取失败日志(get_job_logs)、取消或重新运行工作流,以及手动触发工作流。
  10. 发布与 Git 标签(releases,5 个操作):发布版本、创建轻量或附注标签,以及检查发布资产。
  11. 用户、组织、团队与诊断(user,7 个操作):已验证用户身份、组织检查、创建团队(create_team)、可访问的仓库,以及 API 健康状态和速率限制诊断(system_health_check)。
  12. Webhooks 与仓库主题(webhooks,4 个操作):审计仓库事件 Webhook 并管理仓库主题标签。
  13. 安全与 Dependabot(security,1 个操作):按状态和严重程度审计 Dependabot 漏洞警报。

快速入门与安装

选项 1:使用 npx 运行(无需安装)
npx -y @sumirati/mcp-github
选项 2:全局安装
npm install -g @sumirati/mcp-github
mcp-github
选项 3:本地克隆
git clone https://github.com/sumirati/mcp-github.git
cd mcp-github
npm install
npm test
npm start

环境配置

变量必需默认值描述
GITHUB_PERSONAL_ACCESS_TOKEN是—GitHub Personal Access Token(经典或细粒度)
GITHUB_TOKEN否—备用令牌变量名
GITHUB_API_URL否https://api.github.comAPI 基础 URL(或 GitHub Enterprise Server)
GITHUB_READ_ONLY否false启用 3 级只读模式(true、1、yes)
GITHUB_EXPOSE_ALL_TOOLS否false设置为 true(或设置 GITHUB_EXPOSE_LEGACY_TOOLS=true),即可在 ListTools 中直接公开全部 83 个工具,供旧版客户端使用
MCP_OUTPUT_FORMAT否markdown工具执行的默认输出格式(markdown 或 json)

客户端配置

Google Antigravity / Claude Desktop / Cursor

添加到 MCP 配置文件(mcp_config.json 或 claude_desktop_config.json):

使用 npm / npx(推荐):
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@sumirati/mcp-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<your-github-token>",
        "GITHUB_READ_ONLY": "false"
      }
    }
  }
}
使用本地克隆:
{
  "mcpServers": {
    "github": {
      "command": "node",
      "args": ["/path/to/mcp-github/index.js"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<your-github-token>",
        "GITHUB_READ_ONLY": "false"
      }
    }
  }
}

完整操作目录参考(83 个操作)

全部 83 个操作均支持严格的 Zod 输入验证和 2 级输出投影:

1. 面向客户端的 5 个工具(混合模式)
工具类型描述
github_find_actions元工具在全部 13 个领域中搜索并发现可用的 GitHub 操作,并显示精简的参数签名
github_execute_action元工具执行已发现的任意 GitHub 平台操作,并进行输入验证和令牌优化投影
get_file_contents即时在任意引用处读取原始文件内容(自动解码 Base64)、符号大纲、行范围或目录列表
get_repository即时获取仓库元数据、可见性、描述、默认分支、HTML URL 和计数
get_commit即时查看 Git 提交详情、作者信息和令牌数量受限的文件差异
2. 仓库与分支(repositories — 12 个操作)
操作描述是否修改?
search_repositories使用查询限定符(例如 'org:myorg language:typescript')搜索 GitHub 上或某个组织内的仓库,并限制分页数量(最多 100 条)。如果已知所有者和仓库名称,优先使用 'get_repository' 进行精确的 O(1) 查找。否
get_repository获取指定所有者/仓库的元数据、可见性、描述、默认分支、克隆 URL 和统计信息。用于验证仓库设置或检查默认分支名称。否
create_repository在已认证用户账户或指定组织下创建新的 GitHub 仓库。需要写入权限且 GITHUB_READ_ONLY=false。除非 auto_init 为 false,否则会自动使用默认 README 提交初始化仓库。是
get_file_contents在指定的 git 引用处读取当前文件内容、提取符号大纲('outline_only: true')、截取行范围或列出目录条目。自动将 Base64 解码为 UTF-8。先使用 'outline_only: true',以约 50-100 个令牌检查结构,再请求特定行范围。否
create_or_update_file在分支上创建新文件或覆盖现有文件,并通过一次原子提交完成。更新文件时,在 'sha' 中提供文件当前的 blob SHA(或留空以自动解析)。需要写入权限且 GITHUB_READ_ONLY=false。是
delete_file在一次 git 提交中删除分支上的现有文件。必须提供当前 blob SHA,以防并发覆盖。需要写入权限且 GITHUB_READ_ONLY=false。是
list_branches列出仓库中的分支,并显示保护状态和头部提交 SHA。支持按保护状态进行上游筛选,并限制分页数量(最多 100 条)。如果已知分支名称,优先使用 'get_branch'。否
get_branch获取指定分支的详细状态,包括分支保护规则和最新提交详情。用于在合并或删除前验证分支是否存在或检查保护策略。否
get_branch_protection获取指定 Git 分支的完整保护规则,包括必需的状态检查、必需的审查、管理员强制执行规则,以及强制推送/删除限制。否
create_branch创建指向某个提交 SHA 的新 git 分支,或从现有分支派生新分支(默认为 'main')。用于提交更改或创建拉取请求前的准备。需要写入权限且 GITHUB_READ_ONLY=false。是
delete_branch删除仓库中的分支。受保护:明确拒绝删除默认分支(例如 'main')的请求,以防仓库损坏。需要写入权限且 GITHUB_READ_ONLY=false。是
fork_repository将仓库复刻到已认证用户的账户或指定的组织命名空间中。适用于需要为上游项目贡献代码但无法直接推送的情况。需要写入权限且 GITHUB_READ_ONLY=false。是
3. Git 提交与状态(commits — 6 个操作)
操作描述是否会修改?
list_commits按时间顺序列出仓库提交历史,并支持上游筛选(sha、路径、作者、起始时间、结束时间)以及分页数量上限(最多 100 条)。如需查看提交的逐行实际差异,请改用 get_commit。否
get_commit获取指定提交 SHA 或引用的详细提交元数据、文件修改统计信息和统一差异。可用于审查提交中的代码变更或调试回归问题。差异内容经过令牌预算优化,并会截断至 max_diff_lines(默认:400 行)。否
create_commit使用 GitHub Git Trees API 创建原子 Git 提交,可包含多个新建、更新或删除的文件。可用于重构、应用涉及多个文件的代码变更,或同时更新代码和文档。无需多次单文件提交,也无需在本地克隆 Git 仓库。需要写入权限,且 GITHUB_READ_ONLY=false。是
push_filescreate_commit 的别名:通过 GitHub Git Database API,在单个 Git 提交中原子性地提交对多个文件的新增、修改或删除。需要写入权限,且 GITHUB_READ_ONLY=false。是
get_commit_status获取指定提交 SHA 或分支引用的综合状态检查状态(待处理、成功、失败)以及各项检查运行情况。否
create_commit_status为指定提交 SHA 设置或更新状态检查(待处理、成功、失败、错误)。需要写入权限,且 GITHUB_READ_ONLY=false。是
4. 拉取请求与代码评审(pull-requests — 11 个操作)
操作描述是否会修改?
list_pull_requests使用上游索引参数(state、head、base)和受限分页(最多 100)列出并筛选拉取请求。若要检查已知 PR,优先使用带有 pull_number 的 'get_pull_request';若要查看差异,请使用 get_pull_request_diff。否
get_pull_request获取特定拉取请求的详细状态,包括可合并性(clean、dirty、unstable)、head/base 分支引用、作者和受托人。用于检查 PR 是否可以合并或是否受阻。请勿用于读取代码变更;请改用 get_pull_request_diff。否
get_pull_request_diff获取拉取请求的统一 git 差异,以评审代码修改。在分析代码变更、评审补丁或准备行内评论时使用此工具。请勿用于检查 PR 的可合并性或元数据(请改用 get_pull_request)。差异内容经过 token 优化,并会在 max_lines(默认值:400 行)处自动截断,以防止 LLM 上下文溢出。否
create_pull_request从 head 分支向 base 分支创建新的拉取请求。需要写入权限,且 GITHUB_READ_ONLY=false。head 分支必须已存在,且与 base 分支至少有一个提交差异。是
update_pull_request更新现有拉取请求的标题、正文、开启/关闭状态或 base 分支。需要写入权限,且 GITHUB_READ_ONLY=false。是
merge_pull_request使用 merge、squash 或 rebase 方法将拉取请求合并到其 base 分支。需要写入/管理员权限,且 GITHUB_READ_ONLY=false。合并前,请确保 PR 的可合并状态为 clean。是
list_pull_request_comments列出锚定在拉取请求特定差异行上的行内代码评审评论。检查逐行评审反馈时使用。若要查看整体 PR 评审批准或变更请求,请改用 list_pull_request_reviews。否
create_pull_request_comment在拉取请求中的特定文件和行号处发布行内评审评论。需要提供 commit_id、path 和文件中的行号。需要写入权限,且 GITHUB_READ_ONLY=false。是
create_pull_request_reply回复现有拉取请求评审评论串中的评论。需要提供父评论的 comment_id。需要写入权限,且 GITHUB_READ_ONLY=false。是
list_pull_request_reviews列出针对拉取请求提交的正式代码评审(批准、变更请求、评论摘要)。合并前用于检查评审者的决定和审批关卡。否
create_pull_request_review针对拉取请求提交正式代码评审,包含批准决定(APPROVE、REQUEST_CHANGES 或 COMMENT),以及可选的摘要正文或行内评论。需要写入权限,且 GITHUB_READ_ONLY=false。是
5. 问题与标签(issues — 8 个操作)
操作描述是否会修改?
list_issues使用上游索引参数(状态、标签、受指派人、创建者、提及对象、里程碑、起始时间)搜索和筛选仓库问题工单,并限制分页数量(最多 100 条)。会过滤掉拉取请求。如果已知问题编号,优先使用 'get_issue' 进行精确的 O(1) 查找。否
get_issue获取特定问题工单的完整详情,包括 Markdown 正文、受指派人、里程碑、状态原因和评论数。调查错误报告或阅读问题规范时使用。否
create_issue在仓库中创建新的问题工单,可选指定标签、受指派人和里程碑。需要写入权限,且 GITHUB_READ_ONLY=false。是
update_issue更新现有问题的标题、正文、状态('open'/'closed')、状态原因('completed'/'not_planned')、标签、受指派人或里程碑。需要写入权限,且 GITHUB_READ_ONLY=false。是
list_issue_comments按时间顺序列出问题工单的讨论评论。可用于查看对话历史、调试进展或用户对问题的反馈。否
create_issue_comment为问题工单添加 Markdown 评论。可用于回复讨论、记录进展或提供解决详情。需要写入权限,且 GITHUB_READ_ONLY=false。是
list_labels列出仓库中配置的所有标签及其名称、描述和十六进制颜色代码。创建或更新问题前,可用于查找可用标签。否
create_label在仓库中创建新标签,并指定名称、描述和 6 位十六进制颜色代码。需要写入权限,且 GITHUB_READ_ONLY=false。是
6. 项目里程碑(milestones — 4 个操作)
操作描述是否会修改?
list_milestones列出仓库中的项目里程碑,以及未关闭/已关闭问题数量和截止日期。可用于跟踪发布路线图,或在将里程碑关联到问题或 PR 前查找里程碑编号。否
get_milestone获取特定里程碑的详细状态,包括标题、未关闭/已关闭问题数量、创建日期和截止日期。查看里程碑进度或检查截止日期时使用。否
create_milestone创建新的项目里程碑,并指定标题、描述和可选的截止日期。需要写入权限,且 GITHUB_READ_ONLY=false。是
update_milestone更新现有里程碑的标题、描述、状态('open'/'closed')或截止日期。需要写入权限,且 GITHUB_READ_ONLY=false。是
7. 协作者与角色(collaborators — 4 个操作)
操作描述是否会修改?
list_collaborators列出有权访问仓库的协作者,以及分配给他们的角色和权限。可用于审查团队访问权限或检查用户成员身份。否
get_collaborator_permission检查特定用户在仓库中的确切权限级别('admin'、'maintain'、'write'、'triage'、'read' 或 'none')。尝试执行特权操作前,可用于验证授权。否
add_collaborator将 GitHub 用户添加为仓库协作者,或邀请其协作,并指定权限级别。如果用户不是组织成员,则会发送协作邀请。需要管理员权限,且 GITHUB_READ_ONLY=false。是
remove_collaborator从仓库中移除协作者,撤销其直接访问权限。需要管理员权限,且 GITHUB_READ_ONLY=false。是
8. Actions 变量与密钥(variables — 6 个操作)
操作描述是否会修改?
list_actions_variables列出仓库中定义的非敏感 GitHub Actions 配置变量及其值和时间戳。可用于检查构建环境参数。否
get_actions_variable按名称获取特定 GitHub Actions 仓库变量的纯文本值和最后更新时间戳。否
create_actions_variable为 GitHub Actions 工作流创建非敏感配置变量。需要写入/管理员权限,且 GITHUB_READ_ONLY=false。对于敏感凭据,请改用仓库密钥。是
update_actions_variable更新现有非敏感 GitHub Actions 配置变量的值。需要写入/管理员权限,且 GITHUB_READ_ONLY=false。是
delete_actions_variable从 GitHub Actions 中删除非敏感配置变量。需要写入/管理员权限,且 GITHUB_READ_ONLY=false。是
list_actions_secrets列出 GitHub Actions 仓库密钥的名称和时间戳。安全行为:密钥值会由 GitHub 永久屏蔽,且永远不会以纯文本形式返回。否
9. Gist 与代码片段(gists — 5 个操作)
操作描述是否会修改?
list_gists列出经身份验证的用户拥有的代码片段和 Gist,并提供文件摘要。可用于在读取或编辑前查找代码片段 ID。否
get_gist按 ID 获取特定 GitHub Gist 的完整源代码内容、文件和描述。可用于检查独立代码片段或配置模板。否
create_gist创建包含一个或多个文件的公开或秘密 GitHub Gist。需要写入权限,且 GITHUB_READ_ONLY=false。是
update_gist更新现有 Gist 的描述,或修改、重命名、删除 Gist 中的单个文件。需要写入权限,且 GITHUB_READ_ONLY=false。是
delete_gist按标识符永久删除 Gist。需要写入权限,且 GITHUB_READ_ONLY=false。是
10. GitHub Actions 与 CI/CD 可观测性(actions — 10 个操作)
操作描述是否修改数据?
list_workflows列出仓库中配置的 GitHub Actions CI/CD 工作流文件(.github/workflows)。在触发或检查运行之前,用于查找工作流名称和 ID。否
list_workflow_run_artifacts列出特定 GitHub Actions 工作流运行生成的制品,包括文件大小、下载归档 URL 和过期时间戳。用于查找生成的构建输出、测试日志或发布二进制文件。否
get_workflow_run_artifact根据数字制品 ID,获取特定 GitHub Actions 构建制品的元数据和下载归档 URL。用于下载构建交付物或检查单个制品。否
list_workflow_runs列出工作流执行记录,包括状态、结论('success'、'failure')、触发事件和提交 SHA。用于检查 CI/CD 流水线运行状况或查找运行 ID。否
get_workflow_run获取特定工作流执行记录的详细状态、耗时和结论。用于监控 CI 流水线是否完成。否
list_workflow_run_jobs列出工作流运行中的所有单独作业及步骤明细。用于确定构建期间具体哪个作业或步骤失败。否
get_job_logs获取 Actions 作业的纯文本执行日志,并智能提取故障信息和移除 ANSI 转义码。安全行为:扫描错误和 panic 以提取故障区块,并精简过大的日志,以保留大模型的 token 上下文。否
trigger_workflow通过 workflow_dispatch 事件在分支或标签上触发工作流运行,并传入自定义输入。需要写入权限,且 GITHUB_READ_ONLY=false。目标工作流文件必须定义 workflow_dispatch 触发器。是
cancel_workflow_run取消排队中或正在执行的 GitHub Actions 工作流运行。需要写入权限,且 GITHUB_READ_ONLY=false。是
rerun_workflow重新执行已完成或失败的 GitHub Actions 工作流运行中的所有作业。需要写入权限,且 GITHUB_READ_ONLY=false。是
11. 发布与 Git 标签(releases — 5 个操作)
操作描述是否修改数据?
list_releases列出仓库中已发布和草稿发布版本,包括发布标题、资源下载次数和发布日期。用于查看发布历史或下载 URL。否
get_release根据标签名称或数字发布 ID,获取特定发布版本的完整详情,包括变更日志正文和资源链接。否
create_release为某个标签发布正式的 GitHub 发布版本,包含标题、Markdown 发布说明/变更日志以及预发布/草稿标记。需要写入权限,且 GITHUB_READ_ONLY=false。是
list_tags列出仓库中的 Git 标签,包括标签名称和提交 SHA。发布版本之前,可用于查看可用的版本标签。否
create_tag创建指向特定提交 SHA 的 Git 标签(轻量引用,或在提供消息时创建带注释的标签对象)。需要写入权限,且 GITHUB_READ_ONLY=false。是
12. 用户、组织与团队(user — 7 个操作)
操作描述是否会修改?
system_health_check对 GitHub API 执行端到端连接、延迟、速率限制配额和权限诊断。验证令牌有效性、已验证身份的账户详情、剩余速率限制以及当前只读策略。否
get_authenticated_user获取当前已验证 GitHub 令牌对应的个人资料元数据(登录名、姓名、邮箱、公开仓库数、关注者数)。用于验证令牌身份和权限范围。否
get_user根据用户名获取指定 GitHub 用户的公开个人资料信息(登录名、姓名、公司、简介、公开仓库数)。否
list_user_organizations列出已验证用户所属的 GitHub 组织。用于发现可创建或查询仓库的组织命名空间。否
get_organization获取特定 GitHub 组织的详细信息(名称、描述、邮箱、博客、公开/私有仓库)。用于验证组织访问权限或检查组织设置。否
create_team在 GitHub 组织中创建新团队。支持使用 parent_team_id 建立嵌套子团队。需要组织所有者/管理员权限,且 GITHUB_READ_ONLY=false。是
list_accessible_repositories列出已验证用户可访问的仓库(用户拥有、参与协作或所属成员的仓库)。用于发现各账户中可用的仓库。否
13. Webhook 与主题(webhooks — 4 个操作)
操作描述是否会修改?
get_repository_topics获取与 GitHub 仓库关联的所有主题标签。用于检查项目类别和提升可发现性的关键词。否
set_repository_topics使用新的主题字符串数组替换仓库的所有主题标签。需要写入权限,且 GITHUB_READ_ONLY=false。是
list_repository_webhooks列出仓库上配置的事件 Webhook,包括目标 URL、启用状态和订阅的事件触发器。否
get_repository_webhook根据 ID 获取特定仓库 Webhook 的详细配置,包括投递 URL 和订阅的事件。否
14. 安全与 Dependabot(security — 1 个操作)
操作描述是否会修改?
list_dependabot_alerts列出仓库的 Dependabot 漏洞警报,包括受影响的软件包、严重程度(严重、高、中、低)和修补建议。否

基准测试:可复现的令牌用量节省证明(test/benchmark-test.js)

严格依据官方 GitHub REST API(2022-11-28) 响应架构(test/fixtures/github-api-v3-fixtures.js),并通过 node test/benchmark-test.js 在每次 npm test 运行时验证:

操作原始 GitHub API(2022-11-28)投影后的 JSON(format: "json")默认 Markdown(format: "markdown")已验证的缩减幅度
系统提示词开销(83 个工具与 5 个混合工具)23,112 个令牌(92,447 B)—1,125 个令牌(4,498 B)节省 95.1%
get_repository(1 个仓库)1,321 个令牌(5,283 B)104 个令牌(414 B)85 个令牌(340 B)节省 93.6%
list_issues(10 个议题)15,375 个令牌(61,499 B)1,567 个令牌(6,267 B)313 个令牌(1,250 B)节省 98.0%
list_pull_requests(10 个包含 head/base 仓库的 PR)46,536 个令牌(186,141 B)1,586 个令牌(6,341 B)330 个令牌(1,317 B)节省 99.3%
list_workflow_runs(10 次工作流运行)14,957 个令牌(59,826 B)839 个令牌(3,356 B)212 个令牌(846 B)节省 98.6%
get_file_contents(outline_only: true)3,589 个令牌(14,355 B)331 个令牌(1,323 B)314 个令牌(1,255 B)节省 91.3%
Token 压缩原理
  • 降低系统提示词开销(节省 95.1%):将 MCP ListTools 架构的占用从 83 个完整工具架构(23,112 个 token / 92,447 B)缩减至 5 个工具的混合界面(1,125 个 token / 4,498 B)。
  • 递归输出投影过滤器(projectOutput):自动剔除 GitHub REST API v3 超媒体模板 URL(*_url RFC 6570 模板)、avatar_url、gravatar_id、node_id、site_admin、_links、内部 api.github.com 自链接,以及 null/"" 字段。
  • 智能差异与锁文件截断:默认通过 ignore_lockfiles: true 自动折叠提交和 PR 差异中的依赖锁文件(package-lock.json、pnpm-lock.yaml、yarn.lock、go.sum、Cargo.lock、*.min.js)。传入 ignore_lockfiles: false 可查看完整锁文件差异。
  • 保守的默认分页:所有列表操作默认 per_page: 10(最大值:100)。
  • 默认高密度 Markdown 格式:发现(github_find_actions)、执行(github_execute_action)和全部 3 个主动工具默认采用 format: "markdown"。
  • 统一差异截断:PR(max_lines)和提交(max_diff_lines)差异默认截断为 400 行。
  • 安全的日志尾部提取:CI 工作流作业日志会提取失败区块和清理阶段的尾部内容(tail_lines,默认值:100),并剥除 ANSI 转义序列。

路线图

v2.1 中已完成
  • 上游索引过滤与严格的分页上限(state、labels、assignee、creator、mentioned、milestone、since)
  • 客户端错误恢复能力(次级速率限制/滥用检测、403/404 权限范围诊断、处理空响应体的 201/202 响应)
  • 强化输出投影,加入递归深度保护(maxDepth = 32)、RFC 6570 超媒体 URL 剔除和空集合保留
  • 嵌套子团队与组织管理(create_team、get_organization)
  • 在 get_job_logs 中智能提取 CI/CD 失败日志并剥除 ANSI 序列(strip_ansi、smart_failure)
  • 在 get_file_contents 中优先提取代码符号大纲并按行范围切片(outline_only、start_line、end_line)
  • 原子化多文件提交(create_commit、push_files),通过 GitHub Git Trees API 支持创建、更新和删除文件
  • 合并前可合并性与冲突验证(get_mergeability)
  • Token 权限范围自审计与权限预检
未来规划(v2.x)
  • 标准化集合 _summary 标头,以便在 LiteLLM / Eigent Agent 编排中进行多轮历史裁剪
  • 远程传输:Streamable SSE 和 HTTP 远程服务模式
  • 用于关系型深度检查的限定范围 GraphQL 查询引擎
  • DevSecOps 代码扫描与机密扫描告警查询
  • 在项目仓库内进行范围限定且带速率保护的代码搜索

致谢与渊源

本项目融入了以下项目的架构概念、架构和模式:

完整的第三方归属信息请参阅 NOTICE。


许可证

本项目采用 MIT License 许可——版权归 [email protected] 所有,2026 年。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。