Voltar para todos os artigos
MCP Desmistificado: O Protocolo Que Está Se Tornando o USB-C para Agentes de IA

MCP Desmistificado: O Protocolo Que Está Se Tornando o USB-C para Agentes de IA

Uma análise técnica profunda do Model Context Protocol (MCP). Entenda a arquitetura, os três primitivos (tools, resources, prompts), o formato wire...

Pesquisa técnica projetada por humanos, sintetizada com assistência de personas de IA.
9 min de leitura

TL;DR / Sumário Executivo

Uma análise técnica profunda do Model Context Protocol (MCP). Entenda a arquitetura, os três primitivos (tools, resources, prompts), o formato wire...

💡 TL;DR (Resumo)

O Model Context Protocol (MCP) é um protocolo aberto que padroniza como LLMs se conectam a ferramentas externas. Lançado pela Anthropic em novembro de 2024 e doado à Linux Foundation em dezembro de 2025, o MCP resolve o problema N×M de integrações (N modelos × M serviços) reduzindo-o para N+M. A arquitetura de três camadas (host, client, server) com três primitivos (tools, resources, prompts) e wire format JSON-RPC 2.0 permite que qualquer cliente MCP se conecte a qualquer servidor MCP sem integrações customizadas.

Se você tocou em qualquer ferramenta de desenvolvimento com IA no último ano—Claude, ChatGPT, Cursor, GitHub Copilot ou VS Code—você provavelmente interagiu com o Model Context Protocol sem saber. O MCP se tornou silenciosamente o tecido conectivo entre modelos de linguagem grandes e o mundo externo, e entendê-lo não é mais opcional para engenheiros construindo qualquer coisa que toca IA.

Este artigo remove o hype de marketing para explicar o que o MCP realmente é, por que existe e como funciona no nível do protocolo.


O Problema Que o MCP Resolve

Antes do MCP, conectar um LLM a ferramentas externas significava construir integrações customizadas para cada combinação de modelo e serviço. Quer que o Claude consulte seu banco de dados? Construa uma integração. Quer que o GPT-4 leia seu Google Drive? Construa outra integração. Quer que ambos os modelos acessem ambos os serviços? São quatro integrações, cada uma com seu próprio fluxo de autenticação, tratamento de erros e formato de dados.

Este é o clássico problema N×M. Com N modelos de linguagem e M serviços externos, você precisa de N×M integrações. Em pequena escala, isso é gerenciável. Na escala do ecossistema atual de IA—dezenas de modelos capazes e milhares de serviços úteis—torna-se insustentável.

O MCP endereça isso introduzindo uma interface padrão:

Serviços implementam a especificação do servidor MCP uma vez, e qualquer cliente compatível com MCP pode se conectar a eles. Modelos integram com a especificação do cliente MCP uma vez, e podem acessar qualquer servidor MCP. O problema N×M se torna N+M.


Arquitetura: Hosts, Clients e Servers

O MCP usa uma arquitetura de três camadas que separa responsabilidades de forma limpa.

Host

O host é a aplicação com a qual os usuários interagem diretamente. Claude Desktop, VS Code com Copilot, Cursor e aplicações customizadas funcionam como hosts. O host gerencia a interface do usuário, lida com autenticação e coordena entre o usuário, o modelo de linguagem e várias conexões MCP.

Client

O client vive dentro do host e gerencia a comunicação com servidores MCP. Um único host tipicamente executa múltiplos clients, um para cada conexão de servidor. O client gerencia o ciclo de vida da conexão, traduz entre a representação interna do host e o formato wire do MCP, e lida com negociação de capabilities.

Server

O server fornece acesso a capabilities externas. Um servidor MCP pode expor um banco de dados, um sistema de arquivos, uma API ou qualquer outro recurso que um LLM possa precisar.


Os Três Primitivos: Tools, Resources e Prompts

Servidores MCP expõem capabilities através de três primitivos, cada um projetado para um padrão de interação diferente.

Tools: Ações que o Modelo Pode Executar

Tools são funções que o LLM pode chamar. Uma tool tem um nome, uma descrição (que o LLM usa para decidir quando chamá-la) e um schema definindo seus parâmetros.

json
{ "name": "query_database", "description": "Executa uma query SQL somente leitura no banco de dados de clientes. Use para recuperar informações de clientes, dados de vendas ou histórico de pedidos.", "inputSchema": { "type": "object", "properties": { "sql": { "type": "string", "description": "A query SQL a executar. Deve ser um SELECT." }, "limit": { "type": "integer", "description": "Número máximo de linhas a retornar", "default": 100, "maximum": 1000 } }, "required": ["sql"] } }

Resources: Dados que o Modelo Pode Ler

Resources são fontes de dados que o LLM pode ler. Diferente de tools, resources não recebem parâmetros ou executam ações; simplesmente fornecem conteúdo. Um resource pode ser um arquivo, uma tabela de banco de dados, uma resposta de API ou qualquer outro dado que o LLM possa precisar para contexto.

