@brycepelletier/github-app-mcp
@brycepelletier/github-mcp
一个用于 GitHub 应用角色的 MCP stdio 门面。它将活动工作区上的有界 Git 操作与委派给 GitHub 官方 MCP 服务器的 GitHub API 工具结合起来。它绝不返回 GitHub 应用的私钥或安装令牌。
架构与职责划分
Software Engineer GitHub Operator
| |
agent-env-mcp github-app-mcp
| /-----------+-----------\
source/build/edit ephemeral Git runtime official GitHub MCP
.git masked real .git GitHub API
no GitHub credentials local: no network fixed toolsets
remote: App authagent-env-mcp 仍然是工程能力表面层。其工程容器在物理上屏蔽 .git,并且不接收任何 GitHub 凭据。此包是 github-operator.agent 的唯一有意的面向模型的 Git/GitHub 表面。
该门面通过 MCP roots 发现工作区,要求恰好一个本地 file: 根,拒绝文件系统根,并要求真实的 .git 元数据。
没有模型工具可以限制 GitHub 仓库、PEM、镜像、工具集、或 Docker 参数。
信任边界与 Docker 行为
MCP client
| stdio
host-side trusted launcher (may control Docker; no Docker socket is mounted)
|-- git_local -> ephemeral container, workspace mount, network=none, no PEM
|-- git_remote -> ephemeral container, workspace + read-only PEM, GitHub HTTPS
`-- API tools -> ghcr.io/github/github-mcp-server, read-only PEM本地 Git 和远程 Git 具有不同的执行模式。git_local 暴露一个操作枚举和类型化字段,而不是原始 shell 或任意的 Git 参数数组。它的容器具有真实的 .git,但没有凭据或凭据材料。
git_remote 仅接受 fetch、仅快进 pull、push 和 ls_remote,并带有有界 remote/ref 字段。它要求一个无凭据的 https://github.com/owner/repository 远程仓库,并从该配置的远程仓库派生仓库身份,并请求一个仅限于该仓库的安装令牌,具有 contents:write 和 workflows:write。该令牌在临时运行时内铸造,通过私有 askpass 助手提供给 Git,从输出中编辑掉,并与容器一起丢弃。pull 首先执行经过身份验证的 fetch,然后是无凭据的仅快进合并。
Git 钩子、全局/系统配置、文件传输、子模块递归、交互式编辑器、GPG 签名和终端凭据提示均被禁用。输出有界,并清理 GitHub 令牌模式和带凭据的 URL。
GitHub Issues、拉取请求、评论、Actions、Projects 和搜索没有重新实现。它们通过 MCP 代理到:
ghcr.io/github/github-mcp-server官方服务器确切收到:
GITHUB
没有无关的工具集被静默启用。
配置与来源
启动器识别:
GITHUB_APP_ID— 默认为4618233。GITHUB_APP_INSTALLATION_ID— 默认为154276908。GITHUB_APP_PRIVATE_KEY_PATH— 必需的绝对路径或可解析的主机路径。
这两个数字默认值是来自用户现有 VS Code 配置以及 GitHub App bp-agent-github-app 的早期 compose 设置中记录的有效工作值。它们是默认值,不是包级不公开的秘密,并且可以被覆盖。GitHub 安装/设置页面仍然是仓库访问的事实来源。该 GitHub 应用最初是为 brycepelletier/environment-controller 安装的。
包装中故意没有默认的主机 PEM 文件名。早期材料仅确定它位于 C:/Users/bryce/.ssh/ 之下的某个位置;这不足以安全猜测。配置的主机以只读方式挂载在固定的容器路径 /secrets/github.pem 上。该密钥从不复制到 npm 包中、被打印、接受为工具输入、或通过 MCP 转发。
主机先决条件与 MCP 生命周期
和 Node.js 或兼容 Node 的发行版(Node.js 22 LTS 或兼容的 22 版本)
Node.js 24 LTS 或兼容的 Node 24 版本
支持 Linux 容器的 Docker
受信任的主机侧启动器可读取 GitHub App PEM
通过 MCP roots 提供的一个本地 Git 工作区
来自远程 Git 和官方 GitHub 容器的网络访问
官方 GitHub 子服务器在列出工具或调用工具时开始懒加载。Git 运行时镜像在首次 Git 操作时懒构建,并通过包版本/内容派生的本地标签复用;Git 操作容器是短暂的(--rm)。SIGINT/SIGTERM 关闭官方子传输。
平台链接
在此包目录中的 Git Bash 中:
GXP5使用以下命令取消链接:
npm run unlinkVS Code 配置
将主机 PEM 路径作为环境配置提供,并暴露一个 MCP 条目:
{
"servers": {
"github": {
"type": "stdio",
"command": "npx",
"args": ["--yes", "@brycepelletier/github-app-mcp@0.1.0"],
"env": {
"GITHUB_APP_PRIVATE_KEY_PATH": "<exact-host-path-to-existing-pem>"
}
}
}
}工作应用和安装 ID 不需要重复,除非覆盖文档化的默认值。
从 github-token-broker 迁移
旧的私有代理监听 0.0.0.0:8080 并以 Git 凭据助手的格式从 GET /credential 返回安装令牌。该架构已退役:此包没有托管监听器、凭据端点或服务。
保留现有代理源代码用于审计/迁移历史,但该包不发布它。
该包运行后,在 agent-env-mcp 中跟进,移除 GitHub 服务和公共 git_command。这有意不在本次变更范围内。
工程服务必须继续屏蔽真实的 .git,并且绝不能接收到 PEM、安装 ID 或 GitHub 工具。
注意:有些术语如 "MCP"、"VS Code" (maybe translate as VS Code? Actually "VS Code" is product name, keep as is), "Node.js", "Docker", "GitHub" should remain.
Let's translate elegantly. Need ensure link text: "platform linking" etc. None.
Let's craft final: We need output the whole translation with no preamble. We'll include all sections with same structure.
Need be consistent with names. "GXP1" and "GXP2": preserve. "GITHUB" preserve. "GXP3", "GXP4", "GXP5", "GXP6", "GXP7": preserve.
"PEM" and "installation token" translate: "PEM" and "安装令牌". "installation" maybe "安装". Fine.
Let's produce the Chinese translation. No additional## @brycepelletier/github-mcp
一个用于 GitHub 应用角色的 MCP stdio 门面。它将活动工作区上的有界 Git 操作与委托给 GitHub 官方 MCP 服务器的 GitHub API 工具相结合。它永远不会返回 GitHub 应用的私钥或安装令牌。
架构与职责划分
Software Engineer GitHub Operator
| |
agent-env-mcp github-app-mcp
| /-----------+-----------\
source/build/edit ephemeral Git runtime official GitHub MCP
.git masked real .git GitHub API
no GitHub credentials local: no network fixed toolsets
remote: App authagent-env-mcp 仍然是工程能力表面。其工程容器物理上屏蔽 .git,并且不接收任何 GitHub 凭据。该包是 github-operator.agent 唯一有意的、面向模型的 Git/GitHub 表面。
该门面通过 MCP roots 发现工作区,要求恰好一个本地 file: 根,拒绝文件系统根,并要求真实的 .git 元数据。
没有任何模型工具可以约束 GitHub 仓库、PEM、镜像、工具集或 Docker 参数。
信任边界与 Docker 行为
MCP client
| stdio
host-side trusted launcher (may control Docker; no Docker socket is mounted)
|-- git_local -> ephemeral container, workspace mount, network=none, no PEM
|-- git_remote -> ephemeral container, workspace + read-only PEM, GitHub HTTPS
`-- API tools -> ghcr.io/github/github-mcp-server, read-only PEM本地 Git 与远程 Git 具有不同的执行模式。git_opaque 暴露一个操作枚举和类型化字段,而不是原始 shell 或任意 Git 参数数组。其容器包含真实的 .git,但没有凭据或凭据材料。
远程 git_remote 只接受 fetch、仅快进 pull、push 和 ls_remote,并带有有界远程/引用字段。它要求一个无凭据的 https://github.com/owner/repository 远程,从该配置的远程派生仓库身份,并请求一个限定了该仓库的安装令牌,拥有 contents:write 和 workflows:write。该令牌在临时运行时内铸造,通过私有 askpass 助手提供给 Git,从输出中编辑/丢弃,并与容器一起丢弃。pull 先执行经过身份验证的 fetch,然后是无凭据的仅快进合并。
Git 钩子、全局/系统配置、文件传输、子模块递归、交互式编辑器、GPG 签名和终端凭据提示均被禁用。输出有边界,并清理了 GitHub 令牌模式和携带凭据的 URL。
GitHub Issues、拉取请求、评论、Actions、Projects 和搜索均未重新实现。它们通过 MCP 代理到:
ghcr.io/github/github-mcp-server官方服务器确切接收:
GITHUB
没有无关工具集被静默启用。
配置与来源
启动器识别:
GITHUB_APP_ID— 默认为4618233。GITHUB_APP_INSTALLATION_ID— 默认为154276908。GITHUB_APP_PRIVATE_KEY_PATH— 必需绝对路径或可解析的主机路径。
这两个数字默认值是来自用户现有 VS Code MCP 配置以及 GitHub App bp-app-agent 的更早撰写方式的可用值。它们是默认值并非包级不可解释的秘密,也可能被覆盖。GitHub 安装/设置页面仍然是仓库访问的事实来源。该 GitHub 应用最初是为 brycepelletier/environment-controller 安装的。
该包刻意没有默认的主机 PEM 文件名。早期资料仅确定它位于 C:/Users/bryce/.ssh/ 之下的某个位置;这不足以安全猜测。配置的主机以只读方式挂载到固定容器路径 /secrets/github.pem。该密钥永远不会被复制到 npm 包中、打印、作为工具接受、或通过 MCP 转发。
主机先决条件与 MCP 生命周期
Node.js 22 LTS 或兼容 Node.js 24 版本
支持 Linux 容器的 Docker
受信任的主机端启动器可读取的 GitHub 应用 PEM
通过 MCP 根提供的一个本地 Git 工作区
来自远程 Git 和官方 GitHub 容器的网络访问
官方 GitHub 子服务器在工具列出或工具被调用时惰性启动。Git 运行时镜像在首次 Git 操作时惰性构建,并通过包版本/内容派生的本地标签重用;Git 操作容器是临时的(--rm)。SIGINT/SIGTERM 关闭官方子传输。
平台链接
在此包目录中的 Git Bash 中:
GXP5使用以下命令取消链接:
npm run unlinkVS Code 配置
提供主机 PEM 路径作为环境配置,并公开一个 MCP 条目:
{
"servers": {
"github": {
"type": "stdio",
"command": "npx",
"args": ["--yes", "@brycepelletier/github-app-mcp@0.1.0"],
"env": {
"GITHUB_APP_PRIVATE_KEY_PATH": "<exact-host-path-to-existing-pem>"
}
}
}
}工作应用和安装 ID 不需要重复,除非覆盖文档化默认值。
从 github-token-broker 迁移
旧私有代理监听 0.0.0.0:8080 并以 Git 凭据者助手格式从 GET /credential 返回安装令牌。该架构已退役:此包不再有托管的 listener、凭据字段或服务。
现有代理源码在审计/迁移历史中保留,但不由此包发布。
当该包正常运行后,在 agent-env-mcp 中继续跟进,移除 GitHub 服务和公共 git_command 字段。这有意处于本变更范围之外。
工程服务必须持续遮蔽真实的 .git,并且绝不能接收到 PEM、安装令牌或 GitHub 的工具。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
GitHub Private MCP Pack — access private repos, org data via OAuth.
A MCP server built for developers enabling Git based project management with project and personal…
Remote MCP for Copilot CLI switch gate MCP, structured receipts, audit logs, and reviewer-ready evid
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/brycepelletier/github-app-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server