Como o MCP funciona? Por dentro do Claude e dos agentes de IA

O Model Context Protocol parece mágica quando o Claude lê um arquivo ou chama uma API de imagens por conta própria. Este artigo abre essa caixa-preta: hosts, clientes e servidores, o handshake JSON-RPC, ferramentas, recursos e prompts, o loop do agente que repete chamadas de ferramentas e as verificações de segurança que mantêm tudo protegido.

Como o MCP funciona? Por dentro do Claude e dos agentes de IA
Cristian Da Conceicao
Fundador do Picasso IA

Você digita um pedido, o Claude lê um arquivo, consulta um banco de dados ou gera uma imagem, e poucos segundos depois o resultado aparece no chat. Nada dentro dos pesos do modelo sabe como acessar o seu banco de dados. Existe uma camada no meio, e essa camada é o Model Context Protocol, abreviado como MCP. Se você já se perguntou como o MCP funciona nos bastidores, a versão curta é esta: um formato de mensagem compartilhado permite que um aplicativo de IA pergunte a programas externos o que eles podem fazer e depois os chame em nome do modelo. O restante deste artigo acompanha um único pedido desde o primeiro handshake até o resultado final da ferramenta, com formatos reais de mensagem, para que você consiga visualizar cada etapa.

O que o MCP realmente é

O MCP é um padrão aberto apresentado pela Anthropic em novembro de 2024. Ele define como um aplicativo de IA se conecta a ferramentas e dados externos por meio de um único conjunto de regras compartilhadas, em vez de uma integração personalizada para cada par de produtos. Pense em como a USB-C permite que um único cabo sirva a um microfone, a um drive e a um monitor. O MCP cumpre esse papel entre os modelos de linguagem e o software ao redor deles.

O problema que ele resolve

Pilha emaranhada de cabos e carregadores desencontrados sobre uma bancada de carvalho vista de cima

Antes do MCP, cada aplicativo de IA que quisesse ler uma agenda, pesquisar uma base de código ou chamar uma API de imagens precisava de seu próprio código de cola. Com N aplicativos e M ferramentas, as equipes enfrentavam até N × M integrações separadas, cada uma com particularidades diferentes de autenticação, formatos de erro e cronogramas de atualização. Um bug corrigido em um conector não ajudava os outros, e cada novo modelo ou ferramenta multiplicava o trabalho.

Por que um único protocolo vence

Mãos segurando um adaptador universal branco de viagem com vários tipos de plugue

Um protocolo compartilhado muda a conta de N × M para N + M. O autor da ferramenta escreve um servidor. O autor do aplicativo escreve um cliente. Todo o resto se conecta sem código extra.

  • Reuso: um servidor para um banco de dados funciona no Claude Desktop, no Claude Code, em um editor ou em um agente personalizado.
  • Liberdade para trocar: troque o modelo por trás do seu aplicativo e as conexões com as ferramentas continuam funcionando.
  • Isolamento: cada servidor roda como um processo próprio, então uma falha ou um bug fica contido.
  • Consulta em tempo de execução: os clientes perguntam aos servidores o que eles oferecem ao se conectar, então novas ferramentas aparecem sem uma nova versão do host.

💡 Vale lembrar: o MCP não torna um modelo mais inteligente. Ele dá ao modelo a capacidade de agir. O raciocínio continua acontecendo dentro do modelo, e o protocolo apenas leva os pedidos para fora e traz os resultados de volta.

Os três participantes de cada sessão

Um garçom deslizando uma comanda para um chef pela janela de passagem de uma cozinha de restaurante

Imagine um restaurante. A sala de jantar é o host, o garçom é o cliente e cada praça da cozinha é um servidor. O comensal nunca fala com o fogão, e o fogão nunca fala com o comensal. Tudo passa por uma passagem definida, que é exatamente o trabalho que o MCP faz.

Hosts

O host é o aplicativo que você realmente abre: Claude Desktop, Claude Code, um editor com recursos de IA ou um agente que você mesmo escreveu. Ele controla a conversa com o modelo, exibe os pedidos de permissão e decide quais servidores iniciar.

Clientes

Dentro do host, um objeto cliente gerencia uma conexão com um servidor. Se você se conectar a cinco servidores, o host terá cinco clientes. Cada cliente mantém seu próprio estado de sessão, negocia capacidades e traduz as chamadas internas do host em mensagens do protocolo.

