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

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 个领域的核心能力
- 仓库与分支治理(
repositories,12 个操作):完整的仓库生命周期管理、分支管理、分支保护规则(get_branch_protection)、文件读取(自动进行 Base64 解码、提供符号大纲和行切片)、单文件提交以及派生仓库。
- 提交与提交状态(
commits,6 个操作):提交历史、带令牌上限的提交差异(get_commit)、通过 Git Trees API 原子提交多个文件(create_commit、push_files)以及提交状态检查。
- 拉取请求与代码评审(
pull-requests,11 个操作):PR 生命周期(create、update、merge)、评审评论、行内差异评审,以及支持筛除锁定文件的统一差异检查。
- 议题与标签(
issues,8 个操作):议题跟踪、上游索引筛选、对话评论以及标签管理。
- 项目里程碑(
milestones,4 个操作):创建里程碑、跟踪进度以及管理截止日期。
- 协作者与权限(
collaborators,4 个操作):审计和管理仓库协作者及其权限级别。
- Actions 变量与密钥(
variables,6 个操作):管理仓库 Actions 配置变量并查看密钥元数据。
- Gist 与代码片段(
gists,5 个操作):完整的 Gist 生命周期管理,用于分享多文件代码片段和配置。
- GitHub Actions 与 CI/CD(
actions,10 个操作):工作流检查、工作流运行、作业步骤明细、构建产物(list_workflow_run_artifacts、get_workflow_run_artifact)、智能提取失败日志(get_job_logs)、取消或重新运行工作流,以及手动触发工作流。
- 发布与 Git 标签(
releases,5 个操作):发布版本、创建轻量或附注标签,以及检查发布资产。
- 用户、组织、团队与诊断(
user,7 个操作):已验证用户身份、组织检查、创建团队(create_team)、可访问的仓库,以及 API 健康状态和速率限制诊断(system_health_check)。
- Webhooks 与仓库主题(
webhooks,4 个操作):审计仓库事件 Webhook 并管理仓库主题标签。
- 安全与 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.com | API 基础 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_files | create_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 中已完成
未来规划(v2.x)
致谢与渊源
本项目融入了以下项目的架构概念、架构和模式:
完整的第三方归属信息请参阅 NOTICE。
许可证
本项目采用 MIT License 许可——版权归 [email protected] 所有,2026 年。