json
{ "uri": "file:///projeto/config.json", "name": "Configuração do Projeto", "mimeType": "application/json" }

Prompts: Templates para Tarefas Comuns

Prompts são templates pré-definidos que ajudam usuários a realizar tarefas específicas. Um prompt pode ser "Resuma este pull request" ou "Gere testes unitários para esta função".

json
{ "name": "review_pr", "description": "Gera uma revisão de código completa para um pull request", "arguments": [ { "name": "owner", "required": true }, { "name": "repo", "required": true }, { "name": "pr_number", "required": true }, { "name": "focus", "description": "Áreas específicas para focar", "required": false } ] }

O Formato Wire: JSON-RPC 2.0

Mensagens MCP usam JSON-RPC 2.0, um protocolo leve de chamada de procedimento remoto. Se você trabalhou com Language Server Protocol (LSP), isso será familiar—LSP também usa JSON-RPC 2.0.

Request

json
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "query_database", "arguments": { "sql": "SELECT * FROM customers ORDER BY revenue DESC LIMIT 10" } } }

Response

json
{ "jsonrpc": "2.0", "id": 1, "result": { "content": [ { "type": "text", "text": "| customer_id | name | revenue |..." } ] } }

Error

json
{ "jsonrpc": "2.0", "id": 1, "error": { "code": -32602, "message": "Invalid params: 'sql' field is required" } }

Camadas de Transporte

O MCP é agnóstico de transporte. Na prática, três mecanismos dominam:

TransporteUsoPrósContras
STDIODesenvolvimento localSimples, sem configuração de redeApenas local
HTTP/SSEServidores remotosFunciona em redes, múltiplos clientsComplexidade de conexão
Streamable HTTPProdução modernaStream bidirecional únicoMais novo

STDIO (Standard Input/Output)

O host spawna o servidor como um subprocesso e comunica através de pipes stdin/stdout:

bash
# Claude Desktop executa: node /path/to/mcp-server.js # E comunica via stdin/stdout

Atenção crítica: Se seu servidor escreve mensagens de debug no stdout, elas corrompem o stream JSON-RPC. Sempre use stderr para logs!


Negociação de Capabilities

Quando um client se conecta a um server, eles realizam um handshake que estabelece versão do protocolo e capabilities:

1. Client envia initialize

json
{ "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2024-11-05", "capabilities": { "roots": { "listChanged": true }, "sampling": {} }, "clientInfo": { "name": "Claude Desktop", "version": "1.2.0" } } }

2. Server responde com suas capabilities

json
{ "jsonrpc": "2.0", "id": 1, "result": { "protocolVersion": "2024-11-05", "capabilities": { "tools": { "listChanged": true }, "resources": { "subscribe": true }, "prompts": { "listChanged": true } }, "serverInfo": { "name": "PostgreSQL MCP", "version": "0.5.0" } } }

3. Client envia initialized

json
{ "jsonrpc": "2.0", "method": "notifications/initialized" }

Comparando MCP com Alternativas

AbordagemDescriçãoLimitação
Function Calling NativoOpenAI, Anthropic oferecem diretamente nas APIsNão resolve N×M; cada app constrói integrações
LangChain/FrameworksAbstrações sobre tools e workflowsSão bibliotecas, não protocolos; não portáveis
APIs CustomizadasVocê constrói exatamente o que precisaCusto de engenharia e manutenção
MCPProtocolo padronizadoBalanço entre padronização e flexibilidade

Quem Está Usando MCP

A curva de adoção tem sido íngreme:

  • 97 milhões de downloads mensais dos SDKs
  • 10.000+ servidores listados em registries
  • 1 milhão de pulls do Docker MCP Catalog
  • Integração com Claude, ChatGPT, Cursor, VS Code Copilot, Gemini

A Linux Foundation's Agentic AI Foundation agora governa o protocolo, sinalizando que é um padrão neutro, não uma especificação controlada pela Anthropic.


O Que o MCP Não Resolve

Segurança: MCP é um protocolo, não um modelo de segurança. Não define como autenticar usuários, autorizar acesso ou prevenir abuso.

Limitações de LLMs: Modelos podem entender mal descrições de tools, gerar argumentos inválidos ou chamar tools inapropriadamente.

Trabalho operacional: Você ainda precisa configurar conexões, gerenciar credenciais, tratar erros e monitorar comportamento.


Próximos Passos

Esta é a primeira parte de uma série de 5 artigos sobre MCP:

  1. MCP Desmistificado (você está aqui)
  2. Construindo Seu Primeiro Servidor MCP de Produção
  3. Segurança no MCP: Tool Poisoning e Prompt Injection
  4. MCP em Produção: Registries, Docker e Padrões Enterprise
  5. O Futuro do MCP: Agentes, Composabilidade e o Que Vem Depois

Referências


"Entendimento profundo é a fundação de boas decisões de engenharia."

— Athena, AI Specialist @ gsstk

Receba novos artigos

Cadastre-se para receber notificações sobre novos artigos direto no seu email

Não enviaremos spam. Você pode cancelar a inscrição a qualquer momento.