Servidores

Um servidor é um pequeno programa que expõe capacidades. Ele pode rodar no seu notebook como um processo filho ou em outra máquina atrás de uma URL. Um pode encapsular um sistema de arquivos, uma conta do GitHub, um banco de dados ou um gerador de imagens.

PapelOnde vivePelo que é responsávelExemplo
HostSeu dispositivo ou um aplicativo na nuvemConversa com o modelo, solicitações de consentimento, inicialização do servidorClaude Desktop, Claude Code
ClientDentro do hostUma conexão e uma sessão por servidorUm objeto de conexão de um SDK do MCP
ServerProcesso local ou URL remotaExpor ferramentas, recursos e promptsUm servidor de sistema de arquivos, um servidor de banco de dados

Por dentro das mensagens do protocolo

Toda conversa entre um cliente e um servidor é um fluxo de mensagens pequenas, repetitivas e previsíveis. Essa previsibilidade é o ponto principal.

JSON-RPC pela rede

Cada mensagem do MCP é JSON-RPC 2.0, o que dá ao protocolo exatamente três formatos de mensagem:

  • Um pedido traz um id e um method, e espera uma resposta.
  • Uma resposta repete esse id e traz um result ou um error.
  • Uma notificação não tem id e não espera nada em troca.

Veja uma chamada de ferramenta no trajeto do cliente para o servidor:

{
  "jsonrpc": "2.0",
  "id": 7,
  "method": "tools/call",
  "params": {
    "name": "generate_image",
    "arguments": { "prompt": "a lighthouse at dawn, 35mm film", "aspect_ratio": "16:9" }
  }
}

E a resposta correspondente:

{
  "jsonrpc": "2.0",
  "id": 7,
  "result": {
    "content": [{ "type": "text", "text": "Generation accepted. predict_id: abc123" }],
    "isError": false
  }
}

O id compartilhado é como o cliente associa uma resposta à sua pergunta, mesmo quando várias chamadas estão em andamento ao mesmo tempo.

O handshake, em ordem

Duas pessoas apertando as mãos do outro lado de uma mesa de reunião de madeira clara

Antes que qualquer ferramenta seja executada, cliente e servidor combinam como vão conversar. A sequência é curta e sempre a mesma:

  1. initialize (pedido): o cliente envia a versão do protocolo que deseja, as capacidades que suporta e seu próprio nome e versão.
  2. initialize (resposta): o servidor responde com a versão que vai usar, as próprias capacidades e instruções escritas opcionais para o modelo.
  3. notifications/initialized: o cliente confirma, e a sessão está aberta.
  4. tools/list, resources/list, prompts/list: o cliente pergunta o que o servidor oferece, limitado às capacidades que ambos os lados declararam.
  5. Tráfego normal: chamadas, leituras e, de vez em quando, um notifications/tools/list_changed quando um servidor adiciona ou remove uma ferramenta durante a sessão.

💡 Incompatibilidade de versão: se um servidor não suportar a versão que o cliente pediu, ele responde com uma que suporta. O cliente aceita essa versão ou se desconecta de forma limpa.

stdio ou Streamable HTTP

Vista de baixo para cima de um corredor silencioso de data center entre racks de servidores

As mesmas mensagens JSON-RPC podem viajar por dois transportes oficiais.

Com o stdio, o host inicia o servidor como um processo filho e troca JSON delimitado por quebras de linha pela entrada e saída padrão. Os logs precisam ir para a saída de erro padrão, porque um único print na saída padrão corrompe o fluxo. Com o Streamable HTTP, o servidor fica atrás de uma única URL, o cliente envia mensagens por requisições POST, e o servidor responde com JSON simples ou abre uma resposta em streaming quando precisa devolver várias mensagens. O Streamable HTTP substituiu o antigo transporte HTTP mais SSE na revisão da especificação de março de 2025.

CaracterísticastdioStreamable HTTP
Onde o servidor rodaNa sua máquina, como processo filhoEm qualquer lugar acessível por URL
ConfiguraçãoUm comando em um arquivo de configuraçãoUm endpoint implantado
AutenticaçãoHerda as permissões do seu usuárioAutorização baseada em OAuth
Usuários típicosDesenvolvedores individuais, ferramentas locaisEquipes, serviços hospedados, conectores compartilhados
Clientes simultâneosUmMuitos

