Развертывание локального удаленного сервера Azure MCP и подключение к нему с помощью Copilot Studio

Разверните сервер Azure MCP по протоколу HTTPS в качестве локального удаленного сервера. Эта настройка позволяет агентам ИИ в Microsoft Foundry и Microsoft Copilot Studio безопасно подключаться к средствам MCP и вызывать их с помощью развернутого сервера Azure MCP для выполнения операций Azure. В этой статье рассматривается сценарий подключения Copilot Studio.

Предпосылки

  • Лицензия Power Platform, которая включает в себя:
    • Copilot Studio
    • Power Apps (Приложения Power)
  • Подписка Azure с разрешениями "Владелец" или "Администратор доступа пользователей"
  • Azure Developer CLI (azd)
  • Список областей инструментов Azure MCP Server (пространства имен), которые вы хотите включить (см. azmcp-commands.md). Эталонный шаблон в этой статье использует storage пространство имен.

Шаблон сервера Azure MCP

В этой статье используется шаблон Azure MCP Server — ACA с агентом Copilot Studioazd для развертывания сервера в Контейнеры приложений Azure. Шаблон включает средства хранения и управляемое удостоверение для безопасного доступа к службе хранилища Azure. Интерфейс командной строки разработчика Azure (azd) — это средство с открытым исходным кодом, которое упрощает подготовку и развертывание ресурсов Azure и предлагает краткие команды (azd deploy, azd provisionкоторые сопоставляются с ключевыми этапами в рабочем процессе разработки).

Развертывание сервера Azure MCP

Разверните сервер Azure MCP в приложениях контейнеров Azure:

  1. Клонировать и инициализировать azmcp-copilot-studio-aca-mi шаблон с помощью azd.

    azd init -t azmcp-copilot-studio-aca-mi
    

    При появлении запроса введите имя среды.

  2. Запустите шаблон командой azd up.

    azd up
    

    azd запрашивает следующее:

    • Подписка. Выберите подписку для подготовленных ресурсов (перечисленных ниже).
    • Группа ресурсов: группа ресурсов, в которой необходимо создать ресурсы. На этом шаге можно создать новую группу ресурсов по запросу.

azd использует файлы шаблонов для подготовки следующих ресурсов и конфигураций:

  • Приложение контейнера Azure: запускает сервер Azure MCP и предоставляет пространство имен хранилища.
  • Назначаемое пользователем управляемое удостоверение: управляемое удостоверение с ролью читателя подписок , назначенное приложению-контейнеру и используемое сервером Azure MCP для вызова инструментов.
  • Регистрация приложения Entra (клиент): для пользовательского соединителя Power Apps, чтобы подключиться к удаленному серверу Azure MCP.
  • Application Insights: предоставляет данные телеметрии и мониторинга.

Выходные данные развертывания и конфигурация

  1. После завершения развертывания используйте команду azd для получения переменных среды azd env get-values.

    azd env get-values
    

    Пример выходных данных:

    AZURE_RESOURCE_GROUP="<your-resource-group-name>"
    AZURE_SUBSCRIPTION_ID="<your-subscription-id>"
    AZURE_TENANT_ID="<your-tenant-id>"
    CONTAINER_APP_NAME="<your-container-app-name>"
    CONTAINER_APP_URL="https://azure-mcp-storage-server.<your-container-app-name>.westus3.azurecontainerapps.io"
    ENTRA_APP_CLIENT_CLIENT_ID="<your-client-app-registration-client-id>"
    ENTRA_APP_SERVER_CLIENT_ID="<your-server-app-registration-client-id>"
    
  2. Кроме того, необходимо добавить созданную область API в качестве одного из разрешений регистрации клиентского приложения. Перейдите на портал Azure и найдите регистрацию клиентского приложения с помощью выходного ENTRA_APP_CLIENT_CLIENT_ID значения.

  3. Перейдите в колонку разрешений API и нажмите кнопку "Добавить разрешение".

  4. На вкладке "Мои API" выберите регистрацию приложения сервера и добавьте Mcp.Tools.ReadWrite область.

Вызов инструментов агентом Copilot Studio

Агент Copilot Studio подключается к серверам MCP с помощью пользовательского соединителя.

Настройка пользовательского соединителя

  1. Войдите в Power Apps и выберите среду для размещения пользовательского соединителя.
  2. Создайте новый настраиваемый соединитель с помощью параметра Создать с нуля. Дополнительные сведения о настройке пользовательского соединителя см. в статье "Создание пользовательского соединителя с нуля".
  3. Выполните следующие разделы для каждого шага рабочего процесса создания соединителя.

