扩展云端 GitHub MCP 授权
使用细粒度 PAT 或 GitHub App 扩大读取范围,同时限制工具和访问仓库。
内置 GitHub MCP 默认使用只读、仅限当前仓库的特殊 token。需要查询其他仓库的 Issue 或 PR 时,可以配置访问范围更广的 PAT 或 GitHub App。
扩大上下文访问不改变 cloud agent 一次任务只修改指定仓库的限制,也不意味着应启用所有写工具。
PAT 配置
在仓库 MCP 设置中,可按官方示例覆盖 github-mcp-server:
{
"mcpServers": {
"github-mcp-server": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/readonly",
"tools": ["*"],
"headers": {
"X-MCP-Toolsets": "repos,issues,users,pull_requests,code_security,secret_protection,actions,web_search"
}
}
}
}然后创建 Agents secret COPILOT_MCP_GITHUB_PERSONAL_ACCESS_TOKEN,值为 PAT。官方建议使用 fine-grained PAT,只授予所需仓库的读取权限。
这里的特殊 secret 名和内置服务器覆盖流程来自云端配置专题,不应改写成 IDE 的交互 OAuth 示例。/readonly 限制只读工具,X-MCP-Toolsets 选择工具集,tools 再选择具体工具;token 自身的仓库和权限范围仍会限制实际请求。
官方说明移除 /readonly 可开放更广工具范围,但工具可见并不代表 token 已获得写权限。若仅需额外仓库的上下文,保留只读即可。
GitHub App 配置
官方提供本地 Docker 服务器方式,由 GitHub App 身份访问其安装所授权的仓库:
{
"mcpServers": {
"github-wider-access": {
"type": "stdio",
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "GITHUB_APP_ID",
"-e", "GITHUB_APP_INSTALLATION_ID",
"-e", "GITHUB_APP_PRIVATE_KEY",
"-e", "GITHUB_READ_ONLY",
"-e", "GITHUB_TOOLSETS",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_APP_ID": "$COPILOT_MCP_GITHUB_APP_ID",
"GITHUB_APP_INSTALLATION_ID": "$COPILOT_MCP_GITHUB_APP_INSTALLATION_ID",
"GITHUB_APP_PRIVATE_KEY": "$COPILOT_MCP_GITHUB_APP_PRIVATE_KEY",
"GITHUB_READ_ONLY": "true",
"GITHUB_TOOLSETS": "repos,pull_requests"
},
"tools": ["*"]
}
}
}在 Agents variables 中创建 COPILOT_MCP_GITHUB_APP_ID 和 COPILOT_MCP_GITHUB_APP_INSTALLATION_ID,在 Agents secrets 中保存 COPILOT_MCP_GITHUB_APP_PRIVATE_KEY。不要把私钥字面值写入仓库 MCP JSON。
此示例注册独立名称 github-wider-access,不能仅凭它与 PAT 方案并列,就认为两者都会替换同一内置服务器。
检查连接与范围
从会话的 Start MCP Servers 日志检查工具发现。遇到授权错误时,分别检查 Agents 值、PAT 或 App 的仓库授权、只读设置和工具选择。
官方配置页也要求:若出现 api.github.com 防火墙警告,将它加入适当 allowlist。这不改变防火墙不直接约束 MCP 进程的总体说明;应以警告里实际发起请求的命令判断受阻环节。