Uma entrada típica do Claude Desktop para um servidor local fica assim:

{
  "mcpServers": {
    "files": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/projects"]
    }
  }
}

Ferramentas, recursos e prompts

Painel de ferramentas de oficina com martelos, chaves e alicates pendurados em contornos pintados

Os servidores expõem três blocos de construção. Eles se diferenciam principalmente por quem decide quando usá-los.

PrimitivoControlado porFinalidadeExemploMétodos
FerramentasO modeloExecutar uma ação ou um cálculogenerate_image, run_querytools/list, tools/call
RecursosO aplicativoFornecer contexto somente leituraUm arquivo, o esquema de um banco de dadosresources/list, resources/read
PromptsO usuárioOferecer modelos reutilizáveisUm comando "revise este pull request"prompts/list, prompts/get

Ferramentas fazem coisas

Uma ferramenta tem um name, um description e um inputSchema escrito em JSON Schema. A descrição é o que o modelo de fato lê quando decide se deve chamar a ferramenta, então uma descrição vaga gera chamadas erradas ou ausentes. Escreva-a como um manual curto para um colega que nunca viu o seu sistema.

Conectores reais mostram bem esse padrão. O conector PicassoIA do claude.ai expõe ferramentas como generate_image, edit_image, generate_video_picassoia, generate_video_seedance, get_generation e list_models. Uma ferramenta de geração devolve um id de predição imediatamente, e o modelo então chama get_generation repetidas vezes até que o status mostre succeeded. É assim que um único pedido do usuário vira várias chamadas de ferramenta encadeadas, e o protocolo nunca precisou de um recurso especial para isso.

Recursos fornecem contexto

Os recursos são endereçados por URI, como file:///project/README.md. O host decide quais anexar à conversa, e resources/read devolve o conteúdo com um tipo MIME. Os servidores também podem publicar modelos de recurso com parâmetros, e os clientes podem assinar alterações para que o contexto continue atualizado.

Prompts empacotam fluxos de trabalho

Os prompts são modelos que o usuário aciona de propósito, geralmente como comandos de barra. Um prompt pode receber argumentos e devolver um conjunto pronto de mensagens, para que uma equipe possa criar uma vez a sua melhor redação de "resuma este incidente" ou "escreva as notas de versão" e reutilizá-la em todo lugar.

O que acontece quando o Claude chama uma ferramenta

Engenheiro desenhando três caixas unidas por setas circulares em um quadro branco grande

Aqui está a parte que as pessoas mais erram: o modelo nunca fala MCP. Quem fala é o host. O Claude vê apenas as definições das ferramentas no formato de uso de ferramentas dele e emite pedidos estruturados. O resto é encanamento.

Da pergunta à chamada de ferramenta

  1. Você pede. "Redimensione a foto principal e salve na pasta do meu projeto."
  2. O host envia o contexto. Ele encaminha sua mensagem e as definições de ferramentas reunidas de todos os servidores conectados para a API do modelo.
  3. O Claude decide. Em vez de um texto final, ele retorna um bloco tool_use que indica uma ferramenta e seus argumentos.
  4. O host verifica o consentimento. Ele pode exibir uma solicitação de aprovação e depois encaminha a chamada ao cliente dono dessa ferramenta.
  5. O cliente chama o servidor. Uma requisição tools/call é enviada, o servidor faz o trabalho e retorna blocos content.
  6. O host informa o resultado. O resultado vai para o Claude como um bloco tool_result, junto com a conversa até aqui.
  7. O Claude continua. Ele chama outra ferramenta ou escreve a resposta final.

Onde vive o loop do agente

As etapas de 3 a 7 se repetem até que o Claude pare de pedir ferramentas. Essa repetição é o loop do agente, e ele vive no host, não no protocolo. O MCP define as portas. O host decide quantas vezes atravessá-las. Um agente de IA é simplesmente um host que executa esse loop com planos mais longos, menos interrupções e, às vezes, agentes auxiliares próprios.

💡 Custo oculto: cada definição de ferramenta ocupa espaço na janela de contexto. Cinquenta ferramentas podem consumir milhares de tokens antes que a primeira palavra da sua pergunta seja lida. Bons hosts carregam os esquemas sob demanda ou permitem desligar servidores por projeto.

Segurança e permissões

