Выбор службы Azure для сервера MCP

Вы можете использовать несколько служб Azure для размещения серверов протокола контекста модели (MCP). Это руководство поможет вам выбрать подходящую службу на основе требований рабочей нагрузки, опыта команды и рабочих потребностей.

Замечание

В этой статье сравнивается несколько служб Azure, которые помогут вам принять решение о размещении. Дополнительные сведения о приложениях контейнеров см. в статье MCP-серверы в приложениях контейнеров Azure.

Общие сведения о вариантах размещения

Azure предоставляет пять способов размещения сервера MCP. Каждый вариант предназначен для различных сочетаний гибкости, простоты и изоляции.

Приложения контейнеров Azure (автономные)

Разверните любой создаваемый вами сервер MCP в виде контейнера с входом через HTTP. Контейнерные приложения предоставляют полный контроль над средой выполнения, поддерживают любой язык с использованием MCP SDK и включают такие функции, как автоматическое масштабирование с возможностью уменьшения до нуля, интеграция Dapr и сетевое взаимодействие между службами.

Динамические сессии приложений контейнеров Azure

Используйте пулы сеансов, управляемые платформой, с встроенными средствами MCP для изолированного выполнения кода. Вы не записываете или развертываете код сервера MCP. Платформа предоставляет предопределенные инструменты для Python и shell-среды с изоляцией Hyper-V между сеансами.

Служба приложений Azure

Размещение сервера MCP в службе приложений одним из двух способов.

  • Создайте собственный сервер MCP. Добавьте пакет SDK MCP в новое или существующее веб-приложение и подключите конечную точку MCP вместе с существующими маршрутами. Служба приложений поддерживает развертывание на основе кода без Dockerfile и интегрируется с идентификатором Microsoft Entra для проверки подлинности.
  • Встроенная служба приложений MCP (предварительная версия). Если приложение уже предоставляет REST API с спецификацией OpenAPI 3.x, служба приложений может разместить сервер MCP без кода MCP. Платформа считывает вашу спецификацию, преобразует каждую операцию в инструмент MCP и предоставляет конечную точку MCP по потоковому HTTP. Используйте это, если вы хотите быстро предоставить существующий API клиентам MCP, не принимая зависимости кода от пакета SDK MCP.

Функции Azure

Сопоставление триггеров функций с инструментами MCP с помощью расширения MCP функций Azure. Функции Azure оптимизированы для выполнения без сохранения состояния, функциями, управляемыми событиями, с оплатой за каждую активацию.

Служба Azure Kubernetes (AKS)

Развертывание серверов MCP в качестве стандартных развертываний Kubernetes с помощью входящего трафика HTTP. AKS предоставляет полный доступ к API Kubernetes, поэтому вы можете использовать диаграммы Helm, пользовательские сети (CNI, сетевые политики), сетку служб, пулы узлов GPU и автомасштабирование на основе KEDA. Выберите AKS, когда ваша команда уже управляет кластером Kubernetes или требует возможностей, которые выходят за рамки того, что предоставляет управляемая платформа контейнеров.

Замечание

Контейнерные приложения основаны на Kubernetes и обеспечивают управляемый интерфейс с меньшими эксплуатационными затратами. Если вам нужен прямой доступ к API Kubernetes, пользовательские операторы или имеются существующие вложения в AKS, используйте AKS напрямую. Более широкое сравнение этих служб см. в статье "Сравнение приложений контейнеров" с другими параметрами контейнера Azure.

Сравнение параметров размещения

В следующей таблице приведены основные различия между параметрами размещения.

