将 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 中授予适当的权限。 可以手动配置所有内容,但是使用azd、Azure 开发人员 CLI 和coding-agent扩展可以自动化许多步骤。

先决条件

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

  • GitHub 帐户和 GitHub Copilot 订阅。 有关如何设置这些帐户的详细信息,请参阅 分别在 GitHub 上创建帐户和 GitHub Copilot 快速入门。

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

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

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

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

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

  3. 使用以下命令调用 azd 编码代理扩展: azd coding-agent config

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

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

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

  5. 片刻之后, azd 编码代理扩展会创建(或使用现有的)用户托管标识并为其分配角色,将标识值存储在 GitHub 存储库环境中,并创建并推送包含生成的 GitHub Actions 工作流安装程序文件的分支。

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

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

    通常有三个任务:

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

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

此时,已成功设置 GitHub Copilot 编码代理,以便将 Azure MCP 服务器用于分配给 GitHub Copilot 编码代理的任何 GitHub 问题,这些代理需要了解 Azure 部署和资源。

例如,假设你想要在部署到 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 fo PostgreSQL 灵活服务器的可用存储层以及进行该更改所需的 Bicep 模板中的设置。

    重要

    请确保在提示中使用“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 将解决你创建的原始问题。