MCP vs function calling: qual escolher para sua stack de agents em 2026
Em 2025 a Anthropic lançou o MCP (Model Context Protocol) — um padrão aberto para conectar LLMs a ferramentas/dados externos. Desde 2023 existe o function calling da OpenAI, também adotado por Claude e Gemini. Qual escolher em 2026?
TL;DR
- Function calling: ferramenta simples dentro de cada chamada LLM. Estado mantido pelo seu código.
- MCP: servidor dedicado que mantém estado, autentica, streaming bidirecional. LLM "conecta" ao MCP server.
Function calling — anatomia
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Busca clima atual de uma cidade",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
}
}
}]
r = client.chat.completions.create(
model="gpt-5", messages=[...], tools=tools,
)
# Você decide quando executar, formata resultado, e chama novamente
Simplicidade. Tudo em HTTP stateless. Você controla 100%.
MCP — anatomia
MCP é um servidor separado (pode ser local, process isolado, ou remoto) que expõe:
- Resources: dados que o LLM lê (docs, rows de banco, arquivos)
- Tools: ações que o LLM pode chamar (mandar email, executar SQL)
- Prompts: templates reutilizáveis
# mcp_server.py (pseudocódigo)
@tool("send_email")
def send_email(to: str, body: str):
return smtp.send(to, body)
@resource("users://{id}")
def get_user(id):
return db.query("SELECT * FROM users WHERE id=%s", [id])
# Claude Desktop / Cursor / Cline conectam via stdio ou HTTP
# LLM pede "use mcp_server" e o protocolo negocia auth, caps, discovery
Comparativo direto
| Aspecto | Function calling | MCP |
|---|---|---|
| Estado | Stateless (você mantém) | Stateful (servidor mantém) |
| Auth | Você codifica | Protocol tem auth slot |
| Multi-client | Replicar config por cliente | 1 servidor, N clientes |
| Discovery | Hardcode tools na call | Cliente descobre capabilities |
| Streaming | Limitado | Bidirecional |
| Compatibilidade | Todas OpenAI-compat APIs | Claude Desktop, Cursor, Cline |
Quando usar cada
Function calling 👍
- Tools stateless ("get weather", "search web")
- Integração com LLM via API em backend próprio
- Uso pontual, poucos tools (<10)
- Você quer controle total
MCP 👍
- Compartilhar tools entre múltiplos clientes (Claude Desktop + Cursor + cline)
- Tools com estado complexo (database connection pool, OAuth tokens)
- Discovery automático (novos tools aparecem sem redeploy)
- Dev tools / developer productivity
Brainiall + MCP
Brainiall já tem 3 MCP servers live: Pronunciation, NLP, Image Tools. Qualquer cliente MCP (Claude Desktop, Cline) pode conectar e usar. Veja mais em app.brainiall.com/mcp-servers.
Teste Brainiall API com function calling ou MCP
Ver exemplos