General

На шаге "Общие ":

  • Укажите описательное имя и описание пользовательского соединителя.
  • Установите Схему в HTTPS.
  • Задайте значение для узла из CONTAINER_APP_URL значения в azd выводе.

Снимок экрана: вкладка

Безопасность

Пропустите шаг "Безопасность" и перейдите к шагу "Определение ".

Definition

  1. Переключите редактор Swagger, чтобы перейти в режим просмотра редактора.

  2. В представлении редактора:

    • Предопубликуйте метод POST в корневом пути с настраиваемым x-ms-agentic-protocol: mcp-streamable-1.0 свойством. Это свойство требуется для взаимодействия пользовательского соединителя с API с помощью протокола MCP.

      Замечание

      См. пример swagger для настраиваемого соединителя в качестве эталонного шаблона.

Снимок экрана редактора Swagger с выбранным корневым методом POST и пользовательским свойством x-ms-agentic-protocol, заданным для mcp-streamable-1.0 для взаимодействия MCP.

Настраиваемый соединитель: безопасность

Вернитесь к шагу "Безопасность ", чтобы настроить проверку подлинности:

Параметр Ценность Примечания.
Тип проверки подлинности OAuth 2.0 Обязательно
Провайдер удостоверений личности Azure Active Directory Обязательно
идентификатор клиента ENTRA_APP_CLIENT_CLIENT_ID из azd output Идентификатор регистрации клиентского приложения
Параметр секрета Использование секрета клиента ИЛИ использование управляемой идентичности См. ниже сведения о настройке
URL-адрес авторизации https://login.microsoftonline.com Значение по умолчанию
Идентификатор клиента AZURE_TENANT_ID из azd output Идентификатор клиента Azure
URL-адрес ресурса ENTRA_APP_SERVER_CLIENT_ID из azd output Идентификатор клиента регистрации приложений сервера (а не URL-адрес)
Вход от имени Включен Обязательно
Объем <ENTRA_APP_SERVER_CLIENT_ID>/.default Формат: {server_client_id}/.default

Настройка параметра секрета:

  • При использовании секрета клиента: создайте секрет клиента в регистрации клиентского приложения (портал Azure). Скопируйте значение секрета и вставьте его в поле секрета клиента.
  • Если используется управляемое удостоверение: продолжайте выполнение оставшихся шагов, пока не будет создан настраиваемый соединитель.

Требование одного клиента: регистрация клиентских и серверных приложений должна находиться в одном клиенте для упрощенной проверки подлинности. Сведения о сценариях между клиентами см. в разделе "Известные проблемы".

Выберите "Создать соединитель " и дождитесь завершения. После создания пользовательский интерфейс отображает URL-адрес для перенаправления, а также управляемое удостоверение, если это было выбрано.

Снимок экрана шага безопасности, показывающий OAuth 2.0 с Azure Active Directory, идентификатором клиента, параметром секрета, идентификатором арендатора, URL-адресом ресурса, областью и включенным входом от имени.

Регистрация приложения: настройка URI перенаправления и учетных данных

  1. На портале Azure добавьте URI перенаправления на веб-платформу в регистрации клиентского приложения.

    Снимок экрана регистрации приложения в портале Azure, на котором показано добавление записи URI перенаправления веб-платформы для потока проверки подлинности пользовательского соединителя.

  2. Если вы выбрали использовать управляемое удостоверение на шаге "Безопасность" , создайте федеративные учетные данные в регистрации клиентского приложения.

    • Выберите другого издателя в качестве сценария.
    • Скопируйте значения issuer и subject из настраиваемого соединителя в поля учетных данных.
    • Укажите описательное имя и описание, а затем нажмите кнопку "Добавить".

    Снимок экрана: форма для создания федеративных учетных данных со значениями издателя и субъекта, вставленными из пользовательского соединителя, плюс названия и поля описания.

Проверить подключение

  1. Откройте пользовательский соединитель, выберите "Изменить" и перейдите на шаг "Тест ".

  2. Выберите любую операцию и нажмите кнопку "Создать подключение".

  3. Войдите с помощью учетной записи пользователя, используемой для доступа к средствам MCP. Может появиться диалоговое окно, запрашивающее согласие или запрос на утверждение администратора. Если вы не уверены, ознакомьтесь с известными проблемами.

    Если вход выполнен успешно, пользовательский интерфейс показывает, что подключение успешно создано. Если во время входа возникла ошибка, ознакомьтесь с известными проблемами и свяжитесь с администратором арендатора для устранения неполадок.

    Снимок экрана: вкладка

