Copilot云代理 可以连接到 MCP 服务器、使用专用包和访问外部服务,但前提是组织的存储库配置为允许它。
尽管下面的大部分配置是在存储库级别完成的,但组织所有者可以控制哪些资源在范围内,以及谁可以配置对这些资源的访问权限。
示例方案
组织使用 Sentry 跟踪 Node 应用中的 bug。 新的异常在 GitHub 作为问题被提出,并且开发人员希望将这些问题分配给 Copilot。
你想要 Copilot :
- 连接到 Sentry MCP 服务器,以便它可以访问 Sentry 实例的详细信息
- 安装依赖项(包括托管在上的 GitHub专用包)以生成应用并运行测试
- 遵循组织的错误处理约定
安全地存储机密
默认情况下,身份验证令牌的范围 Copilot仅限于正在运行的存储库。 这意味着 Copilot 无法向外部系统进行身份验证或访问专用组织范围的包。
存储库管理员应向专用Copilotcopilot环境添加GitHub Actions所需的变量和机密。
Copilot 可以在其设置和执行任务中访问此数据。 它无法访问此环境之外的变量或机密,例如组织范围的 GitHub Actions 机密。
示例:保存机密
存储库管理员保存组织的 Sentry 实例的身份验证令牌。
- 转到存储库设置的“ 环境” 部分。
- 创建名为
copilot的新环境。 - 在名为
COPILOT_MCP_SENTRY_ACCESS_TOKEN的环境密钥中保存 Sentry 实例的访问令牌。
提示
我们不需要为专用 GitHub Packages 注册表保存令牌,我们将使用标准 GitHub ActionsGITHUB_TOKEN对其进行访问。 但是,如果您使用外部包管理系统,您需要保存身份验证令牌。
配置对 MCP 服务器的访问
组织和企业所有者可以设置一个策略,以允许用户配置对 MCP 服务器的访问。 如果启用此策略,用户可以在存储库设置或自定义代理配置文件中配置 Copilot云代理 MCP 服务器。 对于组织范围的一致性,我们建议在组织或企业级创建自定义 代理配置文件 。
使用自定义代理的会话可以访问存储库设置和代理 配置文件中配置的 MCP 服务器。 但是,在组织范围的自定义代理中涵盖的用例越多,用户就越不需要在存储库设置中配置对 MCP 服务器的即席访问。
建议浏览 GitHub MCP 注册表 以查找受信任的高度分级的选项。
示例:创建自定义代理
组织所有者为 Sentry 代理创建自定义代理配置文件。 它能够访问 Sentry MCP 服务器,并能获取有关组织错误处理惯例的定制指南。
-
在你的组织中创建一个命名为
.github-private的存储库。 (可选)企业所有者可以将此存储库设置为企业中所有自定义代理的源。 -
在存储库中,添加一个像下面这样的配置文件的
agent.md文件。 这包括 MCP 服务器的配置,该服务器引用了我们保存的机密。--- name: sentry-error-fixer description: Proposed fixes for exception issues raised from Sentry mcp-servers: sentry: type: 'local' command: 'npx' args: ['@sentry/mcp-server@latest'] env: SENTRY_ACCESS_TOKEN: ${{ secrets.COPILOT_MCP_SENTRY_ACCESS_TOKEN }} --- You are an error resolution specialist. When you're assigned an issue created by our Sentry integration, check for error details and stack traces using the MCP server, then propose a fix. Make sure you check that your proposed fix works by building the site with `npm run build` and running the test suite in `npm test`. -
当开发人员将问题分配给Copilot时,他们可以从下拉列表中选择一个自定义代理。
安装专用包
为了授予Copilot访问项目的依赖项的最佳方式是在copilot-setup-steps.yml工作流文件中安装它们。 此文件定义在开始工作之前 Copilot 如何设置环境。
若要允许工作流拉取您私有且限定于组织的包,需要更新包设置,以确保存储库 GITHUB_TOKEN 能访问该包。 这比使用具有组织权限的长期持久性 personal access token 更安全。
示例:安装节点依赖项
开发人员创建一个工作流,用于安装存储库 package-lock.json 文件中定义的 Node 依赖项。 这包括在 GitHub 上托管的私有的、组织范围的包。
-
开发人员在存储库中创建文件
copilot-setup-steps.yml。 -
添加用于安装项目依赖项的步骤。 例如:
# ... jobs: copilot-setup-steps: # ... # You can define any steps you want, and they will run before the agent starts. # If you do not check out your code, Copilot will do this for you. steps: - name: Checkout code uses: actions/checkout@v5 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" - name: Install JavaScript dependencies run: npm ci -
组织管理员通过在每个包的设置中授予存储库访问权限,以确保存储库可以访问组织的私有包。 请参阅“配置包的访问控制和可见性”。
提示
如果需要访问内部企业网络中托管的包,您可能需要在自托管的 Copilot云代理 运行器上运行 GitHub Actions。
控制谁可以配置这些设置
现在,你已经了解了如何在存储库和组织级别控制对资源的访问,请考虑要为用户提供多少范围来管理这些设置。
-
**选择哪些存储库有权访问**Copilot云代理。 如果您担心特定存储库,您可以阻止所有用户访问它。 -
**请考虑谁获取** 对这些存储库的管理员访问权限。 可以通过创建具有 **All-repository 管理员** 自定义角色的团队,在组织级别控制这一点。 这些用户将能够在每个存储库中管理配置 _设置_,例如 MCP 配置和环境 `copilot` 。 -
**使用规则集和 CODEOWNERS 文件**来控制配置文件的编辑,例如`copilot-setup-steps.yml`。默认情况下,具有写入访问权限的任何人都可以编辑这些文件。 -
**查看默认防火墙**。 防火墙不会影响到 MCP 服务器的连接或设置步骤 `copilot-setup-steps.yml`,但它确实限制了 Copilot在任务执行期间对 Internet 的访问。 请参阅“[AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/customize-the-agent-firewall)”。