Cadeado pesado de latão em uma corrente galvanizada sobre um portão de madeira desgastada

Um servidor que pode executar comandos ou mexer em arquivos é poderoso, e é exatamente por isso que precisa de proteções.

O consentimento vem primeiro

A especificação pede que os hosts obtenham o consentimento explícito do usuário antes de invocar ferramentas ou compartilhar dados, e os hosts maduros cumprem isso com solicitações de aprovação e listas de permissão por ferramenta. Lembre-se de que um servidor stdio local roda com as permissões do seu usuário, então trate a instalação de um deles como trataria a instalação de qualquer programa. Os servidores remotos adicionam OAuth, que permite conceder acesso restrito e revogá-lo depois.

Pontos comuns de falha

  • Injeção de prompt por meio de resultados: uma página web, um chamado ou um e-mail devolvido por uma ferramenta pode conter texto que tenta dar novas ordens ao modelo.
  • Descrições de ferramenta envenenadas: um servidor malicioso pode esconder instruções dentro das próprias descrições.
  • Credenciais amplas demais: um token que pode apagar tudo acabará sendo usado para apagar tudo. Prefira acesso somente leitura.
  • Saída padrão poluída: prints de depuração em um servidor stdio quebram o fluxo JSON.
  • Ferramentas demais: com dezenas disponíveis, o modelo escolhe a errada com mais frequência. Mantenha cada servidor focado.
  • Trabalhos longos: uma única chamada que roda por dez minutos sofre timeout. Devolva um id e deixe o modelo consultar o status, como fazem os geradores de imagem e vídeo.

Use o Claude Sonnet 5 no PicassoIA

Se você quer criar o seu próprio servidor, o Claude Sonnet 5 no PicassoIA é um parceiro de programação prático. Ele foi feito para tarefas de programação em várias etapas e uso de ferramentas, e lê imagens, então uma captura de tela de um erro funciona como entrada.

  1. Abra a página do modelo. Acesse a página do Claude Sonnet 5 na coleção de modelos de linguagem (LLM).
  2. Escreva o prompt. Este é o único campo obrigatório. Seja específico sobre a linguagem, o SDK e a ferramenta que você quer.
  3. Defina o esforço. O padrão é low, que pula o pensamento estendido para respostas rápidas. Aumente para um bug que atravessa vários arquivos.
  4. Ajuste os limites. max_tokens tem 8192 como padrão, e um system_prompt opcional fixa um papel ou estilo de código para a sessão.
  5. Anexe uma imagem, se for útil. O campo image aceita uma captura de tela, e max_image_resolution (padrão de 0,5 megapixel) mantém tudo leve.
  6. Gere e revise. Copie o código para o seu projeto e teste com o MCP Inspector antes de confiar nele.

Um prompt que funciona bem:

Write a minimal MCP server in TypeScript using the official SDK. It exposes one tool,
word_count, that takes a string and returns the number of words. Use the stdio transport
and log only to stderr. Include the claude_desktop_config.json entry to register it.

O PicassoIA também fala MCP por conta própria. O conector dele no claude.ai lista quatro modelos: PicassoIA Image, PicassoIA Image Editor Pro, PicassoIA Video e Seedance 2.5 Lite, que gera vídeo com áudio. As predições são assíncronas, e uma conta pode executar cinco por vez somando todas as suas conexões, então mantenha cada lote pequeno. Consulte a página de preços para ver o que o seu plano inclui.

Crie seus próprios visuais hoje

Designer em uma mesa comprida de madeira editando uma fotografia de paisagem sob a luz dourada do fim da tarde

Por trás de cada momento fluido de "Claude, crie uma imagem para mim" existe um handshake, um esquema e um loop. A forma mais rápida de sentir isso é produzir algo. Abra o PicassoIA Image e descreva uma cena, mude para o Seedream 4.5 ou para o FLUX 2 Pro para um visual diferente, e depois entregue o resultado ao Seedance 2.0 para transformar uma imagem fixa em um clipe curto. Conecte o conector do PicassoIA ao Claude e você pode pedir tudo isso em linguagem simples, e então acompanhar as chamadas de ferramenta deste artigo acontecendo em tempo real.

Escolha uma ideia das seções acima, escreva uma única frase sobre o que você quer ver e execute. Sua primeira imagem está a alguns segundos de distância em picassoia.com.

Compartilhe este artigo

Escolha seu idioma