Iris

oficial

Servidor de evaluación y observabilidad de agentes nativo de MCP con registro de trazas, evaluación de calidad de salida, seguimiento de costos, 12 reglas de evaluación integradas, panel en tiempo real y detección de PII

¿Qué puedes hacer con Iris MCP?

  • Registrar ejecuciones del agente — Solicita registrar una ejecución con log_trace, incluyendo spans, llamadas a herramientas, uso de tokens y costo en USD.
  • Calificar la calidad de la salida — Usa evaluate_output para verificar integridad, relevancia, seguridad y costo contra 13 reglas integradas.
  • Consultar historial de trazas — Recupera ejecuciones almacenadas con get_traces, filtrando por rango de tiempo, paginación y otros criterios.
  • Gestionar reglas personalizadas — Implementa nuevas reglas de evaluación con deploy_rule o elimínalas mediante delete_rule para ajustar la puntuación.
  • Ejecutar LLM como juez — Invoca evaluate_with_llm_judge para puntuación semántica en cinco plantillas, con un límite estricto de costo por evaluación.
  • Verificar citas — Usa verify_citations para extraer y verificar las fuentes citadas contra las afirmaciones mediante un juez LLM.

Documentación

Iris — deja de lanzar agentes a ciegas

Glama Score Install in Cursor npm version npm downloads GitHub stars CI OpenSSF Scorecard OpenSSF Best Practices License: MIT Docker PulseMCP mcp.so

Iris puntúa cada ejecución de agente en calidad, seguridad y costo — en tu máquina, sin SDK y sin cuenta. La mayoría de los proyectos de agentes verifican calidad ejecutando algunos prompts recordados y evaluando la salida a ojo. Iris reemplaza eso con números que puedes auditar: las ejecuciones de tus agentes caen en una base de datos SQLite en tu disco, 13 reglas integradas las puntúan de forma determinista — PII, inyección de prompts, marcadores de alucinación, umbrales de costo — gratis, sin llamadas a LLM, y un juez LLM opcional con un tope de costo duro por evaluación maneja las preguntas semánticas. Cada regla es inspeccionable y editable, porque un juez que no puedes auditar es solo una corazonada con un número encima. Licencia MIT, sin telemetría; tus trazas nunca salen de tu máquina.

Requiere Node.js 20 o posterior. Verifícalo con node --version.

Iris Dashboard

Un fallo en pantalla en 60 segundos

Sin cableado de agentes, sin configuración — un solo comando:

npx @iris-eval/mcp-server --demo

Esto siembra una base de datos demo — un puñado de agentes pequeños con una semana de ejecuciones — y sirve el panel contra ella en http://localhost:6920 (tu navegador se abre automáticamente en la primera ejecución). El panel aterriza en Fallos: qué falló, primero los peores y los más recientes. Vale la pena hacer clic — una fuga de PII detectada por las reglas de seguridad, un intento de inyección de prompt marcado, y un puntaje fallido del juez LLM con su justificación.

Los datos demo viven en su propia base de datos (demo.db en tu directorio de inicio de Iris — ~/.iris en macOS/Linux, %USERPROFILE%\.iris en Windows) y nunca se mezclan con tus trazas reales. Elimina todo con un solo comando:

npx @iris-eval/mcp-server --demo-clear

Conecta tu propio agente

Añade Iris a tu configuración MCP. Funciona con Claude Desktop, Claude Code, Cursor, Windsurf, Continue, VS Code, Cline, Zed, Codex CLI, Gemini CLI — y cualquier otro agente compatible con MCP. Un bloque, panel incluido:

{
  "mcpServers": {
    "iris-eval": {
      "command": "npx",
      "args": ["@iris-eval/mcp-server", "--dashboard"]
    }
  }
}

Tu agente descubre las nueve herramientas de Iris al conectarse, y el panel sirve en http://localhost:6920. Ahora pega esto a tu agente:

Registra esa última tarea en Iris y evalúa la salida.

La traza aterriza en el panel con sus puntajes. ¿Prefieres el servidor MCP sin cabeza? Quita --dashboard de los argumentos — puedes abrir el mismo panel en cualquier momento con npx @iris-eval/mcp-server --dashboard.

Una cosa que vale la pena saber de antemano: las herramientas MCP se llaman cuando el modelo decide llamarlas. Iris no intercepta tu agente, así que las trazas se registran cuando tu agente pide que se registren — ya sea porque se lo dijiste, o porque tu código llama a las herramientas directamente. Pide a tu agente que "registre esto en Iris y lo evalúe" y lo hará. Si quieres una captura que no dependa de la elección del modelo, POST /api/v1/traces hace exactamente eso — tu código envía la traza por HTTP simple, sin modelo en el circuito (ver docs/http-ingest.md). La CLI y los SDK en el roadmap serán clientes ligeros sobre el mismo endpoint.

