07-01-01 — MCP: Arquitetura e Origem

⏱ 15 minFontes validadas em: 2026-04-29

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.

💡 A analogia USB-C

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.
graph LR User["👤 Usuário"] --> Host["Host (Claude Desktop / VS Code)"] Host --> Client1["MCP Client"] Host --> Client2["MCP Client"] Client1 --> Server1["MCP Server\n(GitHub)"] Client2 --> Server2["MCP Server\n(Postgres)"] Server1 --> GitHub["API GitHub"] Server2 --> DB["Banco de Dados"]

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.

💡 Tools vs Resources

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 é:

  1. Initialize: client envia capabilities; server responde com suas capabilities (lista de tools, resources, prompts).
  2. Operation: troca de mensagens — o LLM decide chamar uma tool; client envia tools/call; server executa e retorna.
  3. 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).
⚠️ MCP Tool Poisoning

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.

Como isso se conecta

  • 07-01-02: como MCP está integrado no Claude Desktop, Cursor e VS Code na prática
  • 07-01-03: o ecossistema Microsoft inteiro construído sobre MCP
  • 07-01-04: construa seu próprio MCP server em Python ou TypeScript
  • 07-02-02: entenda o que MCP não resolve — e como A2A complementa

Fontes

  1. Model Context Protocol — Introduction (modelcontextprotocol.io)
  2. MCP Specification — modelcontextprotocol.io
  3. Anthropic — Introducing the Model Context Protocol (nov/2024)
  4. MCP Architecture — Core Concepts (modelcontextprotocol.io)
  5. MCP Transports — Streamable HTTP and stdio (modelcontextprotocol.io)