Start Debugging

Azure MCP Server 3.0 rejeita parâmetros desconhecidos e cria recursos seguros por padrão

O Azure MCP Server 3.0.0 foi lançado em 12 de outubro de 2026. Chamadas de ferramenta com parâmetros desconhecidos agora falham, opções como subscription e tenant foram removidas de várias ferramentas, novas contas Storage desabilitam a autenticação Shared Key e o servidor fala o protocolo MCP stateless 2026-07-28.

O Azure MCP Server 3.0.0 foi lançado em 12 de outubro de 2026, depois de 50 builds beta. O destaque é uma pilha de novos namespaces (azurebackup, resiliency, sreagent, azureterraform, advisor, iothub), mas o que pode quebrar uma configuração que funciona hoje é mais discreto: os contratos das ferramentas ficaram mais rígidos, e os recursos criados pelo servidor agora vêm protegidos por padrão.

Parâmetros desconhecidos agora são um erro

Na 2.x, uma ferramenta ignorava em silêncio as opções que não usava. A 3.0 remove parâmetros não utilizados como subscription, resource-group, tenant, auth-method, user e sender-name das ferramentas de quase todos os namespaces (Key Vault, Storage, SQL, Redis, Service Bus, AKS e outros) e, em seguida, rejeita qualquer chamada que ainda os envie. As opções personalizadas de política de retry também sumiram; valem os padrões de retry do Azure SDK.

Isso importa se você aciona o azmcp por scripts, ou se tem prompts e instruções de agente salvos que mandam o modelo sempre informar uma subscription. Uma chamada que funcionava na 2.x assim:

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

agora falha na validação da 3.0: keyvault secret get aceita apenas --vault e um --secret opcional, e as opções globais --retry-* não existem mais. Remova-as e consulte a referência de comandos para ver o que cada ferramenta realmente aceita. Alguns payloads de resultado também foram normalizados em objetos nomeados ({ servers }, { results }, { guidance }), então parsers que leem os formatos antigos precisam de uma revisão.

Duas renomeações a observar: monitor healthmodels entity get virou list e get, e o código do servidor passou de Azure.Mcp.Core.* para Microsoft.Mcp.Core.*. As categorias de logger seguem os namespaces, então uma entrada Logging:LogLevel:Azure.Mcp.Core na sua configuração deixa de corresponder a qualquer coisa.

Criação de recursos segura por padrão

Quando um agente cria recursos por meio do servidor, os padrões mudaram:

Se o código downstream se conecta com uma chave de conta ou com um SAS assinado por ela, receberá um 403 em uma conta recém-criada. Esse é o objetivo: use Entra ID e DefaultAzureCredential.

As ferramentas database query de MySQL e PostgreSQL mudaram na direção oposta. Agora são marcadas como destrutivas, não filtram mais instruções pelo verbo SQL e dependem das permissões de banco de dados do usuário autenticado. Execute o servidor com --read-only ou use um login de banco somente leitura se o agente deve apenas consultar.

Protocolo stateless e saída estruturada

A 3.0 passa para o protocolo stateless 2026-07-28 do MCP e mantém compatibilidade com clientes na 2025-11-25. Se você não acompanhou essa revisão, cobri o que desaparece (sem handshake initialize, sem Mcp-Session-Id) em servidores MCP stateful vs stateless.

As ferramentas agora também podem retornar outputSchema e structuredContent, ativados por uma flag. Com o dnx do .NET 10, a entrada do mcp.json fica assim:

{
  "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 envia um texto curto em content e o resultado completo em structuredContent; duplicated envia o resultado completo nos dois. Ative apenas se o seu cliente entender esses campos.

Correções menores que justificam a atualização

Mensagens de log e exceções que vazavam para o stdout (e podiam corromper a saída JSON-RPC) agora vão para o stderr, erros de não encontrado retornam 404 em vez de 500, e o wrapper npm não edita mais o package.json do projeto chamador quando instala automaticamente um pacote de plataforma. Fixe Azure.Mcp 3.0.0 ou @azure/mcp@3.0.0 explicitamente em vez de @latest até que seus scripts e prompts estejam limpos.

Comments

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

< Voltar