🔌 O que é MCP
Model Context Protocol (MCP) é o padrão aberto da Anthropic para conectar agentes a ferramentas externas de forma padronizada e plug-and-play. Assim como USB eliminou o caos de conectores proprietários, MCP padroniza como agentes se conectam a qualquer ferramenta.
🔌 A analogia USB é precisa
Antes do MCP (sem padrão)
- ✗Cada agente implementa integração customizada para cada ferramenta
- ✗Tool de Slack para Claude ≠ Tool de Slack para GPT-4
- ✗Reescrever integrações quando troca de LLM
Com MCP
- ✓Servidor MCP de Slack funciona com qualquer cliente MCP
- ✓Troca de LLM sem reescrever as integrações
- ✓Ecossistema de servidores MCP prontos para usar
📊 Adoção em 2026
- •Claude Code, Claude Desktop e Claude API suportam MCP nativamente
- •Cursor, Windsurf e outros IDEs AI-first adotaram o protocolo
- •Repositório oficial MCP-servers tem 100+ servidores prontos (GitHub, Postgres, Slack, Jira...)
- •OpenAI anunciou suporte ao protocolo — se tornando padrão de indústria
🏗️ Arquitetura servidor/cliente
A arquitetura MCP tem dois papéis: o Servidor MCP expõe tools (funcionalidades) via protocolo padronizado, e o Cliente MCP (seu agente) descobre e chama essas tools. A comunicação pode ser local (stdio) ou remota (HTTP).
Arquitetura completa
Cliente MCP
Seu agente (Claude, LangChain, qualquer framework)
Descobre tools automaticamente na inicialização
JSON-RPC 2.0
stdio ou HTTP+SSE
Servidor MCP
Expõe tools, resources e prompts via protocolo
Pode ser Postgres, Slack, GitHub, sua API...
Transport: stdio
O servidor roda como processo filho do cliente. Comunicação via stdin/stdout. Ideal para servidores locais (mesmo computador).
# config no cliente
{"command": "python", "args": ["meu_server.py"]}
Transport: HTTP + SSE
O servidor roda como serviço web independente. Client conecta via HTTP. Ideal para produção, múltiplos clientes simultâneos.
# config no cliente
{"url": "https://meu-server.com/mcp"}
🗃️ Conectando banco de dados via MCP
Usando o servidor MCP oficial de Postgres, você conecta qualquer agente ao seu banco de dados em minutos. O agente passa a poder executar queries, listar tabelas e analisar dados em linguagem natural — sem nenhum código extra no agente.
Configuração em 3 passos
Instale o servidor MCP de Postgres
npm install -g @modelcontextprotocol/server-postgres
Configure no arquivo de settings do cliente
{"mcpServers": {"postgres": {
"command": "mcp-server-postgres",
"args": ["postgresql://user:pass@localhost/mydb"]
}}}
Pronto — o agente agora pode interagir com o banco
Usuário: "Quais são os 10 clientes com maior valor em aberto?" → Agente chama query_postgres automaticamente.
⚠️ Segurança obrigatória no MCP de banco
- •Use usuário de banco com permissão apenas READ-ONLY (SELECT)
- •Nunca exponha connection string com usuário admin
- •Limite as tabelas visíveis via schema restrito
- •Logue todas as queries executadas pelo agente
🌐 Conectando APIs externas
Qualquer API REST pode ser encapsulada como servidor MCP. Você define as tools (endpoints) com seus schemas e o agente passa a chamar a API naturalmente, como se fosse uma função interna — sem código de integração no agente.
Exemplo: wrapper de API REST como MCP server
from mcp.server import Server
from mcp.server.models import InitializationOptions
import httpx
server = Server("minha-api-crm")
@server.tool()
async def buscar_cliente(cliente_id: str) -> str:
"""Busca dados completos de um cliente pelo ID no CRM."""
async with httpx.AsyncClient() as client:
response = await client.get(
f"https://api.meucrm.com/customers/{cliente_id}",
headers={"Authorization": f"Bearer {API_KEY}"}
)
return response.json()
# O schema é gerado automaticamente dos type hints e docstring!
Casos de uso populares
- • CRM (Salesforce, HubSpot)
- • Ticket system (Jira, Linear)
- • Email (Gmail API)
- • Calendário (Google Calendar)
Benefícios do approach MCP
- • Escrito uma vez, usado por múltiplos agentes
- • Auth centralizado no servidor MCP
- • Versionado independente do agente
- • Testável sem o agente
OpenAPI → MCP
- • Ferramentas que convertem OpenAPI spec para servidor MCP automaticamente
- • Reduz implementação manual para APIs com swagger
🤖 MCP no Claude Code
Claude Code usa MCP nativamente. Ao adicionar um servidor MCP à configuração, o Claude Code descobre automaticamente as tools disponíveis e passa a usá-las em suas respostas — sem nenhuma modificação no código do agente.
Configuração no claude_desktop_config.json
// ~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"postgres": {
"command": "mcp-server-postgres",
"args": ["postgresql://readonly:senha@localhost/prod"]
},
"github": {
"command": "mcp-server-github",
"env": {"GITHUB_TOKEN": "ghp_..."}
},
"meu-crm": {
"command": "python",
"args": ["caminho/para/meu_crm_server.py"]
}
}
}
💡 Como o Claude Code usa as tools MCP
Após adicionar os servidores, reinicie o Claude Code. Ele automaticamente lista as tools disponíveis e as usa quando relevante. Exemplo: com o servidor GitHub configurado, você pode pedir "Abra um PR com estas mudanças" e o Claude Code vai criar o PR diretamente via MCP — sem você copiar e colar código.
🏗️ Criando seu primeiro servidor MCP
Com o SDK oficial do MCP em Python, você cria um servidor funcional em menos de 30 linhas. Define ferramentas com decorator, implementa a lógica e registra no cliente. Simples como criar uma função Python.
Servidor MCP mínimo completo
#!/usr/bin/env python3
"""pip install mcp"""
import asyncio
from mcp.server import Server
from mcp.server.stdio import stdio_server
server = Server("meu-primeiro-servidor")
@server.tool()
async def saudacao(nome: str) -> str:
"""Gera uma saudação personalizada para o nome fornecido.
Use quando precisar cumprimentar alguém formalmente."""
return f"Olá, {nome}! Bem-vindo ao sistema de agentes."
@server.tool()
async def calcular_desconto(preco: float, desconto_percent: float) -> str:
"""Calcula o preço final após aplicar desconto percentual."""
preco_final = preco * (1 - desconto_percent / 100)
return f"Preço com {desconto_percent}% de desconto: R$ {preco_final:.2f}"
if __name__ == "__main__":
asyncio.run(stdio_server(server))
# Execute: python meu_server.py
# Teste: npx @modelcontextprotocol/inspector python meu_server.py
O que o SDK gera automaticamente
- ✓JSON Schema da tool a partir dos type hints Python
- ✓Description da tool a partir da docstring
- ✓Tool discovery endpoint para o cliente
- ✓Serialização/deserialização de parâmetros
Testando com MCP Inspector
O MCP Inspector é uma UI para testar seus servidores MCP sem precisar de um agente:
npx @modelcontextprotocol/inspector
python meu_server.py
Abre UI web para chamar tools manualmente e ver resultados
✅ Resumo do Módulo 2.6
Próximo Módulo:
2.7 — Primeiro Agente Real com LangChain: AgentExecutor vs. LCEL, memória, tools e projeto completo de assistente de email com código funcional.