07-01-01 — MCP: Arquitetura e Origem
TL;DR
O Model Context Protocol (MCP) é um padrão aberto lançado pela Anthropic em novembro de 2024 que resolve um problema clássico de integração: como fazer qualquer LLM conversar com qualquer ferramenta sem escrever glue-code custom para cada par. A analogia oficial é o "USB-C para IA" — uma porta universal. A arquitetura é client-server com três primitivas (tools, resources, prompts) e transporte via Streamable HTTP ou stdio. Em menos de 6 meses virou padrão de facto — Microsoft, Google, OpenAI e mais de 1.000 servidores na comunidade.
Contexto: o problema antes do MCP
Antes do MCP, cada integração entre um LLM e uma ferramenta externa (banco de dados, API, filesystem) exigia código custom em ambos os lados. Se você queria que o Claude acessasse o Jira e o GitHub simultaneamente, precisava de dois adaptadores diferentes, mantenidos por você, quebrando a cada atualização de API. Com N modelos e M ferramentas, o problema escalava para N×M integrações.
Antes do USB-C, cada fabricante tinha seu conector proprietário. O MCP faz o mesmo para IA: define uma interface padrão para que qualquer cliente (host) se conecte a qualquer servidor (ferramenta) sem adaptadores customizados.
Origem: Anthropic, novembro de 2024
A Anthropic publicou a especificação inicial do MCP em 25 de novembro de 2024, junto com SDKs em Python e TypeScript e servidores de referência para sistemas populares (filesystem, GitHub, Slack, Postgres, etc.). A decisão de tornar o protocolo aberto — ao invés de proprietário — foi deliberada: o objetivo era criar um ecossistema, não um moat.
A especificação completa está disponível em modelcontextprotocol.io/specification.
Arquitetura: três camadas
O MCP define três roles principais:
- Host: a aplicação que o usuário opera (Claude Desktop, Cursor, VS Code). É quem inicia conexões MCP.
- Client: componente dentro do host que mantém conexão 1:1 com um server MCP.
- Server: processo que expõe capacidades ao LLM via três primitivas.
As três primitivas
1. Tools (Ferramentas)
Funções que o LLM pode invocar. São o equivalente das function calls do OpenAI, mas padronizadas. Cada tool tem nome, descrição e schema JSON de input/output. O LLM decide quando chamar; o server executa e retorna o resultado.
Exemplos: create_issue, query_database, send_email.
2. Resources (Recursos)
Dados que o server expõe para leitura — análogos a arquivos ou endpoints REST. O LLM pode requisitar um resource para incluir no contexto. Resources têm URI único (file:///path, db://table/rows) e podem ser texto, binário ou blob.
Exemplos: conteúdo de um arquivo, resultado de uma query, página de documentação.
3. Prompts
Templates de prompt reutilizáveis, parametrizados, que o server disponibiliza. Permitem que o server encode comportamentos complexos (ex: "revisar PR seguindo nossas convenções") que o host pode invocar com um clique.
A distinção prática: Tools têm efeitos colaterais (escrevem, executam, chamam APIs). Resources são somente leitura — o LLM lê para ter contexto, não para agir.
Transporte: Streamable HTTP e stdio
O MCP suporta dois modos de transporte:
- stdio: comunicação via stdin/stdout. Ideal para servers locais rodando como processo filho. É o modo padrão em Claude Desktop.
- Streamable HTTP (anteriormente SSE): o server expõe um endpoint HTTP. O client usa SSE para receber streams. Ideal para servers remotos ou serviços cloud. Introduzido na spec v2025-03-26 como substituto do HTTP+SSE anterior.
O protocolo em detalhe: JSON-RPC 2.0
Todas as mensagens MCP são JSON-RPC 2.0 — um padrão simples de request/response bidirecional. O lifecycle de uma sessão é:
- Initialize: client envia capabilities; server responde com suas capabilities (lista de tools, resources, prompts).
- Operation: troca de mensagens — o LLM decide chamar uma tool; client envia
tools/call; server executa e retorna. - Shutdown: encerramento limpo da sessão.
Segurança e trust model
O MCP é deliberadamente minimalista em segurança no nível do protocolo — a responsabilidade fica no host e no server. Pontos críticos para uma empresa .NET:
- Servers MCP rodando localmente têm acesso ao filesystem do usuário — cuidado com servers de terceiros.
- O host deve exibir consentimento explícito antes de instalar ou conectar a um server.
- Para ambientes corporativos, prefira servers remotos via Streamable HTTP com autenticação OAuth 2.0 (suportado na spec).
Ataques de prompt injection via tool descriptions maliciosas são um vetor real. Um server MCP malicioso pode colocar instruções ocultas nas descrições das suas tools que manipulam o comportamento do LLM. Nunca instale servers MCP de fontes não confiáveis em ambientes corporativos.
Adoção: de 0 a padrão de facto em 6 meses
Em abril de 2025, a Microsoft anunciou suporte nativo ao MCP no Copilot Studio, VS Code e Azure. O OpenAI anunciou suporte em março de 2025. Hoje (abril 2026), o repositório oficial lista mais de 1.000 servers MCP na comunidade, e o protocolo é suportado nativamente em Claude, GPT-4o, Gemini, Mistral e todos os principais modelos.