Pular para conteúdo

Aula 19 - Protocolo de Contexto de Modelo (MCP) e Agentes IA 🛠️

Objetivo Pedagógico

Objetivo: Arquitetura de Agentes de IA autônomos com o padrão aberto Model Context Protocol (MCP): Ferramentas (Tool Calling), Recursos (Resources), Prompts e ciclo ReAct (Reason + Act).


📑 1. Fundamentos Teóricos & Análise Técnica

Grandes Modelos de Linguagem isolados são apenas "cérebros sem mãos": conseguem gerar texto, mas não conseguem interagir com o mundo real (não podem ler arquivos no disco, consultar bancos de dados ou disparar chamadas de API).

O Model Context Protocol (MCP), anunciado pela Anthropic em 2024 como padrão aberto, padroniza a comunicação segura e universal entre aplicações de IA (MCP Clients) e ecossistemas de ferramentas locais ou remotas (MCP Servers): 1. Ferramentas (Tools): Funções executáveis com esquemas JSON Schema estritos que o modelo pode decidir chamar (ex: executar_query_sql, criar_issue_github). 2. Recursos (Resources): Fontes estruturadas de dados e arquivos que o servidor MCP expõe de forma padronizada para o agente consumir contextualmente. 3. Padrão ReAct (Reason + Act): Ciclo cognitivo em que o agente: - Pensa (Thought): Analisa o objetivo e formula uma hipótese. - Age (Action): Seleciona e invoca uma ferramenta via MCP. - Observa (Observation): Recebe o retorno da ferramenta e decide se alcançou o objetivo ou se requer novas iterações.

📐 Arquitetura Conceitual & Diagrama de Fluxo

sequenceDiagram
    autonumber
    actor User as Usuário
    participant Agent as Agente IA (Cliente MCP)
    participant LLM as Modelo LLM com Tool Use
    participant MCPServer as Servidor MCP (Ferramentas de Sistema)

    User->>Agent: "Analise os logs de erro do servidor"
    Agent->>LLM: Prompt com Ferramentas MCP Disponíveis
    LLM-->>Agent: Decisão: Invocar Ferramenta `read_log_file(path)`
    Agent->>MCPServer: Chamada JSON-RPC: tools/call { "path": "/var/log/app.log" }
    MCPServer-->>Agent: Retorna conteúdo do arquivo
    Agent->>LLM: Observação dos logs retornados
    LLM-->>Agent: "Encontrei 3 falhas de conexão de banco..."
    Agent-->>User: Resposta consolidada com diagnóstico!

🔍 Pilares e Diretrizes Técnicas

Nesta unidade, aprofundamos os seguintes conceitos fundamentais: - Protocolo JSON-RPC 2.0: Comunicação padronizada bidirecional sobre stdin/stdout ou Server-Sent Events (SSE). - Validação de Ferramentas com JSON Schema: Contratos imutáveis de parâmetros para impedir que o modelo invoque funções com argumentos inválidos. - Segurança e Princípio do Menor Privilégio: Execução de ferramentas em ambientes controlados com permissão explícita do usuário. - Loop Autônomo com Critério de Parada: Prevenção contra laços infinitos de chamadas de ferramentas com contadores máximos de passos.


🛠️ 2. Implementação Prática em Model Context Protocol (MCP) e Agentes Autônomos

Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:

// mcp_tool_definition.json (Definição de Ferramenta no Padrão MCP)
{
  "name": "query_database",
  "description": "Executa uma consulta SQL somente-leitura no banco de dados analítico e retorna registros formatados em JSON.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "query": {
        "type": "string",
        "description": "A consulta SQL no dialeto PostgreSQL (apenas comandos SELECT são permitidos)."
      },
      "limit": {
        "type": "integer",
        "description": "Limite máximo de registros a retornar",
        "default": 20
      }
    },
    "required": ["query"]
  }
}

💡 Análise Passo a Passo do Código

  1. Descrição Semântica Clara: O LLM utiliza a description da ferramenta para raciocinar e decidir quando deve invocá-la.
  2. inputSchema Estruturado: Define os tipos e restrições obrigatórias para o modelo preencher.
  3. Controle de Segurança: A restrição semântica impede a execução de comandos destrutivos como DROP ou DELETE.

🎯 3. Próximos Passos & Sequência Didática