Voltar as noticias
MCP Sem Estado Recapturou Meu Interesse
MCP ProtocolAltaEN

MCP Sem Estado Recapturou Meu Interesse

Simon Willison (Atom)·31 de julho de 2026

Terça-feira foi o dia do MCP sem estado - o lançamento do MCP 2.0, ou a especificação do Modelo de Contexto do Protocolo de 2026-07-28 para usar o nome mais formal, mas menos memorável. Esta é a mudança mais significativa na especificação do MCP desde seu lançamento inicial e também serviu para reacender meu interesse pessoal no protocolo.

Para contextualizar: MCP é o Protocolo de Contexto do Modelo, que descreve uma maneira padrão de expor novas ferramentas para frameworks de agentes alimentados por LLM. Foi introduzido pela Anthropic em novembro de 2024, teve um enorme pico de interesse durante grande parte de 2025 e, em seguida, foi um tanto eclipsado por Skills (outra invenção da Anthropic) quando se tornou aparente que um agente com acesso a um terminal e curl poderia fazer a maioria das coisas que o MCP fazia de uma maneira mais flexível. Eu escrevi sobre isso na minha revisão de 2025.

Estou voltando ao MCP agora. Dar a um agente um ambiente de shell com a capacidade de acessar a internet é repleto de riscos e requer um modelo forte que seja capaz de conduzir efetivamente tal ambiente. As ferramentas do MCP são mais fáceis de auditar e controlar, e simples o suficiente para que modelos menores que rodam em um laptop ainda possam utilizá-las razoavelmente bem.

A nova especificação do MCP sem estado também diminui muito a complexidade de implementar tanto clientes quanto servidores para o protocolo. Eu construí três deles esta semana!

O que é mais fácil com o MCP sem estado

A melhor demonstração da diferença entre o MCP com estado e o MCP sem estado está neste post do blog de 21 de maio que introduziu o RC para a nova especificação. Ele incluiu um exemplo claro de antes e depois.

O MCP com estado mais antigo (vou chamá-lo de "MCP legado") exigia duas requisições HTTP - a primeira para inicializar uma sessão e obter um Mcp-Session-Id, e a segunda para realmente chamar a ferramenta:

POST /mcp HTTP/1.1
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-11-25",
    "capabilities": {
    },
    "clientInfo": {
      "name": "my-app",
      "version": "1.0"
    }
  }
}

POST /mcp HTTP/1.1
Mcp-Session-Id: 1868a90c-3a3f-4f5b
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "search",
    "arguments": {
      "q": "lontras"
    }
  }
}

A nova maneira sem estado usa uma única requisição HTTP que se parece com isto:

POST /mcp HTTP/1.1
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: search
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search",
    "arguments": {
      "q": "lontras"
    },
    "_meta": {
      "io.modelcontextprotocol/clientInfo": {
        "name": "my-app",
        "version": "1.0"
      }
    }
  }
}

Isso é muito mais limpo tanto do ponto de vista da implementação do cliente quanto do servidor. Também é uma melhor adequação para construir aplicações web escaláveis, já que agora você não precisa manter o estado do lado do servidor para acompanhar esses IDs de sessão, ou se preocupar em direcionar a mesma sessão para a mesma máquina de backend.

mcp-explorer

Eu não consegui encontrar uma boa ferramenta CLI para sondar interativamente um servidor MCP, então pedi ajuda ao Codex para construir a minha própria.

mcp-explorer é o resultado. É uma ferramenta CLI Python sem estado, então você nem precisa instalá-la para experimentá-la - ela funciona com uvx assim:

uvx mcp-explorer list https://agentic-mermaid.dev/mcp

Isso consulta a demonstração MCP de Ade Oshineye em agentic-mermaid.dev. O comando acima retorna a seguinte lista de ferramentas:

execute(code: string, timeoutMs?: integer) - Executar código do SDK Mermaid
  Executa JavaScript em um sandbox isolado; retorna um valor.

describe_sdk(family: string, detail?: string) - Descrever operações do SDK Mermaid
  Retorna operações de mutação correspondentes à versão para uma família de diagramas.

render_svg(source: string, options?: object) - Renderizar Mermaid como SVG
  Renderiza uma string de origem do Mermaid em SVG temático. Retorna { ok, svg }.

render_ascii(source: string, useAscii?: boolean, targetWidth?: integer, options?: object) - Renderizar Mermaid como texto
  Renderiza uma string de origem do Mermaid em texto. Retorna { ok, text }.

render_png(source: string, scale?: number, background?: string, fitTo?: object, options?: object) - Rasterizar uma string de origem do Mermaid em PNG
  Rasteriza uma string de origem do Mermaid em PNG. Retorna { ok, png_base64 }.
...

Então, para inspecionar uma ferramenta:

uvx mcp-explorer inspect render_svg

Isso gera uma série de informações, incluindo o esquema JSON das entradas e saídas.

Para chamar essa ferramenta e passar argumentos para ela:

uvx mcp-explorer call \
  https://agentic-mermaid.dev/mcp \
  render_svg \
  -a source 'graph TD; A-->B' \
  -a options '{"padding":24}'

O que retorna:

{"ok":true,"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=...

Para obter apenas o SVG bruto, tente adicionar | jq .svg -r a esse comando. Eu recebi esta imagem:

SVG de um A em cima de um B com uma seta de A para B

Existem mais alguns comandos no README, mas você entendeu a ideia geral. Eu acho que construir ferramentas CLI como essa é uma maneira realmente produtiva de se familiarizar com uma especificação, mesmo que um agente escreva a maior parte do código real.

datasette-mcp

O segundo projeto é datasette-mcp, um plugin do Datasette que adiciona um endpoint /-/mcp a qualquer instância do Datasette.

Esta é provavelmente a quarta vez que tento construir este plugin, mas graças à nova especificação do MCP sem estado, finalmente tenho uma versão que parece boa para ser lançada.

Ele fornece apenas três ferramentas: list_databases(), get_database_schema(database_name) e execute_sql(database_name, sql). Elas fazem exatamente o que você esperaria que fizessem - embora execute_sql() seja somente leitura por enquanto.

Conecte isso a um agente, ou a uma ferramenta de chat como ChatGPT ou Claude, e eles ganharão a capacidade de executar consultas SQL contra sua instância do Datasette hospedada.

Até agora, estou executando isso no espelho do Datasette do meu blog, em datasette.simonwillison.net/-/mcp. Demorou um pouco de ajustes para descobrir como conectar isso ao ChatGPT e ao Claude, mas consegui chegar lá no final. Aqui

Contexto Triplo Up

A nova especificação do MCP 2.0 pode impactar empresas brasileiras ao facilitar a integração de ferramentas de IA em seus sistemas. Com a simplificação na implementação, empresas podem desenvolver soluções mais eficientes e seguras. Isso pode resultar em uma adoção mais ampla de agentes de IA no mercado brasileiro.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.