Start Debugging

Azure MCP Server 3.0 отклоняет неизвестные параметры и создает ресурсы безопасными по умолчанию

Azure MCP Server 3.0.0 вышел 12 октября 2026 года. Вызовы инструментов с неизвестными параметрами теперь завершаются ошибкой, опции вроде subscription и tenant удалены из многих инструментов, новые учетные записи Storage отключают аутентификацию Shared Key, а сервер работает по stateless-протоколу MCP 2026-07-28.

Azure MCP Server 3.0.0 вышел 12 октября 2026 года после 50 бета-сборок. Главное в релизе - множество новых пространств имен (azurebackup, resiliency, sreagent, azureterraform, advisor, iothub), но сломать работающую конфигурацию сегодня может менее заметное изменение: контракты инструментов стали строже, а ресурсы, которые создает сервер, по умолчанию защищены.

Неизвестные параметры теперь вызывают ошибку

В 2.x инструмент молча игнорировал опции, которые не использовал. В 3.0 неиспользуемые параметры, такие как subscription, resource-group, tenant, auth-method, user и sender-name, удалены из инструментов почти во всех пространствах имен (Key Vault, Storage, SQL, Redis, Service Bus, AKS и других), а любой вызов, который их все еще передает, отклоняется. Пользовательские опции политики повторных попыток тоже исчезли; действуют значения по умолчанию из Azure SDK.

Это важно, если вы запускаете azmcp из скриптов или сохранили промпты и инструкции агентов, которые требуют всегда передавать подписку. Вызов, который работал на 2.x:

azmcp keyvault secret get --subscription 00000000-0000-0000-0000-000000000000 \
  --vault my-vault --secret db-password --retry-max-retries 5

теперь не проходит проверку на 3.0: keyvault secret get принимает только --vault и необязательный --secret, а глобальных опций --retry-* больше нет. Уберите их и сверьтесь со справочником команд, чтобы узнать, что на самом деле принимает каждый инструмент. Часть ответов также приведена к именованным объектам ({ servers }, { results }, { guidance }), поэтому парсеры, читающие старые структуры, стоит проверить.

Еще два переименования: monitor healthmodels entity get превратилась в list и get, а код сервера переехал из Azure.Mcp.Core.* в Microsoft.Mcp.Core.*. Категории журнала следуют за пространствами имен, поэтому запись Logging:LogLevel:Azure.Mcp.Core в вашей конфигурации перестает что-либо находить.

Создание ресурсов безопасным по умолчанию

Когда агент создает ресурсы через сервер, значения по умолчанию изменились:

Если нижестоящий код подключается с ключом учетной записи или SAS, подписанным этим ключом, он получит 403 при обращении к только что созданной учетной записи. В этом и смысл: используйте Entra ID и DefaultAzureCredential.

Инструменты database query для MySQL и PostgreSQL изменились в обратную сторону. Теперь они помечены как деструктивные, больше не фильтруют операторы по SQL-глаголу и полагаются на права базы данных вошедшего в систему пользователя. Запускайте сервер с --read-only или используйте учетную запись базы данных только для чтения, если агенту нужно лишь смотреть.

Stateless-протокол и структурированный вывод

3.0 переходит на stateless-протокол MCP 2026-07-28 и сохраняет обратную совместимость с клиентами на 2025-11-25. Если вы не следили за этой ревизией, я описал, что исчезает (нет рукопожатия initialize, нет Mcp-Session-Id), в статье про stateful и stateless MCP-серверы.

Инструменты теперь также могут возвращать outputSchema и structuredContent, включается флагом. С dnx из .NET 10 запись в mcp.json выглядит так:

{
  "mcpServers": {
    "azure-mcp-server": {
      "command": "dnx",
      "args": [
        "Azure.Mcp", "--version", "3.0.0", "--yes", "--",
        "azmcp", "server", "start",
        "--read-only",
        "--structured-output-mode", "compact"
      ],
      "type": "stdio"
    }
  }
}

compact отправляет короткий текст в content и полный результат в structuredContent; duplicated отправляет полный результат в обоих. Включайте это, только если ваш клиент понимает эти поля.

Мелкие исправления, ради которых стоит обновиться

Сообщения журнала и исключения, которые попадали в stdout (и могли испортить вывод JSON-RPC), теперь идут в stderr, ошибки “не найдено” возвращают 404 вместо 500, а обертка npm больше не изменяет package.json вызывающего проекта при автоматической установке платформенного пакета. Явно закрепляйте Azure.Mcp 3.0.0 или @azure/mcp@3.0.0 вместо @latest, пока ваши скрипты и промпты не приведены в порядок.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Назад