Agentes de IA e MCP

O que é MCP? O Model Context Protocol explicado

O Model Context Protocol (MCP) é um padrão aberto para conectar aplicações de IA a ferramentas e dados. Como o MCP funciona, seus blocos de construção e a segurança.

Traduzido do original em inglês. Código, prompts e saídas de modelos são mantidos em inglês.

O Model Context Protocol (MCP) é um padrão aberto que define como as aplicações de IA se conectam a ferramentas e fontes de dados externas. A Anthropic o apresentou em novembro de 2024, e desde então ele foi adotado em assistentes de IA, ferramentas de programação e frameworks de agentes.

O problema que o MCP resolve

Um modelo de linguagem sozinho só consegue produzir texto. Para ser útil no trabalho real, ele precisa ler arquivos, consultar bancos de dados, pesquisar e chamar APIs. Antes do MCP, cada aplicação de IA definia sua própria maneira de conectar tudo isso, então uma ferramenta criada para um assistente tinha de ser refeita para o próximo.

O MCP substitui isso por um único protocolo. Um provedor de ferramentas escreve um servidor MCP uma vez, e qualquer aplicação compatível com MCP pode usá-lo. A comparação comum é com um conector universal: uma tomada padrão em vez de um cabo diferente para cada dispositivo.

Como o MCP funciona

O MCP tem três papéis.

  • Host: a aplicação de IA que a pessoa usa, como um aplicativo de chat, uma IDE ou um agente.
  • Cliente: um componente dentro do host que mantém a conexão com um servidor.
  • Servidor: um programa que expõe capacidades ao host.
Host application (assistant, IDE, agent)
   |  one MCP client per server
   v
MCP server  --->  files, databases, APIs, or pure computation

As mensagens são JSON-RPC 2.0. Quando uma conexão é aberta, cliente e servidor trocam suas capacidades, e o cliente pergunta ao servidor o que ele oferece. O host repassa essas definições de ferramentas ao modelo. Quando o modelo decide usar uma ferramenta, o cliente envia a chamada ao servidor e devolve o resultado.

Os blocos de construção

Os servidores podem oferecer três tipos de capacidade.

Primitiva O que é Quem decide usá-la
Ferramentas (tools) Funções que o modelo pode chamar, com nome, descrição e esquema de entrada O modelo
Recursos (resources) Dados somente leitura identificados por um URI, como um arquivo ou um registro A aplicação ou o usuário
Prompts Modelos de prompt reutilizáveis fornecidos pelo servidor O usuário

As ferramentas são as mais usadas. A definição de uma ferramenta é assim:

{
  "name": "estimate_tokens",
  "description": "Count the tokens in a prompt for a given model.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "prompt": { "type": "string" },
      "model": { "type": "string" }
    },
    "required": ["prompt"]
  }
}

A descrição e o esquema são lidos pelo modelo, então são prompts por si mesmos. Descrições de ferramentas claras são o maior fator para que um agente use uma ferramenta corretamente. Veja os prompts para agentes de IA.

Transportes

O MCP define como as mensagens trafegam.

  • stdio: o host inicia o servidor como um processo local e se comunica pela entrada e saída padrão. Simples, e nada é exposto na rede.
  • HTTP transmitível (Streamable HTTP): o servidor roda como um serviço web que os clientes alcançam por HTTP, o que serve a servidores remotos e compartilhados e traz a autenticação para o escopo.

MCP, chamada de funções e APIs

São camadas, não concorrentes.

  • Uma API é a forma como o software conversa com um serviço.
  • A chamada de funções é a forma como um modelo pede que uma função seja executada.
  • O MCP padroniza como as funções são descritas, descobertas e entregues a qualquer aplicação de IA.

Um servidor MCP muitas vezes envolve uma API existente. Se você só vai atender uma aplicação que controla, a chamada de funções simples basta. O MCP se justifica quando você quer que uma ferramenta funcione com muitos clientes.

Configurando um servidor

Os hosts são configurados com uma lista de servidores a iniciar. Um servidor stdio local precisa de um comando e seus argumentos:

{
  "mcpServers": {
    "promptflow": {
      "command": "node",
      "args": ["/absolute/path/to/packages/mcp-server/dist/bin.js"]
    }
  }
}

Os nomes das chaves variam um pouco entre os hosts, mas a forma é a mesma.

Considerações de segurança

Conectar um modelo a ferramentas é poderoso e amplia a superfície de ataque.

Resultados de ferramentas são entrada não confiável. Um servidor que busca páginas web ou lê tickets devolve texto que um atacante pode ter escrito. O modelo pode seguir instruções contidas nele. Veja a injeção de prompt.

O modelo confia nas descrições das ferramentas. Um servidor malicioso pode descrever uma ferramenta de forma enganosa para direcionar o modelo. Instale servidores apenas de fontes em que você confia e revise o que eles declaram.

Capacidades combinadas multiplicam o risco. Uma sessão que pode ler dados privados, ler conteúdo não confiável e enviar dados para fora pode virar um caminho de exfiltração. Evite dar as três a uma mesma sessão.

Vale o privilégio mínimo. Prefira servidores que façam uma só coisa, use acesso somente leitura quando possível e exija confirmação para ações com efeitos colaterais.

Servidores locais rodam com as suas permissões. Um servidor stdio é um programa na sua máquina. Trate a instalação de um como a de qualquer outro software.

Projetando um bom servidor MCP

  • Ofereça poucas ferramentas, bem nomeadas e com propósitos distintos.
  • Escreva descrições que digam quando usar uma ferramenta e o que ela retorna.
  • Valide cada argumento e retorne erros sobre os quais o modelo possa agir.
  • Mantenha os resultados compactos, pois eles consomem o contexto do modelo.
  • Marque como somente leitura as ferramentas que apenas leem, para que os hosts possam tratá-las de acordo.
  • Nunca retorne segredos em resultados ou logs.

Um exemplo: ferramentas de prompt via MCP

O servidor MCP do PromptFlowEngine é uma pequena ilustração desses princípios. Ele expõe o motor de prompts como ferramentas para analisar, reestruturar, otimizar, comparar e higienizar prompts, além dos catálogos de regras e de modelos como recursos. Usa o transporte stdio, não faz chamadas de rede e não tem acesso a arquivos nem ao shell, então toda ferramenta é somente leitura: ela só pode processar o texto que recebe.

Com ele conectado, um agente pode conferir o próprio trabalho:

Use promptflow to restructure this before you start:
"fix login issue and make google login work and don't break anything"

O agente chama a ferramenta de reestruturação e recebe uma especificação em seções com requisitos, casos extremos e critérios de aceitação, que então implementa. A configuração está na documentação do cliente MCP.

Onde o MCP se encaixa

O MCP é a camada de conexão de um sistema de agentes. O laço de raciocínio que decide quando chamar uma ferramenta é tratado no prompting ReAct, e as instruções que o governam, nos prompts para agentes de IA.