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)