Appearance
Copilot Cloud Agent 通过 MCP(Model Context Protocol)接入外部工具,默认内置了 GitHub 数据访问和 Playwright 网页测试两个 MCP Server。管理员可以为仓库添加额外的 MCP Server,让 Cloud Agent 在执行任务时自动调用这些外部工具。
GitHub Copilot Cloud Agent 与 MCP:为 AI 代理接入外部工具和数据源
什么是 MCP
MCP(Model Context Protocol,模型上下文协议)是一个开放标准,让 AI 模型能与不同的数据源和工具连接。对 Copilot Cloud Agent 来说,MCP Server 是扩展工具能力的主要方式——让代理不仅能操作代码,还能读取数据库、访问外部 API、操控浏览器等。
注意:Copilot Cloud Agent 只支持 MCP Server 提供的工具(Tools),不支持 MCP 资源(Resources)和提示词(Prompts)。同时,不支持使用 OAuth 认证的远程 MCP Server。
默认内置 MCP Server
Copilot Cloud Agent 启动时自动配置以下两个 MCP Server:
| MCP Server | 功能 | 访问范围 |
|---|---|---|
| GitHub | 访问 GitHub 数据(Issue、PR、仓库内容等) | 只读权限访问当前仓库(默认 token 只读) |
| Playwright | 访问网页:读取、交互、截图 | 只能访问 localhost 或 127.0.0.1,无法访问外部网络 |
Playwright MCP 服务器特别适合:运行本地 Web 应用并让 Copilot 进行 UI 测试和截图验证。
为仓库配置 MCP Server
管理员可以在仓库中添加 MCP Server 配置,配置生效后 Cloud Agent 在每次任务中都能使用这些工具:
配置格式(JSON):
json
{
"mcpServers": {
"my-database": {
"command": "npx",
"args": ["-y", "@my-org/db-mcp-server"],
"env": {
"DB_CONNECTION_STRING": "${secrets.DB_CONNECTION_STRING}"
}
},
"internal-api": {
"url": "https://api.internal.example.com/mcp",
"headers": {
"Authorization": "Bearer ${secrets.API_TOKEN}"
}
}
}
}配置保存后,工具会自动对 Cloud Agent 可用,代理会在合适时机自主调用这些工具,不会向用户请求确认。
自定义代理的 MCP Server
自定义代理(Custom Agents)可以配置专属的 MCP Server,处理顺序为:
- 默认 MCP Server(GitHub、Playwright)
- 自定义代理的 MCP Server 配置
- 仓库级 MCP Server 配置
这意味着自定义代理可以有比主代理更精细的工具集控制。
安全注意事项
配置前必须仔细审查:
- 第三方 MCP Server 可能影响代理输出质量,甚至引入安全风险
- Cloud Agent 默认没有写权限,但某些 MCP Server 可能提供写操作工具,需要谨慎评估
- 只配置任务所需的最小工具集,不要为了"以防万用"添加过多工具
- 包含 MCP Server 的仓库应限制谁可以修改配置文件
不要在配置中硬编码凭证,使用 GitHub Secrets 引用(如 ${secrets.SECRET_NAME})。
与 IDE/CLI 中 MCP 的区别
| 场景 | MCP 服务器类型 | 运行位置 |
|---|---|---|
| Cloud Agent | 远程/本地 MCP Server(受限) | GitHub 云端环境 |
| Copilot CLI | 本地 MCP Server | 你的开发机器 |
| IDE Copilot | 本地 MCP Server | 你的开发机器 |
Cloud Agent 运行在 GitHub 的云端隔离环境中,所以网络访问受限(Playwright 只能访问 localhost),而本地 CLI/IDE 可以访问你本地网络的任何服务。
常见问题
Q: Cloud Agent 能访问我公司内网的 MCP Server 吗?
A: 不能直接访问。Cloud Agent 运行在 GitHub 隔离环境中,没有访问公司内网的通道。如果需要,可以考虑将内部服务通过安全方式暴露到公网,或使用 Cloud Agent 的本地备选方案(CLI 模式)。
Q: Playwright MCP 能访问 localhost,但我的服务跑在容器里,地址是什么?
A: Cloud Agent 任务运行在独立的容器环境中,localhost 指向的是这个容器内部。如果 Cloud Agent 需要启动一个服务并用 Playwright 访问,需要在任务描述中告诉 Copilot 先启动服务(如 npm start),然后再用 Playwright 访问。
Q: 如何撤销某个 MCP Server 的工具权限?
A: 从 MCP Server 配置中删除该 Server,或限制其可用工具列表。配置保存后,下次任务即生效。