Captura por HTTP (sin modelo en el circuito)

Con el panel en ejecución, cualquier cosa que pueda enviar una solicitud HTTP puede registrar una traza — y opcionalmente ejecutar las evaluaciones deterministas en la misma solicitud:

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"
  }'

Devuelve 201 con el trace_id almacenado y el resultado de la evaluación. El endpoint acepta el mismo cuerpo que la herramienta log_trace y se encuentra detrás de la misma pila de middleware solo-loopback que el resto del panel. Contrato completo, referencia de campos y semántica de errores: docs/http-ingest.md.

Verifica la instalación

npx @iris-eval/mcp-server --self-test

Un diagnóstico de instalación sin conexión: round-trip de almacenamiento, evaluaciones deterministas, panel + protección contra DNS-rebinding — todo dentro de un home temporal aislado, así tu base de datos real nunca se abre. Código de salida 0 = saludable, 1 = una verificación falló.

Configuración por herramienta

Claude Desktop

Edita tu archivo de configuración MCP:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Añade la configuración JSON anterior y reinicia Claude Desktop.

Claude Code

claude mcp add --transport stdio iris-eval -- npx @iris-eval/mcp-server

Luego reinicia la sesión (/clear o relanza) para que se carguen las herramientas.

Nota para Windows: No uses el envoltorio cmd /c — causa problemas de análisis de rutas. El comando npx funciona directamente.

Cursor / Windsurf

Añade a la configuración MCP de tu espacio de trabajo .cursor/mcp.json o a la configuración MCP global usando el JSON anterior.

VS Code (MCP nativo)

Añade a .vscode/mcp.json en tu espacio de trabajo (nota: VS Code usa servers, no mcpServers):

{
  "servers": {
    "iris-eval": {
      "command": "npx",
      "args": ["@iris-eval/mcp-server"]
    }
  }
}

Cline

Abre el panel de Servidores MCP de Cline → Configurar Servidores MCP, y añade la configuración JSON mcpServers anterior a cline_mcp_settings.json.

Zed

Añade a la configuración de Zed settings.json:

{
  "context_servers": {
    "iris-eval": {
      "command": {
        "path": "npx",
        "args": ["@iris-eval/mcp-server"]
      }
    }
  }
}

OpenAI Codex CLI

Añade a ~/.codex/config.toml:

[mcp_servers.iris-eval]
command = "npx"
args = ["@iris-eval/mcp-server"]

Gemini CLI

Añade la configuración JSON mcpServers anterior a ~/.gemini/settings.json.

Cualquier otra cosa que hable MCP

Iris es un servidor MCP stdio estándar — un comando npx @iris-eval/mcp-server, sin SDK, sin cambios de código. Si tu cliente soporta MCP, soporta Iris. Los formatos de configuración de clientes cambian; en caso de duda, consulta la documentación MCP de tu cliente y apúntalo a ese comando.

Otros Métodos de Instalación

# 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

Consejo: La instalación global (npm install -g) almacena trazas de forma persistente en ~/.iris/iris.db. Con npx, las trazas persisten en la misma ubicación, pero el arranque es más lento debido a la resolución de paquetes.

Lo que Obtienes

Registro de TrazasÁrboles de spans jerárquicos con latencia por llamada a herramienta, uso de tokens y costo en USD. Almacenados en SQLite, consultables al instante.
Evaluación de Salida13 reglas integradas en 4 categorías: completitud, relevancia, seguridad, costo. Detección de PII (19 patrones: SSN, tarjeta de crédito, teléfono, email, IBAN, fecha de nacimiento, MRN, IP, clave API, pasaporte, más tokens de AWS/Slack/SendGrid/GitHub/Google/npm/DigitalOcean, bloques de claves privadas PEM y frases semilla), detección de inyección de prompts (37 patrones, de frase y estructurales), detección de salidas stub, detección de alucinaciones (25 señales de fabricación/contradicción fundamentadas en contexto — pasa input para contrastarlas contra el material fuente del agente). Añade reglas personalizadas con esquemas Zod.
LLM-como-JuezPuntuación semántica opcional vía Anthropic u OpenAI — trae tu propia clave API. Cinco plantillas. Tope de costo duro por evaluación (IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL, por defecto $0.25), precio por evaluación revelado en el resultado.
Visibilidad de CostosCosto agregado de todos los agentes en cualquier ventana de tiempo. Establece umbrales de presupuesto. Recibe alertas cuando los agentes gastan de más.
Panel WebInterfaz en modo oscuro en tiempo real que aterriza en los fallos, primero los peores y más recientes — visualización de trazas, resultados de evaluación, desgloses de costos y una paleta de comandos (⌘K) que busca tus propias reglas, trazas y evaluaciones.
Local-primeroTodo vive en SQLite en tu disco. Sin cuenta, sin registro, sin telemetría. El HTTP saliente ocurre solo donde tú lo optas: tu propia clave de juez LLM, recuperación de citas, o un exportador OTel que configures.

