Tools mcp

Escopo: transversal. Aplica-se a qualquer linguagem ou stack do projeto.

Sozinho, um modelo de linguagem só produz texto. Tool use (uso de ferramentas) é o mecanismo que dá a ele a opção de chamar funções externas: consultar uma API (Application Programming Interface · Interface de Programação de Aplicações), ler um arquivo, executar código. O MCP (Model Context Protocol · Protocolo de Contexto de Modelo) resolve o problema seguinte: em vez de cada aplicação inventar seu jeito de expor ferramentas ao modelo, todas falam o mesmo protocolo aberto.

Conceitos fundamentais

ConceitoO que é
Tool (ferramenta)Função com schema definido que o modelo pode invocar durante a geração
Function calling (chamada de função)Termo usado pela OpenAI para o mesmo mecanismo de tool use
Tool schema (schema da ferramenta)Definição JSON da ferramenta: nome, descrição, parâmetros e tipos
Tool result (resultado da ferramenta)Resposta da função devolvida ao modelo para continuar o raciocínio
Parallel tool calls (chamadas paralelas)Capacidade do modelo de invocar múltiplas ferramentas simultaneamente
MCP (Model Context Protocol · Protocolo de Contexto de Modelo)Protocolo cliente/servidor para expor ferramentas, recursos e prompts a modelos de IA
MCP Server (servidor MCP)Processo que expõe ferramentas e recursos seguindo o protocolo MCP
MCP Client (cliente MCP)Componente do harness que conecta ao MCP Server e traduz chamadas para o modelo
Host (hospedeiro)Aplicação que instancia o MCP Client e gerencia a conversa (ex: Claude Code, Cursor)
Transport (transporte)Canal de comunicação entre cliente e servidor: stdio (local) ou Streamable HTTP (remoto)

Tool use: o modelo pede, o harness executa

Quem executa a ferramenta é o seu código. O modelo só escreve um pedido de chamada, e o harness (o programa que hospeda o modelo) cumpre esse pedido e devolve o resultado:

Modelo decide → Retorna tool_call com argumentos → Harness executa a função → Devolve tool_result → Modelo continua gerando

Junto com o prompt, o modelo recebe o schema de cada ferramenta disponível. Com isso em mãos, ele decide se chama alguma e com quais argumentos.

Exemplo de schema em JSON (JavaScript Object Notation · Notação de Objetos JavaScript):

{
  "name": "fetch_product_price",
  "description": "Retorna o preço atual de um produto pelo SKU.",
  "input_schema": {
    "type": "object",
    "properties": {
      "product_id": {
        "type": "string",
        "description": "SKU do produto"
      }
    },
    "required": ["product_id"]
  }
}

Boas práticas no design de ferramentas:

  • Nomes descritivos em snake_case; o modelo usa o nome para decidir quando invocar
  • Descrição precisa: o modelo escolhe a ferramenta lendo a descrição, e o corpo da função fica invisível para ele
  • Parâmetros com nomes de domínio (não tipos técnicos)
  • Uma responsabilidade por ferramenta (princípio da responsabilidade única)

Parallel tool calls deixa o modelo pedir várias ferramentas no mesmo turno, quando uma chamada não depende do resultado da outra. As três chamadas abaixo rodam ao mesmo tempo, e o modelo espera uma volta só em vez de três:

Modelo[fetch_weather("SP") | fetch_weather("RJ") | fetch_weather("BH")]3 resultados → Gera resposta

MCP: um protocolo único para expor ferramentas

O MCP foi criado pela Anthropic e publicado como padrão aberto em novembro de 2024 (spec atual: 2025-11-25). Ele padroniza a conversa entre o modelo e o ambiente externo, do mesmo jeito que o HTTP (HyperText Transfer Protocol · Protocolo de Transferência de Hipertexto) padronizou a conversa entre navegador e servidor. Um servidor MCP escrito uma vez serve qualquer host que fale o protocolo.

Arquitetura

Host (Claude Code, Cursor, VS Code)MCP Client[transport]MCP ServerFerramentas / Recursos / Prompts

O MCP Server expõe três tipos de capacidades:

TipoO que oferece
ToolsFunções invocáveis pelo modelo (ex: executar query SQL, ler arquivo, chamar API)
ResourcesDados que o harness pode injetar no contexto (ex: conteúdo de arquivo, resultado de query)
PromptsTemplates de prompt reutilizáveis expostos pelo servidor

Transportes

TransportCanalIndicação
stdiostdin/stdout do processo filhoMCP Server local (mesmo host)
Streamable HTTPHTTP com streaming; substituiu SSE em março de 2025MCP Server remoto (cloud, serviço separado)

O stdio roda o servidor como processo filho do host e conversa pela entrada e saída padrão, sem rede no meio. O Streamable HTTP atende o servidor que vive em outra máquina.

Exemplo de configuração (Claude Code)

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
    }
  }
}

Cada entrada de mcpServers é um processo que o host sobe com o comando declarado. O argumento final passa o escopo: a pasta que o servidor de filesystem pode ler, a URL do banco que o servidor de postgres pode consultar.

Adoção

O MCP é suportado por Claude Code, Cursor, VS Code Copilot, Zed, Windsurf e centenas de servidores públicos no registro oficial. Servidores populares cobrem: filesystem, banco de dados (PostgreSQL, SQLite), Git, GitHub, Slack, Notion, Browserbase e Docker.

Quando usar MCP e quando bastam ferramentas próprias

AspectoTool use diretoMCP
PadronizaçãoPor provedor / SDKProtocolo único e universal
ReusoReimplementar por aplicaçãoUm servidor, múltiplos clientes
DescobertaManualServidores autodescrevem capacidades
IndicaçãoFerramentas simples e específicas de um appFerramentas reutilizáveis entre múltiplos hosts

A pergunta que decide é quantos lugares vão usar a ferramenta. Uma função que só faz sentido dentro de um app se resolve com tool use direto. Uma ferramenta que vários hosts vão querer chamar compensa o servidor MCP.

DoDocs v3.7.0 · Desenvolvido por @thiagocajadev · Baseado no trabalho de pmndrs/docs · Poimandres.