sexta-feira, 3 de outubro de 2025

MCP — Model Context Protocol (visão geral)

 MCP — Model Context Protocol (visão geral)

└─ 📡 Mensageria

   ├─ Protocolo: JSON-RPC 2.0 (UTF-8), requests/responses/notifications, id, errors

   └─ Bidirecional: cliente e servidor podem iniciar chamadas (não é só cliente→servidor)


└─ 🚚 Transportes padronizados

   ├─ stdio

   │  ├─ Uso: processos locais (IDE, desktop)

   │  ├─ Simples de iniciar, baixo atrito, ótimo p/ dev

   │  └─ Limitações: acoplado a um processo; observabilidade/escala exigem wrappers

   └─ Streamable HTTP

      ├─ Uso: servidor independente, multi-cliente, sessões stateful

      ├─ Cliente→Servidor: HTTP POST/GET

      ├─ Servidor→Cliente: streaming (substitui o antigo “HTTP+SSE”)

      └─ Prós: rede/observabilidade, reconexão, OAuth; Contras: infra extra


└─ 🧩 Primitivas do MCP (o que um server expõe)

   ├─ tools      → funções acionáveis (ex.: sql.query, github.issue.create)

   ├─ resources  → pedaços de contexto/dados (ex.: arquivos, blobs, documentos)

   └─ prompts    → templates/slots prontos p/ hosts/agentes reutilizarem


└─ 🧭 Descoberta/negociação (sem “manifesto”)

   ├─ initialize / capacidade e versões

   ├─ tools/list  / resources/list  / prompts/list

   └─ tools/call  / resources/read  / prompts/get (execução ou leitura)


└─ 🗂️ “Manifesto” (quando entra)

   ├─ NÃO é parte obrigatória do protocolo MCP

   ├─ É convenção de HOSTS específicos (ex.: Claude Desktop Extensions)

   │  └─ Pacote .mcpb = zip com “servidor local + manifest.json” (como instalar/iniciar)

   └─ Serve p/ empacotar e distribuir servers locais 1-click (UX do host)


└─ 🧠 Papéis e relação com apps de IA

   ├─ host   → coordena 1..N clientes e sessão (IDE/chat/orquestrador)

   ├─ client → “conexão” do host para um único server

   └─ server → processo MCP que oferece tools/resources/prompts


└─ 🧷 Multi-MCP (duas abordagens)

   ├─ A) Host que já agrega N servidores

   │   └─ Ex.: LangGraph via langchain-mcp-adapters converte MCP→ferramentas do agente

   └─ B) Gateway/Proxy (um endpoint que “reúne” vários)

       ├─ MetaMCP (proxy/orquestrador/middleware, agrega N MCPs como 1 só)

       └─ mcp-proxy (ponte stdio⇆Streamable HTTP; útil p/ OAuth, rede e bridges)


└─ 🧪 Exemplos úteis (prontos p/ testar)

   ├─ GitHub MCP Server

   │  ├─ Local (Docker/CLI) e Remoto (GA, OAuth 2.1 + PKCE; Copilot, Cursor, etc.)

   │  └─ Ferramentas: issues/PRs/gists/discussions, etc.

   ├─ MCP para Postgres

   │  └─ Implementações de comunidade e libs que expõem queries como tools

   └─ (Dica) Combine: Host (LangGraph) + Adapters + Gateway (MetaMCP) + Servers (GitHub/DB)


└─ 🧭 Guia rápido de decisão

   ├─ Só local/IDE?  → stdio

   ├─ Multi-cliente/produção/observabilidade? → Streamable HTTP

   ├─ Precisa agregar N MCPs num único ponto? → Gateway (MetaMCP / proxies)

   └─ Seu host já integra vários MCPs? → Use adapters nativos (ex.: LangGraph)