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 в вашей конфигурации перестает что-либо находить.
Создание ресурсов безопасным по умолчанию
Когда агент создает ресурсы через сервер, значения по умолчанию изменились:
- Учетные записи Storage отключают аутентификацию Shared Key (HTTPS, TLS 1.2 и запрет анонимного доступа к blob остаются включенными).
- Пространства имен Event Hubs отключают локальную аутентификацию.
- Файловые ресурсы NFS по умолчанию используют
RootSquashс шифрованием при передаче. compute vm createиcompute vmss createтребуют--image; псевдонимыWin2019DatacenterиUbuntu2004удалены.
Если нижестоящий код подключается с ключом учетной записи или 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.