Hacia dónde va esto a continuación: el roadmap.

Herramientas MCP

Iris registra nueve herramientas que cualquier agente compatible con MCP puede invocar — ciclo de vida completo de reglas + trazas + LLM-como-juez + verificación semántica de citas:

  • log_trace — Registra una ejecución de agente con spans, llamadas a herramientas, uso de tokens y costo
  • evaluate_output — Puntúa la calidad de la salida contra reglas de completitud, relevancia, seguridad y costo (heurístico, determinista, gratis)
  • get_traces — Consulta trazas almacenadas con filtrado, paginación y soporte de rangos de tiempo
  • list_rules — Enumera las reglas de evaluación personalizadas desplegadas (solo lectura)
  • deploy_rule — Registra una nueva regla de evaluación personalizada para que se active en cada evaluate_output de esa categoría
  • delete_rule — Elimina una regla personalizada desplegada (destructivo, idempotente)
  • delete_trace — Elimina una sola traza almacenada por ID (destructivo, limitado por tenant)
  • evaluate_with_llm_judge — Evaluación semántica vía LLM (Anthropic u OpenAI). Cinco plantillas: precisión, utilidad, seguridad, corrección, fidelidad. Con tope de costo, precio por evaluación revelado. Trae tu propia clave API (IRIS_ANTHROPIC_API_KEY o IRIS_OPENAI_API_KEY) — Iris no hace proxy ni retransmite llamadas a LLM.
  • verify_citations — Extrae citas de la salida (numeradas, autor-año, URLs, DOIs), recupera fuentes detrás de un resolutor protegido contra SSRF + lista de dominios permitidos, y usa un juez LLM para verificar si cada fuente realmente respalda la afirmación citada. HTTP saliente opt-in. Mismo requisito BYOK que evaluate_with_llm_judge.

Cuando IRIS_OTEL_ENDPOINT está configurado, las llamadas a log_trace también emiten una exportación OTLP/HTTP JSON de mejor esfuerzo a cualquier colector OpenTelemetry (Jaeger, Grafana Tempo, Datadog OTLP, Honeycomb, etc). Ver docs/otel-integration.md.

Cómo se decide passed

evaluate_output devuelve tanto un score como una bandera passed — responden preguntas diferentes:

  • score (0..1) es el promedio ponderado de las reglas que se ejecutaron — un gradiente de calidad.
  • passed es el veredicto de publicar/no publicar: true solo cuando el puntaje supera el umbral de aprobación (por defecto 0.7) y ninguna regla crítica falló.

Las violaciones de seguridad genuinas fallan de forma dura. no_pii, no_injection_patterns y no_blocklist_words son reglas críticas: si una falla, la evaluación reporta passed: false sin importar cuán bien puntuaron las demás reglas, y la respuesta nombra a los culpables en critical_failures. Un SSN filtrado no puede promediarse. Las reglas personalizadas desplegadas con severity: "high" o "critical" fallan de forma dura de la misma manera; las severidades low/medium solo afectan el puntaje. Un límite que debes conocer: una regla crítica que se omitió (contexto faltante, o cualquier otra causa de omisión) no ha juzgado la salida y no veta — rule_results muestra cada omisión y su razón, para que una puerta que deba fallar en modo cerrado ante no-veredictos pueda hacerlo.

Una advertencia para puertas de CI: si omites eval_type, se ejecuta el paquete por defecto completenesslas reglas de seguridad no. La respuesta hace eco de eval_type (más un note cuando se usó el valor por defecto) para que tu puerta pueda verificar qué paquete se ejecutó realmente. Usa passed para el veredicto y eval_type: "safety" para la cobertura.

Esquemas completos de herramientas y configuración: iris-eval.com

Funciones alojadas

Iris se ejecuta completamente en tu máquina hoy, y todo lo que hace es gratis, con licencia MIT, sin límites y sin cuenta.

El almacenamiento alojado, el historial compartido de equipo y las alertas están bajo consideración, no en construcción. No hay precios ni nada que comprar. Si el historial compartido te fuera útil, la lista de espera es cómo descubrimos si vale la pena construirlo — no te compromete a nada.

