Iris
oficialServidor de avaliação e observabilidade de agentes nativo do MCP com registro de rastreamento, avaliação de qualidade de saída, rastreamento de custos, 12 regras de avaliação integradas, painel em tempo real e detecção de PII
O que você pode fazer com Iris MCP?
- Registrar execuções do agente — Solicite a gravação de uma execução com
log_trace, incluindo spans, chamadas de ferramentas, uso de tokens e custo em USD. - Avaliar a qualidade da saída — Use
evaluate_outputpara verificar completude, segurança e custo em relação a 13 regras integradas. - Consultar o histórico de traces — Recupere execuções armazenadas com
get_traces, filtrando por intervalo de tempo, paginação e outros critérios. - Gerenciar regras personalizadas — Implante novas regras de avaliação com
deploy_ruleou remova-as viadelete_rulepara ajustar a pontuação. - Executar LLM-como-juiz — Invoque
evaluate_with_llm_judgepara pontuação semântica em cinco modelos, com um limite rígido de custo por avaliação. - Verificar citações — Use
verify_citationspara extrair e verificar fontes citadas em relação às afirmações por meio de um juiz LLM.
Documentação
Iris — pare de lançar agentes na base do achismo
O Iris pontua cada execução de agente por qualidade, segurança e custo — na sua máquina, sem SDK e sem conta. A maioria dos projetos de agentes verifica qualidade rodando alguns prompts memorizados e avaliando a saída no olho. O Iris substitui isso por números que você pode auditar: as execuções do seu agente vão para um banco SQLite no seu disco, 13 regras embutidas as pontuam de forma determinística — PII, injeção de prompt, marcadores de alucinação, limites de custo — grátis, sem chamadas de LLM, e um avaliador LLM opcional com teto rígido de custo por avaliação cuida das questões semânticas. Cada regra é inspecionável e editável, porque um avaliador que você não pode auditar é só achismo com número. Licença MIT, sem telemetria; seus traces nunca saem da sua máquina.
Requer Node.js 20 ou posterior. Verifique com node --version.

