NestDaddy

Iris

io.github.iris-eval/mcp-server · v0.21.0

Stop shipping agents on vibes. Score every agent output for quality, safety, and cost.

Connect Runs on your machine

Terminal
claude mcp add mcp-server -e IRIS_API_KEY=<IRIS_API_KEY> -e IRIS_API_KEY_FILE=<IRIS_API_KEY_FILE> -e IRIS_ALLOW_UNAUTHENTICATED=<IRIS_ALLOW_UNAUTHENTICATED> -e IRIS_DB_PATH=<IRIS_DB_PATH> -e IRIS_SQLITE_DRIVER=<IRIS_SQLITE_DRIVER> -e IRIS_SEARCH_BUDGET_MS=<IRIS_SEARCH_BUDGET_MS> -e IRIS_SEARCH_INDEX=<IRIS_SEARCH_INDEX> -e IRIS_LOG_LEVEL=<IRIS_LOG_LEVEL> -e IRIS_HOME=<IRIS_HOME> -e IRIS_ANTHROPIC_API_KEY=<IRIS_ANTHROPIC_API_KEY> -e IRIS_OPENAI_API_KEY=<IRIS_OPENAI_API_KEY> -e IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL=<IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL> -e IRIS_RELEVANCE_JUDGE_MODEL=<IRIS_RELEVANCE_JUDGE_MODEL> -e IRIS_LLM_JUDGE_DAILY_BUDGET_USD=<IRIS_LLM_JUDGE_DAILY_BUDGET_USD> -e IRIS_RELEVANCE_JUDGE_DAILY_BUDGET_USD=<IRIS_RELEVANCE_JUDGE_DAILY_BUDGET_USD> -e IRIS_RELEVANCE_JUDGE_MAX_CALLS_PER_REQUEST=<IRIS_RELEVANCE_JUDGE_MAX_CALLS_PER_REQUEST> -e IRIS_RELEVANCE_JUDGE_REDACT=<IRIS_RELEVANCE_JUDGE_REDACT> -e IRIS_CITATION_ALLOW_FETCH=<IRIS_CITATION_ALLOW_FETCH> -e IRIS_DASHBOARD=<IRIS_DASHBOARD> -e IRIS_DASHBOARD_PORT=<IRIS_DASHBOARD_PORT> -e IRIS_PORT=<IRIS_PORT> -e IRIS_OTEL_ENDPOINT=<IRIS_OTEL_ENDPOINT> -e IRIS_CITATION_DOMAINS=<IRIS_CITATION_DOMAINS> -e IRIS_CITATION_MAX_COST_USD_TOTAL=<IRIS_CITATION_MAX_COST_USD_TOTAL> -e IRIS_TRANSPORT=<IRIS_TRANSPORT> -e IRIS_HOST=<IRIS_HOST> -e IRIS_ALLOWED_ORIGINS=<IRIS_ALLOWED_ORIGINS> -e IRIS_MAX_INPUT_ELEMENTS=<IRIS_MAX_INPUT_ELEMENTS> -e IRIS_MAX_TOOL_INPUT_ELEMENTS=<IRIS_MAX_TOOL_INPUT_ELEMENTS> -e IRIS_DASHBOARD_HOST=<IRIS_DASHBOARD_HOST> -e IRIS_OTEL_HEADERS=<IRIS_OTEL_HEADERS> -e IRIS_OTEL_SERVICE_NAME=<IRIS_OTEL_SERVICE_NAME> -e IRIS_OTEL_TIMEOUT_MS=<IRIS_OTEL_TIMEOUT_MS> -e IRIS_WEBHOOK_URL=<IRIS_WEBHOOK_URL> -e IRIS_WEBHOOK_SECRET=<IRIS_WEBHOOK_SECRET> -- npx -y @iris-eval/[email protected]
claude_desktop_config.json
{
  "mcpServers": {
    "mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@iris-eval/[email protected]"
      ],
      "env": {
        "IRIS_API_KEY": "<IRIS_API_KEY>",
        "IRIS_API_KEY_FILE": "<IRIS_API_KEY_FILE>",
        "IRIS_ALLOW_UNAUTHENTICATED": "<IRIS_ALLOW_UNAUTHENTICATED>",
        "IRIS_DB_PATH": "<IRIS_DB_PATH>",
        "IRIS_SQLITE_DRIVER": "<IRIS_SQLITE_DRIVER>",
        "IRIS_SEARCH_BUDGET_MS": "<IRIS_SEARCH_BUDGET_MS>",
        "IRIS_SEARCH_INDEX": "<IRIS_SEARCH_INDEX>",
        "IRIS_LOG_LEVEL": "<IRIS_LOG_LEVEL>",
        "IRIS_HOME": "<IRIS_HOME>",
        "IRIS_ANTHROPIC_API_KEY": "<IRIS_ANTHROPIC_API_KEY>",
        "IRIS_OPENAI_API_KEY": "<IRIS_OPENAI_API_KEY>",
        "IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL": "<IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL>",
        "IRIS_RELEVANCE_JUDGE_MODEL": "<IRIS_RELEVANCE_JUDGE_MODEL>",
        "IRIS_LLM_JUDGE_DAILY_BUDGET_USD": "<IRIS_LLM_JUDGE_DAILY_BUDGET_USD>",
        "IRIS_RELEVANCE_JUDGE_DAILY_BUDGET_USD": "<IRIS_RELEVANCE_JUDGE_DAILY_BUDGET_USD>",
        "IRIS_RELEVANCE_JUDGE_MAX_CALLS_PER_REQUEST": "<IRIS_RELEVANCE_JUDGE_MAX_CALLS_PER_REQUEST>",
        "IRIS_RELEVANCE_JUDGE_REDACT": "<IRIS_RELEVANCE_JUDGE_REDACT>",
        "IRIS_CITATION_ALLOW_FETCH": "<IRIS_CITATION_ALLOW_FETCH>",
        "IRIS_DASHBOARD": "<IRIS_DASHBOARD>",
        "IRIS_DASHBOARD_PORT": "<IRIS_DASHBOARD_PORT>",
        "IRIS_PORT": "<IRIS_PORT>",
        "IRIS_OTEL_ENDPOINT": "<IRIS_OTEL_ENDPOINT>",
        "IRIS_CITATION_DOMAINS": "<IRIS_CITATION_DOMAINS>",
        "IRIS_CITATION_MAX_COST_USD_TOTAL": "<IRIS_CITATION_MAX_COST_USD_TOTAL>",
        "IRIS_TRANSPORT": "<IRIS_TRANSPORT>",
        "IRIS_HOST": "<IRIS_HOST>",
        "IRIS_ALLOWED_ORIGINS": "<IRIS_ALLOWED_ORIGINS>",
        "IRIS_MAX_INPUT_ELEMENTS": "<IRIS_MAX_INPUT_ELEMENTS>",
        "IRIS_MAX_TOOL_INPUT_ELEMENTS": "<IRIS_MAX_TOOL_INPUT_ELEMENTS>",
        "IRIS_DASHBOARD_HOST": "<IRIS_DASHBOARD_HOST>",
        "IRIS_OTEL_HEADERS": "<IRIS_OTEL_HEADERS>",
        "IRIS_OTEL_SERVICE_NAME": "<IRIS_OTEL_SERVICE_NAME>",
        "IRIS_OTEL_TIMEOUT_MS": "<IRIS_OTEL_TIMEOUT_MS>",
        "IRIS_WEBHOOK_URL": "<IRIS_WEBHOOK_URL>",
        "IRIS_WEBHOOK_SECRET": "<IRIS_WEBHOOK_SECRET>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@iris-eval/[email protected]"
      ],
      "env": {
        "IRIS_API_KEY": "<IRIS_API_KEY>",
        "IRIS_API_KEY_FILE": "<IRIS_API_KEY_FILE>",
        "IRIS_ALLOW_UNAUTHENTICATED": "<IRIS_ALLOW_UNAUTHENTICATED>",
        "IRIS_DB_PATH": "<IRIS_DB_PATH>",
        "IRIS_SQLITE_DRIVER": "<IRIS_SQLITE_DRIVER>",
        "IRIS_SEARCH_BUDGET_MS": "<IRIS_SEARCH_BUDGET_MS>",
        "IRIS_SEARCH_INDEX": "<IRIS_SEARCH_INDEX>",
        "IRIS_LOG_LEVEL": "<IRIS_LOG_LEVEL>",
        "IRIS_HOME": "<IRIS_HOME>",
        "IRIS_ANTHROPIC_API_KEY": "<IRIS_ANTHROPIC_API_KEY>",
        "IRIS_OPENAI_API_KEY": "<IRIS_OPENAI_API_KEY>",
        "IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL": "<IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL>",
        "IRIS_RELEVANCE_JUDGE_MODEL": "<IRIS_RELEVANCE_JUDGE_MODEL>",
        "IRIS_LLM_JUDGE_DAILY_BUDGET_USD": "<IRIS_LLM_JUDGE_DAILY_BUDGET_USD>",
        "IRIS_RELEVANCE_JUDGE_DAILY_BUDGET_USD": "<IRIS_RELEVANCE_JUDGE_DAILY_BUDGET_USD>",
        "IRIS_RELEVANCE_JUDGE_MAX_CALLS_PER_REQUEST": "<IRIS_RELEVANCE_JUDGE_MAX_CALLS_PER_REQUEST>",
        "IRIS_RELEVANCE_JUDGE_REDACT": "<IRIS_RELEVANCE_JUDGE_REDACT>",
        "IRIS_CITATION_ALLOW_FETCH": "<IRIS_CITATION_ALLOW_FETCH>",
        "IRIS_DASHBOARD": "<IRIS_DASHBOARD>",
        "IRIS_DASHBOARD_PORT": "<IRIS_DASHBOARD_PORT>",
        "IRIS_PORT": "<IRIS_PORT>",
        "IRIS_OTEL_ENDPOINT": "<IRIS_OTEL_ENDPOINT>",
        "IRIS_CITATION_DOMAINS": "<IRIS_CITATION_DOMAINS>",
        "IRIS_CITATION_MAX_COST_USD_TOTAL": "<IRIS_CITATION_MAX_COST_USD_TOTAL>",
        "IRIS_TRANSPORT": "<IRIS_TRANSPORT>",
        "IRIS_HOST": "<IRIS_HOST>",
        "IRIS_ALLOWED_ORIGINS": "<IRIS_ALLOWED_ORIGINS>",
        "IRIS_MAX_INPUT_ELEMENTS": "<IRIS_MAX_INPUT_ELEMENTS>",
        "IRIS_MAX_TOOL_INPUT_ELEMENTS": "<IRIS_MAX_TOOL_INPUT_ELEMENTS>",
        "IRIS_DASHBOARD_HOST": "<IRIS_DASHBOARD_HOST>",
        "IRIS_OTEL_HEADERS": "<IRIS_OTEL_HEADERS>",
        "IRIS_OTEL_SERVICE_NAME": "<IRIS_OTEL_SERVICE_NAME>",
        "IRIS_OTEL_TIMEOUT_MS": "<IRIS_OTEL_TIMEOUT_MS>",
        "IRIS_WEBHOOK_URL": "<IRIS_WEBHOOK_URL>",
        "IRIS_WEBHOOK_SECRET": "<IRIS_WEBHOOK_SECRET>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@iris-eval/[email protected]"
      ],
      "env": {
        "IRIS_API_KEY": "<IRIS_API_KEY>",
        "IRIS_API_KEY_FILE": "<IRIS_API_KEY_FILE>",
        "IRIS_ALLOW_UNAUTHENTICATED": "<IRIS_ALLOW_UNAUTHENTICATED>",
        "IRIS_DB_PATH": "<IRIS_DB_PATH>",
        "IRIS_SQLITE_DRIVER": "<IRIS_SQLITE_DRIVER>",
        "IRIS_SEARCH_BUDGET_MS": "<IRIS_SEARCH_BUDGET_MS>",
        "IRIS_SEARCH_INDEX": "<IRIS_SEARCH_INDEX>",
        "IRIS_LOG_LEVEL": "<IRIS_LOG_LEVEL>",
        "IRIS_HOME": "<IRIS_HOME>",
        "IRIS_ANTHROPIC_API_KEY": "<IRIS_ANTHROPIC_API_KEY>",
        "IRIS_OPENAI_API_KEY": "<IRIS_OPENAI_API_KEY>",
        "IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL": "<IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL>",
        "IRIS_RELEVANCE_JUDGE_MODEL": "<IRIS_RELEVANCE_JUDGE_MODEL>",
        "IRIS_LLM_JUDGE_DAILY_BUDGET_USD": "<IRIS_LLM_JUDGE_DAILY_BUDGET_USD>",
        "IRIS_RELEVANCE_JUDGE_DAILY_BUDGET_USD": "<IRIS_RELEVANCE_JUDGE_DAILY_BUDGET_USD>",
        "IRIS_RELEVANCE_JUDGE_MAX_CALLS_PER_REQUEST": "<IRIS_RELEVANCE_JUDGE_MAX_CALLS_PER_REQUEST>",
        "IRIS_RELEVANCE_JUDGE_REDACT": "<IRIS_RELEVANCE_JUDGE_REDACT>",
        "IRIS_CITATION_ALLOW_FETCH": "<IRIS_CITATION_ALLOW_FETCH>",
        "IRIS_DASHBOARD": "<IRIS_DASHBOARD>",
        "IRIS_DASHBOARD_PORT": "<IRIS_DASHBOARD_PORT>",
        "IRIS_PORT": "<IRIS_PORT>",
        "IRIS_OTEL_ENDPOINT": "<IRIS_OTEL_ENDPOINT>",
        "IRIS_CITATION_DOMAINS": "<IRIS_CITATION_DOMAINS>",
        "IRIS_CITATION_MAX_COST_USD_TOTAL": "<IRIS_CITATION_MAX_COST_USD_TOTAL>",
        "IRIS_TRANSPORT": "<IRIS_TRANSPORT>",
        "IRIS_HOST": "<IRIS_HOST>",
        "IRIS_ALLOWED_ORIGINS": "<IRIS_ALLOWED_ORIGINS>",
        "IRIS_MAX_INPUT_ELEMENTS": "<IRIS_MAX_INPUT_ELEMENTS>",
        "IRIS_MAX_TOOL_INPUT_ELEMENTS": "<IRIS_MAX_TOOL_INPUT_ELEMENTS>",
        "IRIS_DASHBOARD_HOST": "<IRIS_DASHBOARD_HOST>",
        "IRIS_OTEL_HEADERS": "<IRIS_OTEL_HEADERS>",
        "IRIS_OTEL_SERVICE_NAME": "<IRIS_OTEL_SERVICE_NAME>",
        "IRIS_OTEL_TIMEOUT_MS": "<IRIS_OTEL_TIMEOUT_MS>",
        "IRIS_WEBHOOK_URL": "<IRIS_WEBHOOK_URL>",
        "IRIS_WEBHOOK_SECRET": "<IRIS_WEBHOOK_SECRET>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
IRIS_API_KEY
Optional, secret
API key for HTTP authentication. Required to bind the HTTP transport or the dashboard beyond loopback (0.0.0.0, a LAN address, a container): without it the server refuses to start
IRIS_API_KEY_FILE
Optional
Path to a file whose trimmed contents are the API key (the secret-file pattern Docker and Kubernetes mount). Set this or IRIS_API_KEY, not both; further keys and rotation are security.apiKeys in config.json
IRIS_ALLOW_UNAUTHENTICATED
Optional
Set to 1 to run a non-loopback bind with NO API key on purpose (lifts the startup refusal; the network is then your boundary)
IRIS_DB_PATH
Optional
SQLite database path
IRIS_SQLITE_DRIVER
Optional
Which SQLite driver holds the database: native (better-sqlite3, the default) or node (Node's built-in node:sqlite, Node 22.13+). Unset: native, falling back to node when the native module cannot load
IRIS_SEARCH_BUDGET_MS
Optional
How long one trace search may read before it answers with the matches found so far, in milliseconds (50-60000, default 1000)
IRIS_SEARCH_INDEX
Optional
on (default) or off. off keeps no full-text index of the traces: writes are cheaper, and a search reads the traces within its time budget
IRIS_LOG_LEVEL
Optional
Log level: debug, info, warn, error
IRIS_HOME
Optional
Directory for the database, custom rules and preferences (default ~/.iris)
IRIS_ANTHROPIC_API_KEY
Optional, secret
Enables evaluate_with_llm_judge and verify_citations with an Anthropic model. Optional: the deterministic rules never need a key
IRIS_OPENAI_API_KEY
Optional, secret
Enables evaluate_with_llm_judge and verify_citations with an OpenAI model. Optional: the deterministic rules never need a key
IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL
Optional
Hard cap on the worst-case cost of one LLM judge call (default 0.25); max_cost_usd can lower it for a call, never raise it
IRIS_RELEVANCE_JUDGE_MODEL
Optional
A priced judge model; answers_the_ask then asks it on every evaluation with input, sending that input and output to the model's provider, and gates on its verdict (off by default)
IRIS_LLM_JUDGE_DAILY_BUDGET_USD
Optional
What every judge call together may spend per UTC day, per tenant, in USD (default 1): the relevance judge, evaluate_with_llm_judge and verify_citations. Past it no judge call is made
IRIS_RELEVANCE_JUDGE_DAILY_BUDGET_USD
Optional
The name of IRIS_LLM_JUDGE_DAILY_BUDGET_USD before 0.21.0. Read when the new name is unset, and it then limits every judge call
IRIS_RELEVANCE_JUDGE_MAX_CALLS_PER_REQUEST
Optional
Relevance judge calls one request may make (default 20)
IRIS_RELEVANCE_JUDGE_REDACT
Optional
on (default) replaces the PII and credentials no_pii flags before the relevance judge sends input and output to its provider; off sends them as they are
IRIS_CITATION_ALLOW_FETCH
Optional
Let verify_citations fetch URLs (off by default); a tool argument can turn it off for a call, never on
IRIS_DASHBOARD
Optional
Start the dashboard alongside the server (same as --dashboard)
IRIS_DASHBOARD_PORT
Optional
Dashboard port (default 6920); IRIS_PORT is the MCP HTTP transport port (default 3000)
IRIS_PORT
Optional
MCP HTTP transport port (default 3000); only used with --transport http
IRIS_OTEL_ENDPOINT
Optional
OTLP/HTTP collector URL; when set, every stored trace is also exported as OpenTelemetry spans (best-effort, asynchronous)
IRIS_CITATION_DOMAINS
Optional
Comma-separated domain allowlist for verify_citations fetches (only consulted when IRIS_CITATION_ALLOW_FETCH is on); a tool argument can narrow it, never add to it
IRIS_CITATION_MAX_COST_USD_TOTAL
Optional
The most one verify_citations call may spend on judge calls, in USD (default 1); max_cost_usd_total can lower it, never raise it
IRIS_TRANSPORT
Optional
Transport: stdio (default) or http; same as --transport
IRIS_HOST
Optional
Bind host for the HTTP transport (default 127.0.0.1); only used with --transport http
IRIS_ALLOWED_ORIGINS
Optional
Comma-separated Origin allowlist for the HTTP transport and dashboard CORS (default http://localhost:*)
IRIS_MAX_INPUT_ELEMENTS
Optional
The most array elements and object keys one input may hold before it is validated (default 100000): a tool call's arguments, and a dashboard or OTLP JSON request body. A tool call over it gets an error result; a body, 413. OTLP protobuf has its own ceiling, one element per 5 bytes of the request si…
IRIS_MAX_TOOL_INPUT_ELEMENTS
Optional
The name of IRIS_MAX_INPUT_ELEMENTS before 0.21.0, read when the new name is unset
IRIS_DASHBOARD_HOST
Optional
Bind host for the dashboard (default 127.0.0.1); same as --dashboard-host
IRIS_OTEL_HEADERS
Optional
Comma-separated key=value headers sent with every OTLP export (for example an auth token for your collector)
IRIS_OTEL_SERVICE_NAME
Optional
service.name resource attribute on exported spans (default iris-eval)
IRIS_OTEL_TIMEOUT_MS
Optional
Timeout in milliseconds for each OTLP export request
IRIS_WEBHOOK_URL
Optional
The receiver of the webhook that fires on a moment (docs/webhooks.md); merged over notify.webhook in config.json
IRIS_WEBHOOK_SECRET
Optional, secret
The signing key of that webhook (any string, or whsec_ + base64); the iris format refuses to run without one

Details

Package@iris-eval/[email protected] (NPM, stdio)
Packagehttps://github.com/iris-eval/mcp-server/releases/download/v0.21.0/[email protected] (MCPB, stdio)
First published25 Oct 2026
Last updated25 Oct 2026
Registry nameio.github.iris-eval/mcp-server

More ai and media servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.