Рассмотрение Контейнерные приложения (автономные) Контейнерные приложения (сеансы) Служба приложений Функции Azure AKS
Пользовательские инструменты Да Нет (определяется только платформой) Да (создайте свой собственный; или каждая операция OpenAPI становится инструментом со встроенной поддержкой MCP) Да Да
Поддержка языков Любой (контейнеризованный) Только Python и командная оболочка .NET, Python, Node.js, Java (встроенный MCP: любой язык, так как платформа перенаправляется на существующие маршруты HTTP) .NET, Python, Node.js, Java Любой (контейнеризованный)
Транспорт MCP HTTP со способностью потоковой передачи JSON-RPC по протоколу HTTP HTTP со способностью потоковой передачи Расширение MCP или самостоятельный хостинг HTTP со способностью потоковой передачи
Аутентификация Встроенная аутентификация (Microsoft Entra ID) или пользовательская Ключ API (x-ms-apikey) Проверка подлинности службы приложений (Microsoft Entra ID); встроенная mcP также публикует PRM Ключи функций или идентификатор Microsoft Entra Удостоверение рабочей нагрузки Microsoft Entra или настраиваемое
Изоляция Уровень контейнера Hyper-V на сеанс Уровень приложения функциональный уровень Уровень pod и пространства имен
Масштабирование Автоматическое масштабирование версии, масштабирование до нуля Для каждого сеанса, управляемого с использованием пула План службы приложений План потребления или уровня "Премиум" HPA, KEDA, Автомасштабирование кластера
Холодный запуск Да (смягчение с минимальным количеством реплик) Субсекундный (предварительно разогретый пул) Зависит от плана Да (план потребления) Нет (pods всегда запускаются) или Да с KEDA scale-to-zero
Микрослужбы Native (среды, Dapr) нет Ограничено Ограничено Native (обнаружение служб Kubernetes, сетка служб)
Операционные издержки Средний (Dockerfile, реестр) Низкий (управляемый платформой) Низкий (развертывание кода; встроенный MCP наименьший — свойство ARM + спецификация OpenAPI, без кода MCP) Низкий уровень (внедрение функций) Высокий (управление кластерами, обновления, сеть)
Модель ценообразования В секунду на виртуальный ЦП, в секунду на ГиБ-секунду На сеанс (потребление) План службы приложений За выполнение На узел (стоимость виртуальной машины) + плата за управляемый кластер

Выбор по сценарию

Используйте следующее руководство, чтобы сузить решение на основе распространенных шаблонов рабочей нагрузки.

Создание пользовательского сервера MCP с помощью Azure

Рекомендуется: приложения контейнеров Azure (автономные) или Служба приложений Azure

Обе службы позволяют создавать сервер MCP с любым официальным пакетом SDK MCP и предоставлять его через потоковую передачу HTTP. Выберите между ними в зависимости от потребностей в модели развертывания и компонентах.

  • Приложения-контейнеры: предпочитать контейнеры, требуется автомасштабирование с масштабированием до нуля, требуется интеграция Dapr или создание архитектуры микрослужб с несколькими серверами MCP. Для интерактивных клиентов MCP (например, GitHub Copilot) задайте минимальное количество реплик 1, чтобы избежать задержки холодного запуска.
  • Служба приложений: предпочтение отдается развертыванию, основанному на коде, без использования Dockerfile; наличие существующего плана службы приложений; или необходимость в простоте az webapp up.

Учебники:

Запуск изолированного кода для агента ИИ

Рекомендуется: динамические сеансы приложений контейнеров Azure

Пулы сеансов с поддержкой MCP предоставляют изолированные среды Hyper-V для выполнения ненадежного или созданного LLM-кода. Платформа управляет сервером MCP, поэтому вы не записываете или развертываете код сервера. Встроенные средства охватывают сценарии выполнения кода без пользовательской разработки:

  • launchShell: создает новую среду
  • runShellCommandInRemoteEnvironment: выполняет команды оболочки
  • runPythonCodeInRemoteEnvironment: выполняет код Python

Динамические сессии поддерживают предварительно подготовленные экземпляры, поэтому вы не сталкиваетесь с задержкой при холодном запуске.

Учебники:

Добавление MCP в существующее веб-приложение

Рекомендуется: Служба приложений Azure

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

Если существующее приложение выполняется в контейнерных приложениях, следуйте автономным руководствам.

Предоставление существующего REST API в качестве сервера MCP без изменений кода

Рекомендуется: встроенная служба MCP в Служба приложений Azure (предварительная версия)