Uma falha na tela em 60 segundos
Sem conexão com agente, sem configuração — um comando:
npx @iris-eval/mcp-server --demo
Isso popula um banco de demonstração — alguns agentes pequenos com uma semana de execuções — e serve o dashboard apontando para ele em http://localhost:6920 (seu navegador abre automaticamente na primeira execução). O dashboard cai direto em Failures: o que falhou, do pior para o mais recente. Vale clicar — um vazamento de PII capturado pelas regras de segurança, uma tentativa de injeção de prompt sinalizada e uma pontuação de avaliador LLM reprovada com sua justificativa.
Os dados de demonstração ficam em um banco separado (demo.db no seu diretório home do Iris — ~/.iris no macOS/Linux, %USERPROFILE%\.iris no Windows) e nunca se misturam com seus traces reais. Remova tudo com um comando:
npx @iris-eval/mcp-server --demo-clear
Conecte seu próprio agente
Adicione o Iris à sua configuração MCP. Funciona com Claude Desktop, Claude Code, Cursor, Windsurf, Continue, VS Code, Cline, Zed, Codex CLI, Gemini CLI — e qualquer outro agente compatível com MCP. Um bloco, dashboard incluído:
{
"mcpServers": {
"iris-eval": {
"command": "npx",
"args": ["@iris-eval/mcp-server", "--dashboard"]
}
}
}
Seu agente descobre as nove ferramentas do Iris ao conectar, e o dashboard serve em http://localhost:6920.. Agora cole isto no seu agente:
Registre essa última tarefa no Iris e avalie a saída.
O trace aparece no dashboard com suas pontuações. Prefere o servidor MCP sem interface? Remova --dashboard dos argumentos — você pode abrir o mesmo dashboard a qualquer momento com npx @iris-eval/mcp-server --dashboard.
Uma coisa que vale saber desde já: ferramentas MCP são chamadas quando o modelo decide chamá-las. O Iris não intercepta seu agente, então os traces são registrados quando seu agente pede para registrá-los — seja porque você pediu, seja porque seu código chama as ferramentas diretamente. Peça ao seu agente para "registrar isso no Iris e avaliar" e ele fará. Se você quiser captura que não dependa da escolha do modelo, o POST /api/v1/traces faz exatamente isso — seu código envia o trace via HTTP puro, sem modelo no meio (veja docs/http-ingest.md). A CLI e os SDKs no roadmap serão clientes leves sobre o mesmo endpoint.
Captura via HTTP (sem modelo no meio)
Com o dashboard em execução, qualquer coisa que possa enviar uma requisição HTTP pode registrar um trace — e opcionalmente rodar as avaliações determinísticas na mesma requisição:
curl -s -X POST "http://127.0.0.1:6920/api/v1/traces" \
-H "Content-Type: application/json" \
-d '{
"agent_name": "support-bot",
"input": "What is the refund policy?",
"output": "Refunds are available within 30 days of purchase.",
"evaluate": true,
"eval_type": "safety"
}'
Retorna 201 com o trace_id armazenado e o resultado da avaliação. O endpoint aceita o mesmo corpo da ferramenta log_trace e fica atrás do mesmo middleware restrito a loopback do restante do dashboard. Contrato completo, referência de campos e semântica de erros: docs/http-ingest.md.
Verifique a instalação
npx @iris-eval/mcp-server --self-test
Um diagnóstico offline da instalação: round-trip de armazenamento, avaliações determinísticas, dashboard + proteção contra DNS rebinding — tudo dentro de um home temporário isolado, então seu banco real nunca é aberto. Código de saída 0 = saudável, 1 = alguma verificação falhou.
Configuração por ferramenta
Claude Desktop
Edite seu arquivo de configuração MCP:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Adicione a configuração JSON acima e reinicie o Claude Desktop.
Claude Code
claude mcp add --transport stdio iris-eval -- npx @iris-eval/mcp-server
Depois reinicie a sessão (/clear ou reabra) para que as ferramentas carreguem.
Nota para Windows: Não use o wrapper
cmd /c— ele causa problemas de parsing de caminho. O comandonpxfunciona diretamente.
Cursor / Windsurf
Adicione ao .cursor/mcp.json do seu workspace ou às configurações MCP globais usando a configuração JSON acima.
VS Code (MCP nativo)
Adicione ao .vscode/mcp.json no seu workspace (obs.: o VS Code usa servers, não mcpServers):
{
"servers": {
"iris-eval": {
"command": "npx",
"args": ["@iris-eval/mcp-server"]
}
}
}
Cline
Abra o painel de Servidores MCP do Cline → Configure MCP Servers e adicione a configuração JSON mcpServers acima ao cline_mcp_settings.json.
Zed
Adicione ao settings.json do Zed:
{
"context_servers": {
"iris-eval": {
"command": {
"path": "npx",
"args": ["@iris-eval/mcp-server"]
}
}
}
}
OpenAI Codex CLI
Adicione ao ~/.codex/config.toml:
[mcp_servers.iris-eval]
command = "npx"
args = ["@iris-eval/mcp-server"]
Gemini CLI
Adicione a configuração JSON mcpServers acima ao ~/.gemini/settings.json.
Qualquer outra coisa que fale MCP
O Iris é um servidor MCP stdio padrão — um comando npx @iris-eval/mcp-server, sem SDK, sem mudança de código. Se seu cliente suporta MCP, ele suporta o Iris. Os formatos de configuração dos clientes mudam; na dúvida, consulte a documentação MCP do seu cliente e aponte-o para esse comando.
Outros métodos de instalação
# Global install (recommended for persistent data and faster startup)
npm install -g @iris-eval/mcp-server
iris-mcp --dashboard
# Docker — two servers, two ports: 3000 = MCP HTTP transport,
# 6920 = dashboard (which also serves the POST /api/v1/traces ingest endpoint)
docker run -p 3000:3000 -p 6920:6920 -v iris-data:/data ghcr.io/iris-eval/mcp-server
Dica: A instalação global (
npm install -g) armazena traces persistentemente em~/.iris/iris.db. Comnpx, os traces persistem no mesmo local, mas a inicialização é mais lenta devido à resolução de pacotes.
O que você ganha
| Registro de traces | Árvores hierárquicas de spans com latência por chamada de ferramenta, uso de tokens e custo em USD. Armazenados em SQLite, consultáveis instantaneamente. |
| Avaliação de saída | 13 regras embutidas em 4 categorias: completude, relevância, segurança, custo. Detecção de PII (19 padrões: SSN, cartão de crédito, telefone, e-mail, IBAN, data de nascimento, MRN, IP, chave de API, passaporte, além de tokens AWS/Slack/SendGrid/GitHub/Google/npm/DigitalOcean, blocos PEM de chave privada e frases-semente), detecção de injeção de prompt (37 padrões, de frase e estruturais), detecção de saída boilerplate, detecção de alucinação (25 sinais de fabricação/contradição com base no contexto — passe input para fundamentá-los contra o material de origem do agente). Adicione regras personalizadas com esquemas Zod. |
| LLM-como-avaliador | Pontuação semântica opcional via Anthropic ou OpenAI — traga sua própria chave de API. Cinco templates. Teto rígido de custo por avaliação (IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL, padrão $0,25), com preço por avaliação divulgado no resultado. |
| Visibilidade de custo | Custo agregado de todos os agentes em qualquer janela de tempo. Defina limites de orçamento. Receba alertas quando agentes estourarem o orçamento. |
| Dashboard web | Interface em modo escuro em tempo real que cai direto nas falhas, do pior para o mais recente — visualização de traces, resultados de avaliação, detalhamento de custos e uma paleta de comandos (⌘K) que busca nas suas próprias regras, traces e avaliações. |
| Local-first | Tudo fica em SQLite no seu disco. Sem conta, sem cadastro, sem telemetria. HTTP de saída só acontece onde você opta: sua própria chave de avaliador LLM, busca de citações ou um exportador OTel que você configure. |
Para onde isso está indo: o roadmap.
Ferramentas MCP
O Iris registra nove ferramentas que qualquer agente compatível com MCP pode invocar — ciclo de vida completo de regras + traces + LLM-como-avaliador + verificação semântica de citações:
log_trace— Registra uma execução de agente com spans, chamadas de ferramenta, uso de tokens e custoevaluate_output— Pontua a qualidade da saída contra regras de completude, relevância, segurança e custo (heurística, determinística, grátis)get_traces— Consulta traces armazenados com filtragem, paginação e suporte a intervalos de tempolist_rules— Enumera as regras de avaliação personalizadas implantadas (somente leitura)deploy_rule— Registra uma nova regra de avaliação personalizada para que ela seja aplicada em todoevaluate_outputdaquela categoriadelete_rule— Remove uma regra personalizada implantada (destrutivo, idempotente)delete_trace— Remove um único trace armazenado por ID (destrutivo, com escopo por tenant)evaluate_with_llm_judge— Avaliação semântica via LLM (Anthropic ou OpenAI). Cinco templates: precisão, utilidade, segurança, correção, fidelidade. Com teto de custo e preço por avaliação divulgado. Traga sua própria chave de API (IRIS_ANTHROPIC_API_KEYouIRIS_OPENAI_API_KEY) — o Iris não faz proxy nem retransmite chamadas de LLM.verify_citations— Extrai citações da saída (numeradas, autor-ano, URLs, DOIs), busca as fontes por trás de um resolvedor protegido contra SSRF e com allowlist de domínios, e usa um avaliador LLM para verificar se cada fonte realmente sustenta a afirmação citada. HTTP de saída opt-in. Mesmo requisito BYOK que oevaluate_with_llm_judge.
Quando IRIS_OTEL_ENDPOINT está configurado, chamadas de log_trace também emitem uma exportação OTLP/HTTP JSON best-effort para qualquer coletor OpenTelemetry (Jaeger, Grafana Tempo, Datadog OTLP, Honeycomb, etc.). Veja docs/otel-integration.md.
Como o passed é decidido
evaluate_output retorna tanto um score quanto uma flag passed — eles respondem perguntas diferentes:
score(0..1) é a média ponderada das regras que foram executadas — um gradiente de qualidade.passedé o veredito liberar/não liberar:truesomente quando a pontuação ultrapassa o limite de aprovação (padrão 0,7) e nenhuma regra crítica falhou.
Violaçõões reais de segurança reprovam automaticamente. no_pii, no_injection_patterns e no_blocklist_words são regras críticas: se uma falhar, a avaliação reporta passed: false não importa quão bem as outras regras pontuaram, e a resposta nomeia os culpados em critical_failures. Um SSN vazado não pode ser diluído pela média. Regras personalizadas implantadas com severity: "high" ou "critical" reprovam da mesma forma; severidades low/medium afetam apenas a pontuação. Um limite que vale conhecer: uma regra crítica que pulou (contexto ausente ou qualquer outra causa de skip) não julgou a saída e não tem poder de veto — rule_results mostra cada skip e seu motivo, para que um gate que precise falhar fechado em não-vereditos possa fazer isso.
Uma pegadinha para gates de CI: se você omitir eval_type, o bundle padrão completeness é executado — as regras de segurança não são. A resposta ecoa eval_type (mais um note quando foi aplicado o padrão) para que seu gate possa verificar qual bundle realmente rodou. Use passed para o veredito e eval_type: "safety" para a cobertura.
Esquemas completos das ferramentas e configuração: iris-eval.com
Recursos hospedados
O Iris roda inteiramente na sua máquina hoje, e tudo o que ele faz é gratuito e licenciado sob MIT, sem limites e sem conta.
Armazenamento hospedado, histórico compartilhado de equipe e alertas estão em consideração, não em construção. Não há preço, e nada para comprar. Se histórico compartilhado fosse útil para você, a lista de espera é como descobrimos se vale a pena construir — ela não compromete você a nada.
Dois compromissos valem independentemente: nada que é gratuito hoje será colocado atrás de paywall, e nenhuma certificação de conformidade será reivindicada antes de ser obtida.
Exemplos
- Configuração do Claude Desktop — configuração MCP para modos stdio e HTTP
- TypeScript — cliente SDK MCP — conecte e invoque ferramentas
- Transporte HTTP (TS + Python) — código completo de cliente para integração estilo REST
- Instrumentação LangChain (Python, conceitual) — scaffold mostrando a forma; precisa do seu código de agente executável
- Instrumentação CrewAI (Python, conceitual) — scaffold; mesma ressalva
Comunidade
- GitHub Issues — Relatórios de bugs e solicitações de recursos
- GitHub Discussions — Perguntas e ideias
- Contributing Guide — Como contribuir
- HTTP Ingest — Captura determinística de traces via
POST /api/v1/traces - Roadmap — O que vem a seguir
Configuração e Segurança
Argumentos de CLI
| Flag | Default | Descrição |
|---|---|---|
--transport | stdio | Tipo de transporte: stdio ou http |
--port | 3000 | Porta do transporte HTTP |
--db-path | ~/.iris/iris.db | Caminho do banco de dados SQLite |
--config | ~/.iris/config.json | Caminho do arquivo de configuração |
--api-key | — | Chave de API para autenticação HTTP |
--dashboard | false | Habilitar painel web |
--dashboard-port | 6920 | Porta do painel |
--dashboard-host | 127.0.0.1 | Endereço de bind do painel. Loopback por padrão — o painel não é autenticado a menos que --api-key esteja definido, então vincular além do loopback expõe todo o seu histórico de traces |
--demo | false | Semear um banco de dados de demonstração (separado dos seus traces reais) e servir o painel a partir dele |
--demo-clear | false | Excluir o banco de dados de demonstração e sair |
--self-test | false | Executar o diagnóstico de instalação offline em um home temporário isolado e sair (0 = saudável, 1 = uma verificação falhou) |
Variáveis de Ambiente
| Variável | Descrição |
|---|---|
IRIS_TRANSPORT | Tipo de transporte (stdio ou http) |
IRIS_PORT | Porta do transporte HTTP |
IRIS_HOST | Host do transporte HTTP (padrão 127.0.0.1) |
IRIS_HOME | Diretório para todos os arquivos por usuário: config.json, iris.db, custom-rules.json, audit.log, preferences.json (padrão ~/.iris) |
IRIS_DB_PATH | Caminho do banco de dados SQLite (substitui IRIS_HOME apenas para o banco de dados) |
IRIS_LOG_LEVEL | Nível de log: debug, info, warn, error |
IRIS_DASHBOARD | Habilitar painel web (true/false; false também substitui dashboard.enabled no config.json) |
IRIS_DASHBOARD_PORT | Porta do painel (padrão 6920) |
IRIS_DASHBOARD_HOST | Endereço de bind do painel (padrão 127.0.0.1) |
IRIS_API_KEY | Chave de API para autenticação HTTP |
IRIS_ALLOWED_ORIGINS | Origens CORS permitidas separadas por vírgula |
As flags de CLI têm precedência sobre as variáveis de ambiente quando ambas estão definidas.
Segurança
Ao usar o transporte HTTP, o Iris inclui:
- Autenticação por chave de API com comparação segura em tempo
- CORS restrito a localhost por padrão
- Limitação de taxa (600 req/min na API do painel, 20 req/min no MCP)
- Cabeçalhos de segurança Helmet
- Validação de entrada Zod em todas as rotas
- Regex seguro contra ReDoS para regras de avaliação personalizadas
- Limites de corpo de solicitação de 1MB
# Production deployment
iris-mcp --transport http --port 3000 --api-key "$(openssl rand -hex 32)" --dashboard
Solução de problemas
Primeiro passo: execute o autoteste
npx @iris-eval/mcp-server --self-test
Ele verifica o armazenamento, as avaliações determinísticas e o painel em um home temporário isolado e imprime um veredito por etapa — a saída de falha nomeia a etapa quebrada. O código de saída 0 significa que a instalação está saudável.
O Iris não inicia / ERR_MODULE_NOT_FOUND
Você pode ter uma versão antiga em cache. Limpe o cache do npx e tente novamente:
npx --yes @iris-eval/mcp-server@latest
Ou instale globalmente para evitar problemas de cache por completo:
npm install -g @iris-eval/mcp-server@latest
Ferramentas não aparecendo no Claude Code
As ferramentas MCP só carregam no início da sessão. Após adicionar o iris-eval, reinicie a sessão com /clear ou reinicie o terminal.
Verificação de versão
O Iris registra sua versão na primeira linha de inicialização:
npx @iris-eval/mcp-server --dashboard
# First log line: "Starting Iris MCP server vX.Y.Z"
Para uma instalação global, npm ls -g @iris-eval/mcp-server mostra a versão instalada.
Atualização
# If using npx (clears cache and fetches latest)
npx --yes @iris-eval/mcp-server@latest
# If installed globally
npm update -g @iris-eval/mcp-server
Versão do Node.js
O Iris requer Node.js 20 ou posterior. O Node 18 atingiu o fim da vida útil em abril de 2025 e não é suportado.
node --version # Must be v20.x or v22.x+
Windows: cmd /c não é necessário
O /doctor do Claude Code pode sugerir envolver o npx com cmd /c. Isso não é necessário e causa problemas de análise de caminho. Use npx diretamente:
# Correct
claude mcp add --transport stdio iris-eval -- npx @iris-eval/mcp-server
# Wrong (causes /c to be parsed as a path)
claude mcp add --transport stdio iris-eval -- cmd /c "npx @iris-eval/mcp-server"
Se o Iris for útil para você, considere dar uma estrela no repositório — isso ajuda outras pessoas a encontrá-lo.
Licenciado sob MIT.