Вызов средства Azure MCP в тестовой площадке Copilot Studio

  1. Войдите в Copilot Studio и выберите среду для размещения агента Copilot Studio. Создайте новый агент или используйте существующий.

  2. Откройте сведения об агенте и перейдите на вкладку "Сервис ".

  3. Выберите "Добавить инструмент".

  4. Найдите имя пользовательского соединителя и добавьте его.

  5. После добавления кастомного коннектора агент Copilot Studio пытается перечислить инструменты с сервера MCP. В случае успешного выполнения вы увидите список доступных инструментов в соединителе.

  6. Выберите "Тест", чтобы начать сеанс тестовой игровой площадки.

  7. Поручите агенту вызвать инструмент MCP, например чтобы перечислить учетные записи хранения в подписке.

    Снимок экрана: вкладка Снимок экрана: тестовый сеанс игровой площадки Copilot Studio, где агент возвращает результаты после вызова указанного средства MCP.

Очистите ресурсы

Выполните следующую команду, чтобы удалить ресурсы Azure, созданные этим шаблоном, если они не нужны.

azd down

Замечание

azd Не удается удалить регистрации приложений Entra, созданные этим шаблоном. Удалите регистрации приложений Entra, выполнив поиск ENTRA_APP_CLIENT_CLIENT_ID и ENTRA_APP_SERVER_CLIENT_ID значения на портале Azure, а затем удалите соответствующие регистрации приложений.

Удалите агент Copilot Studio, настраиваемый соединитель Power Apps и подключение для очистки ресурсов Power Platform.

Структура шаблона

Шаблон azd включает следующие модули Bicep:

  • main.bicep — управляет развертыванием всех ресурсов.
  • aca-storage-managed-identity.bicep — создает управляемую идентификацию, назначаемую пользователем.
  • aca-storage-subscription-role.bicep — назначает роль Azure RBAC управляемому удостоверению, самостоятельно назначенному пользователем. По умолчанию используется роль читателя подписок.
  • aca-infrastructure.bicep — развертывает приложение-контейнер, на котором размещен сервер Azure MCP.
  • entra-app.bicep — создание регистрации приложений в Entra.
  • application-insights.bicep — развертывает Application Insights для телеметрии и мониторинга при включении.

Известные проблемы

  • Требование одного тенанта: Настраиваемый соединитель Power Apps не поддерживает проверку подлинности пользователей из нескольких тенантов, поэтому настройте регистрацию клиентского приложения, чтобы принимать только пользователей из своего тенанта.
  • Варианты согласия: во время проверки подлинности пользователь или администратор клиента предоставляет клиентскому приложению доступ к своим данным. Дополнительные сведения см. в интерфейсе предоставления согласия приложения. Вы можете предоставить согласие несколькими способами:
    • Пользователь может предоставить согласие во время входа только для этого пользователя. Политика безопасности арендатора может это заблокировать.
    • Администратор клиента может предоставить согласие всем пользователям в клиенте в регистрации клиентского приложения в колонке разрешений API на портале Azure.
    • Добавьте регистрацию клиентского приложения в качестве предавторизованного клиентского приложения в регистрации серверного приложения на панели Предоставление API на портале Azure.
  • Сценарий между клиентами: если регистрация клиентского приложения и регистрация серверных приложений находятся в разных клиентах, при попытке создать подключение может возникнуть следующая ошибка:
    • Приложение пытается получить доступ к службе "server_app_registration_client_id" (server_app_registration_display_name), для которой организации "client_app_registration_tenant" не хватает учетной записи службы.
    • Решение. Администратор клиента регистрации клиентского приложения должен подготовить субъект-службу для регистрации серверного приложения в этом клиенте:
      az ad sp create --id <server_app_registration_client_id>
      
    • После провизирования снова создайте подключение. Триггеры потока согласия.
  • Если среда Power Apps имеет политику изоляции арендаторов, она блокирует поток данных, когда регистрации клиентских или серверных приложений находятся в разных арендаторах. Узнайте, как добавить правила исключений, чтобы разрешить этот поток данных в ограничениях между клиентами.