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.
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
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
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
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.
Papel
Onde vive
Pelo que é responsável
Exemplo
Host
Seu dispositivo ou um aplicativo na nuvem
Conversa com o modelo, solicitações de consentimento, inicialização do servidor
Claude Desktop, Claude Code
Client
Dentro do host
Uma conexão e uma sessão por servidor
Um objeto de conexão de um SDK do MCP
Server
Processo local ou URL remota
Expor ferramentas, recursos e prompts
Um 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:
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
Antes que qualquer ferramenta seja executada, cliente e servidor combinam como vão conversar. A sequência é curta e sempre a mesma:
initialize (pedido): o cliente envia a versão do protocolo que deseja, as capacidades que suporta e seu próprio nome e versão.
initialize (resposta): o servidor responde com a versão que vai usar, as próprias capacidades e instruções escritas opcionais para o modelo.
notifications/initialized: o cliente confirma, e a sessão está aberta.
tools/list, resources/list, prompts/list: o cliente pergunta o que o servidor oferece, limitado às capacidades que ambos os lados declararam.
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
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.
Os servidores expõem três blocos de construção. Eles se diferenciam principalmente por quem decide quando usá-los.
Primitivo
Controlado por
Finalidade
Exemplo
Métodos
Ferramentas
O modelo
Executar uma ação ou um cálculo
generate_image, run_query
tools/list, tools/call
Recursos
O aplicativo
Fornecer contexto somente leitura
Um arquivo, o esquema de um banco de dados
resources/list, resources/read
Prompts
O usuário
Oferecer modelos reutilizáveis
Um 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
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
Você pede. "Redimensione a foto principal e salve na pasta do meu projeto."
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.
O Claude decide. Em vez de um texto final, ele retorna um bloco tool_use que indica uma ferramenta e seus argumentos.
O host verifica o consentimento. Ele pode exibir uma solicitação de aprovação e depois encaminha a chamada ao cliente dono dessa ferramenta.
O cliente chama o servidor. Uma requisição tools/call é enviada, o servidor faz o trabalho e retorna blocos content.
O host informa o resultado. O resultado vai para o Claude como um bloco tool_result, junto com a conversa até aqui.
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
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.
Abra a página do modelo. Acesse a página do Claude Sonnet 5 na coleção de modelos de linguagem (LLM).
Escreva o prompt. Este é o único campo obrigatório. Seja específico sobre a linguagem, o SDK e a ferramenta que você quer.
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.
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.
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.
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
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.