Sobre o projeto

O Iris é um servidor MCP (Model Context Protocol) de código aberto projetado para avaliar saídas de agentes de IA em qualidade, segurança e custo. Ele roda inteiramente na sua máquina, armazena rastros em um banco SQLite local e não requer conta, SDK ou telemetria. O projeto é licenciado sob MIT e requer Node.js 20 ou posterior. Os recursos principais incluem registro de rastros com árvores de spans hierárquicas, latência por chamada de ferramenta, uso de tokens e rastreamento de custo em USD. A avaliação de saída usa 20 regras determinísticas integradas em quatro categorias: completude, relevância, segurança e custo. As regras de segurança detectam PII (19 padrões, incluindo SSN, cartão de crédito, telefone, e-mail, IBAN, data de nascimento, prontuário médico, IP, chaves de API, passaporte e tokens de provedores de nuvem), injeção de prompt (37 padrões), marcadores de alucinação (25 sinais de fabricação fundamentados no contexto) e violações de trajetória, como chamadas de ferramenta com falha não reconhecidas, chamadas repetidas, argumentos rejeitados por esquema e fontes citadas que o agente nunca leu. Um recurso opcional de juiz LLM fornece pontuação semântica via Anthropic ou OpenAI, com um teto de custo fixo por avaliação (padrão de US$ 0,25). O Iris registra doze ferramentas MCP que qualquer agente compatível com MCP pode invocar: log_trace, evaluate_output, get_traces, list_rules, deploy_rule, delete_rule, delete_trace, evaluate_with_llm_judge, verify_citations, compare_runs, compare_traces e evaluate_runs. A ferramenta verify_citations extrai citações da saída, busca as fontes em um resolvedor protegido contra SSRF e usa um juiz LLM para verificar se cada fonte apoia a afirmação citada. Um painel web é servido em http://localhost:6920, exibindo falhas ordenadas primeiro pelas piores e mais recentes. Ele fornece visualização de rastros, resultados de avaliação, detalhamento de custos e uma paleta de comandos (Cmd+K) para pesquisar regras, rastros e avaliações. O painel também expõe um endpoint de ingestão HTTP (POST /api/v1/traces) para capturar rastros sem um modelo no loop, e um endpoint de capacidades (GET /api/v1/capabilities) que descreve o que o servidor pode julgar. Para integração em CI/CD, o comando de ingestão da CLI lê rastros JSON ou NDJSON da entrada padrão ou de um arquivo, avalia-os, imprime uma linha JSON por rastro com o veredito e sai com código 1 quando um veredito corresponde a um filtro --fail-on. Isso permite bloquear deployments de agentes com base nos resultados da avaliação. Regras personalizadas podem ser criadas inline (até 10 por chamada evaluate_output) ou implantadas persistentemente via deploy_rule. Os tipos de regra incluem regex_match, regex_no_match, min_length, max_length, contains_keywords, excludes_keywords, json_schema e cost_threshold. As regras implantadas persistem em custom-rules.json no diretório inicial do Iris e são acionadas em todo evaluate_output futuro de sua categoria. Os níveis de severidade (baixa, média, alta, crítica) determinam se uma falha de regra reprova a avaliação ou apenas afeta a pontuação. O veredito aprovado é decidido por um compositor que lê cada regra pelo tipo de afirmação que ela faz: políticas configuradas bloqueiam, detectores críticos vetam, verificações críticas que não puderam responder produzem um veredito desconhecido, e os detectores restantes se combinam em uma probabilidade ponderada por uma taxa de perda configurável. Violações genuínas de segurança (no_pii, no_injection_patterns, no_blocklist_words) reprovam por padrão. Toda regra integrada tem precisão, recall e F1 publicados com intervalos de confiança de 95%, medidos em um corpus rotulado no repositório. A CI executa a medição novamente em cada pull request e falha se os números confirmados diferirem do que o código produz. O Iris é local-first: tudo fica em SQLite no disco. HTTP de saída só ocorre onde você opta por participar — sua própria chave de juiz LLM, busca de citações ou um exportador OpenTelemetry que você configurar. O projeto suporta implantação via Docker com duas portas (3000 para transporte MCP HTTP, 6920 para painel e ingestão) e integra-se com Claude Desktop, Claude Code, Cursor, Windsurf, Continue, VS Code, Cline, Zed, Codex CLI, Gemini CLI e qualquer outro agente compatível com MCP.