Dos compromisos se mantienen en cualquier caso: nada que sea gratis hoy se moverá detrás de un muro de pago, y no se reclamará ninguna certificación de cumplimiento antes de obtenerla.

Ejemplos

Comunidad

Configuración y seguridad

Argumentos de CLI

BanderaPredeterminadoDescripción
--transportstdioTipo de transporte: stdio o http
--port3000Puerto de transporte HTTP
--db-path~/.iris/iris.dbRuta de la base de datos SQLite
--config~/.iris/config.jsonRuta del archivo de configuración
--api-keyClave API para autenticación HTTP
--dashboardfalseHabilitar panel web
--dashboard-port6920Puerto del panel
--dashboard-host127.0.0.1Dirección de enlace del panel. Loopback por defecto: el panel no está autenticado a menos que --api-key esté configurado, por lo que vincular más allá del loopback expone todo tu historial de trazas
--demofalseSembrar una base de datos de demostración (separada de tus trazas reales) y servir el panel con ella
--demo-clearfalseEliminar la base de datos de demostración y salir
--self-testfalseEjecutar el diagnóstico de instalación sin conexión en un directorio temporal aislado y luego salir (0 = saludable, 1 = falló una comprobación)

Variables de entorno

VariableDescripción
IRIS_TRANSPORTTipo de transporte (stdio o http)
IRIS_PORTPuerto de transporte HTTP
IRIS_HOSTHost de transporte HTTP (predeterminado 127.0.0.1)
IRIS_HOMEDirectorio para todos los archivos por usuario: config.json, iris.db, custom-rules.json, audit.log, preferences.json (predeterminado ~/.iris)
IRIS_DB_PATHRuta de la base de datos SQLite (anula IRIS_HOME solo para la base de datos)
IRIS_LOG_LEVELNivel de registro: debug, info, warn, error
IRIS_DASHBOARDHabilitar panel web (true/false; false también anula dashboard.enabled en config.json)
IRIS_DASHBOARD_PORTPuerto del panel (predeterminado 6920)
IRIS_DASHBOARD_HOSTDirección de enlace del panel (predeterminado 127.0.0.1)
IRIS_API_KEYClave API para autenticación HTTP
IRIS_ALLOWED_ORIGINSOrígenes CORS permitidos separados por comas

Las banderas de CLI tienen prioridad sobre las variables de entorno cuando ambas están configuradas.

Seguridad

Al usar transporte HTTP, Iris incluye:

  • Autenticación con clave API mediante comparación a prueba de temporización
  • CORS restringido a localhost por defecto
  • Límite de solicitudes (600 solicitudes/min API del panel, 20 solicitudes/min MCP)
  • Encabezados de seguridad Helmet
  • Validación de entrada Zod en todas las rutas
  • Regex segura contra ReDoS para reglas de evaluación personalizadas
  • Límite de cuerpo de solicitud de 1 MB
# Production deployment
iris-mcp --transport http --port 3000 --api-key "$(openssl rand -hex 32)" --dashboard
Solución de problemas

Primer paso: ejecutar la autoprueba

npx @iris-eval/mcp-server --self-test

Comprueba el almacenamiento, las evaluaciones deterministas y el panel en un directorio temporal aislado e imprime un veredicto por paso: la salida de error nombra el paso roto. El código de salida 0 significa que la instalación está saludable.

Iris no se inicia / ERR_MODULE_NOT_FOUND

Puede que tengas una versión anterior en caché. Limpia la caché de npx y reintenta:

npx --yes @iris-eval/mcp-server@latest

O instala globalmente para evitar problemas de caché por completo:

npm install -g @iris-eval/mcp-server@latest

Las herramientas no aparecen en Claude Code

Las herramientas MCP solo se cargan al inicio de la sesión. Después de agregar iris-eval, reinicia la sesión con /clear o relanza la terminal.

Verificación de versión

Iris registra su versión en la primera línea de inicio:

npx @iris-eval/mcp-server --dashboard
# First log line: "Starting Iris MCP server vX.Y.Z"

Para una instalación global, npm ls -g @iris-eval/mcp-server muestra la versión instalada.

Actualización

# 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

Versión de Node.js

Iris requiere Node.js 20 o posterior. Node 18 alcanzó su fin de vida útil en abril de 2025 y no es compatible.

node --version  # Must be v20.x or v22.x+

Windows: no se necesita cmd /c

El /doctor de Claude Code puede sugerir envolver npx con cmd /c. Esto no es necesario y causa problemas de análisis de rutas. Usa npx directamente:

# 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"

Si Iris te resulta útil, considera darle una estrella al repositorio: ayuda a que otros lo encuentren.

Star on GitHub

Con licencia MIT.