Если приложение службы приложений уже предоставляет REST API с спецификацией OpenAPI 3.x, платформа может разместить сервер MCP для вас. Вы публикуете спецификацию вместе с приложением, задаёте свойство aiIntegration для ресурса сайта, и платформа предоставляет потоковый HTTP MCP-эндпоинт, который сопоставляет каждую операцию OpenAPI с инструментом MCP. Аутентификация в App Service обеспечивает проверку удостоверения, а платформа публикует метаданные защищённого ресурса, чтобы клиенты MCP могли автоматически завершать поток OAuth.

Используйте встроенный MCP, если вы не хотите принимать код в зависимости от пакета SDK MCP или если требуется, чтобы платформа соответствовала обновлениям протокола MCP.

Создание легковесных конечных точек инструмента на основе событий

Рекомендуется: Функции Azure

Расширение MCP для функций Azure сопоставляет триггеры функций с инструментами MCP. Функции Azure хорошо подходят, когда:

  • Каждое средство является независимым и без отслеживания состояния.
  • Вам нужна цена за каждое выполнение.
  • Вы интегрируете с службой агентов Foundry.

Для интерактивных клиентов MCP используйте план Azure Functions Premium, чтобы избежать задержки холодного запуска в планах типа Consumption.

Запуск нескольких серверов MCP с обменом данными между службами

Рекомендуется: приложения контейнеров Azure (автономные)

Среды контейнерных приложений поддерживают внутреннее обнаружение служб, дополнительный модуль Dapr и управляемые удостоверения для вызовов между службами. Разверните несколько серверов MCP в качестве отдельных контейнерных приложений в одной среде и дайте им возможность безопасно взаимодействовать, не раскрывая внутренние конечные точки в интернете. Контейнерные приложения предоставляют полный контроль над средой выполнения и зависимостями для каждого сервера, но вы управляете образами Dockerfile и контейнера для каждого сервера.

Разверните серверы MCP на существующем кластере AKS

Рекомендуется: Служба Azure Kubernetes (AKS)

Если ваша команда уже управляет кластером AKS, разверните серверы MCP в качестве развертываний Kubernetes с ресурсом Службы и ресурсом Ingress. AKS хорошо подходит, когда:

  • Вы уже запускаете рабочие нагрузки ИИ в AKS и хотите размещать серверы MCP в одном кластере.
  • Вам нужны пулы узлов GPU для моделей ИИ, работающих вместе с серверами MCP.
  • Вам требуется настраиваемая сеть Kubernetes, например Azure CNI, сетевые политики или сетка служб.
  • Требуется автоматическое масштабирование на основе KEDA с помощью точного контроля над триггерами масштабирования.

Используйте стандартный контроллер входящего трафика Kubernetes (например, NGINX, контроллер входящего трафика шлюза приложений Azure или шлюз Istio), чтобы предоставить потоковую конечную точку HTTP сервера MCP. Защитите эндпоинт с помощью удостоверения рабочей нагрузки Microsoft Entra для вызовов между сервисами или настраиваемого посреднического ПО для проверки подлинности.

Гибридный сценарий, в котором вы хотите управлять приложениями контейнеров в собственной инфраструктуре Kubernetes, см. в статье "Приложения контейнеров Azure" в Azure Arc.

Краткое руководство по принятию решений

Используйте следующие вопросы, чтобы сузить выбор:

  1. Требуется ли изолированное выполнение кода для ненадежного или созданного LLM кода? Используйте динамические сеансы приложений контейнеров Azure.
  2. У вас уже есть веб-приложение, работающее в службе приложений? Добавьте MCP SDK в существующее приложение App Service или используйте встроенную функцию MCP App Service (предварительная версия), если ваше приложение уже предоставляет REST API со спецификацией OpenAPI.
  3. Необходимо ли выполнение инструмента с управлением на основе событий для каждого вызова? Используйте функции Azure.
  4. Требуется ли полное управление контейнерами, пользовательские языки или архитектура микрослужб? Использование приложений контейнеров Azure (автономных).
  5. Вы уже выполняете рабочие нагрузки в AKS и нуждаетесь в полном доступе к API Kubernetes? Используйте службу Azure Kubernetes (AKS).
  6. Не знаете, с чего начать? Начните с приложений контейнеров Azure (автономных), что является самым гибким по умолчанию.