将GitHub Copilot云代理连接到 Azure MCP 服务器

本文介绍如何设置GitHub Copilot云代理并将其连接到 Azure MCP 服务器。 通过将云代理连接到服务器,代理便能够理解你的 Azure 特定文件和 Azure 资源,并对你的代码文件进行修改。

在GitHub存储库中,将GitHub问题分配给GitHub Copilot云代理会创建一个拉取请求,其中包含对代码所做的更改。 如果请求的更改需要访问Azure资源,GitHub Copilot云代理需要使用 Azure MCP 服务器。 在GitHub Copilot云代理可以使用 Azure MCP 服务器以代理方式更改基于Azure的项目之前,需要配置GitHub Copilot云代理,并在Azure中为其授予适当的权限。 可以手动配置所有内容,但使用 azdcoding-agent 扩展自动执行许多步骤。 GitHub 现在在 UI 中采用“Copilot cloud agent”作为显示名称,但稳定的扩展标识符仍为 azure.coding-agent,CLI 命令仍为 azd coding-agent ...

先决条件

  • Azure 帐户和对 Azure 订阅的访问权限。 有关如何设置它们的详细信息,请参阅 Azure 帐户的定价页

  • GitHub 帐户和 GitHub Copilot 订阅。 有关如何设置它们的详细信息,请参阅 在 GitHub 上创建账户GitHub Copilot 快速入门指南

  • GitHub 存储库的现有本地克隆。 由于本文介绍如何在 GitHub Copilot 云代理与 Azure MCP 服务器之间建立连接,因此GitHub存储库应包括用于Azure的部署脚本,例如Bicep或 Terraform 模板。

将 GitHub 存储库配置为使用 Azure MCP 服务器

azd coding-agent 扩展简化了为你的 Azure 订阅安全设置 GitHub Copilot 云智能体与 Azure MCP 服务器之间连接所需的步骤。 首先,它会在 Azure 订阅中创建一个帐户,并为其分配具有必要权限的角色。 其次,它提供将 Azure MCP 服务器引入GitHub Copilot云代理所需的 JSON 代码片段。

  1. 如果尚未 azd 安装, 请按照说明 进行安装。

  2. 在终端中,导航到要使用的存储库的本地克隆。

  3. 使用命令 coding-agentazd 调用 azd coding-agent config 扩展。

  4. 在安装期间,系统会要求你选择某些选项:

    • Azure订阅
    • 使用 Copilot 云代理的GitHub存储库
    • 无论您是想创建新的用户托管标识还是使用现有的用户托管标识。
    • 一个 Azure 区域
    • Azure 资源组
    • 将在其中创建新分支的 GitHub 存储库,其中包含生成的 GitHub Actions 工作流设置文件

    选择位置和资源组时,可能需要使用与应用程序中的 Azure 资源相同的目标位置和资源组。

  5. 片刻之后,用于 coding-agentazd 扩展会创建(或使用现有的)用户分配托管标识,为其分配角色,将标识值存储到 GitHub 存储库环境中,并创建并推送一个包含已生成的 GitHub Actions 工作流设置文件的分支。

  6. 控制台中会显示一条消息:

    (!)
    (!) NOTE: Some tasks must still be completed, manually:
    (!)
    

    通常有三个任务:

    • 合并包含生成的 GitHub Actions 工作流安装程序文件的分支。
    • 在 Azure 门户中配置 Copilot 云智能体的托管标识角色。 默认情况下,分配了“读者”角色。 但是,你可能希望根据希望云代理自主执行哪些操作来授予其他权限。
    • 访问链接以设置 MCP 配置。 若要手动前往该页面,请在 GitHub 中依次转到 设置>Copilot>Cloud agent>MCP 配置,然后粘贴提供的 JSON 代码段。 下面是一个示例:
    {
        "mcpServers": {
            "Azure": {
                "type": "local",
                "command": "npx",
                "args": [
                    "-y",
                    "@azure/mcp@latest",
                    "server",
                    "start"
                ],
                "tools": [
                    "*"
                ]
            }
        }
    }
    
  7. 最后,你可以允许 azdcoding-agent 扩展打开浏览器,以便你可以创建拉取请求来合并包含生成的 GitHub Actions 工作流设置文件的分支。

在 GitHub 中创建问题以启动 GitHub Copilot 云代理

至此,你已成功将 GitHub Copilot 云代理配置为使用 Azure MCP Server,以处理你分配给 GitHub Copilot 云代理的、任何需要理解 Azure 部署和资源的 GitHub 议题。

例如,假设你想要在部署到 Azure Database for PostgreSQL 时增加分配给 PostgreSQL 的内存。 你将创建一个问题来修改 Bicep 模板,以使用可用的下一层存储并将其分配给 GitHub Copilot。

注释

默认情况下,用户托管标识角色设置为“读取者”,因此请求的更改应该是修改部署脚本(如 Bicep 或 Terraform 模板)。 由于“读取者”角色的权限,要求直接修改 Azure 订阅中的现有资源未获得授权。

  1. 在 GitHub 中,在包含已启用 Azure MCP 服务器的基于 Azure 的项目的存储库中,转到“问题”。

  2. 选择“ 新建问题 ”按钮。 描述你希望 GitHub Copilot 云代理在标题和描述字段中进行的更改。 选择“ 创建 ”按钮。

    从前面的示例中借用,可以使用以下文本来描述问题。

    Title: Increase database storage
    
    Currently, when deploying to Azure via Bicep, we're creating a PostgreSQL database with 32gb of storage. I need the next tier higher -- whatever that is.
    

    示例问题即使用户不确切知道他们的请求是什么,也能够简单、清楚地发出请求。 它允许 Azure MCP 服务器研究 Azure Database for PostgreSQL 灵活服务器的可用存储层级,以及在 Bicep 模板中进行该更改所需的设置。

    Important

    请确保在提示中使用“Azure”一词,以确保 GitHub Copilot 从 Azure MCP 服务器请求工具。

  3. 受托人下选择‘分配给 Copilot’按钮。 “将 Copilot 分配给问题”对话框出现,允许你修改目标存储库、基础分支并添加可选提示。 选择“分配”按钮。

  4. 将该问题分配给 GitHub Copilot 云端代理后,你会看到一个前面带有“[WIP]”前缀的拉取请求链接,这表示该工作已开始。

  5. 选择“[WIP]”链接以查看拉取请求。

  6. 在拉取请求的正文中,选择用于查看编码会话的链接。 这会显示 Copilot 云代理处理该请求的进展,类似于在 Visual Studio 中的体验。

  7. 完成后,GitHub Copilot云代理请求代码评审。 使用你的常规工作流与 GitHub 协作,将 GitHub Copilot 云智能体视为同事。

  8. 批准更改并合并拉取请求时,GitHub Copilot 将解决你创建的原始问题。