mcpbeat Sign in

Iris MCP Server

by iris-eval Your server? Claim it
local only

Iris runs on your own machine — the client starts it, so there is no endpoint to ping. 658 installs a week from npm. Last commit 31 Oct 2026.

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

Installs per day peak 302 · avg 64 · +585% w/w
a month agotoday
658
Installs / week
npm · @iris-eval/mcp-server
9
Stars
6 open issues
31 Oct 2026
Last commit
23 releases in 90 days
MIT
License
TypeScript

What the code does

We read the source, 1 d ago · rules 995398eba69f

Capabilities

What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.

Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.

This code can reach further than it looks

We found places where it runs commands, builds paths or queries from values it is given. None of that is a flaw by itself — it becomes one when the code changes, and code changes quietly between releases. We re-read it on every one.

Three servers free · no card

Connect this server

This server runs on your own machine — install it with the package manager and the client starts it for you. Package name taken from the official registry entry.

run in your terminal
claude mcp add mcp-server -- npx -y @iris-eval/mcp-server
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@iris-eval/mcp-server"
      ]
    }
  }
}
~/.codex/config.toml
[mcp_servers.mcp-server]
command = "npx"
args = ["-y", "@iris-eval/mcp-server"]
.cursor/mcp.json
{
  "mcpServers": {
    "mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@iris-eval/mcp-server"
      ]
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@iris-eval/mcp-server"
      ]
    }
  }
}

Optional settings from the registry entry, left out of the block above: IRIS_API_KEY (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 (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 (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 (SQLite database path), IRIS_SQLITE_DRIVER (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 (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 (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 (Log level: debug, info, warn, error), IRIS_HOME (Directory for the database, custom rules and preferences (default ~/.iris)), IRIS_ANTHROPIC_API_KEY (Enables evaluate_with_llm_judge and verify_citations with an Anthropic model. Optional: the deterministic rules never need a key), IRIS_OPENAI_API_KEY (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 (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 (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 (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 (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 (Relevance judge calls one request may make (default 20)), IRIS_RELEVANCE_JUDGE_REDACT (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 (Let verify_citations fetch URLs (off by default); a tool argument can turn it off for a call, never on), IRIS_DASHBOARD (Start the dashboard alongside the server (same as --dashboard)), IRIS_DASHBOARD_PORT (Dashboard port (default 6920); IRIS_PORT is the MCP HTTP transport port (default 3000)), IRIS_PORT (MCP HTTP transport port (default 3000); only used with --transport http), IRIS_OTEL_ENDPOINT (OTLP/HTTP collector URL; when set, every stored trace is also exported as OpenTelemetry spans (best-effort, asynchronous)), IRIS_CITATION_DOMAINS (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 (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 (Transport: stdio (default) or http; same as --transport), IRIS_HOST (Bind host for the HTTP transport (default 127.0.0.1); only used with --transport http), IRIS_ALLOWED_ORIGINS (Comma-separated Origin allowlist for the HTTP transport and dashboard CORS (default http://localhost:*)), IRIS_MAX_INPUT_ELEMENTS (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 size limit), IRIS_MAX_TOOL_INPUT_ELEMENTS (The name of IRIS_MAX_INPUT_ELEMENTS before 0.21.0, read when the new name is unset), IRIS_DASHBOARD_HOST (Bind host for the dashboard (default 127.0.0.1); same as --dashboard-host), IRIS_OTEL_HEADERS (Comma-separated key=value headers sent with every OTLP export (for example an auth token for your collector)), IRIS_OTEL_SERVICE_NAME (service.name resource attribute on exported spans (default iris-eval)), IRIS_OTEL_TIMEOUT_MS (Timeout in milliseconds for each OTLP export request), IRIS_WEBHOOK_URL (The receiver of the webhook that fires on a moment (docs/webhooks.md); merged over notify.webhook in config.json), IRIS_WEBHOOK_SECRET (The signing key of that webhook (any string, or whsec_ + base64); the iris format refuses to run without one).

Alternatives to Iris

same job, measured the same way
Qc Validator
by mdfifty50-boop

Output quality control and validation for AI agents

48 installs/wk local only
Iris Code
by daiveedjay

Local code-quality rules, findings, preview-first safe fixes and gate results for coding agents.

575 installs/wk local only
Twig
by kind-ling

MCP server quality scoring and optimization for the agent economy.

85 installs/wk local only
Otr Protocol
by yb48666-ctrl

Merchant trust verification for AI agents. One call = trust score, badge, and purchase safety.

34 installs/wk local only
AgentTrust
by vitaliiserbynassisterr

Quality verification for AI agents and MCP servers. 6-axis scoring, adversarial probes.

115 installs/wk local only
AgentTrust
by assister-xyz

Quality verification for AI agents and MCP servers. 6-axis scoring, adversarial probes.

local only
Vigile MCP
by vigile-ai

Query trust scores for MCP servers and agent skills. Check if a tool is safe.

45 installs/wk local only
Aggors Merchant Evidence
by aggors

Read-only observable merchant evidence for people and agents, without scores or safety verdicts.

answering

Iris — questions

Answers built from our own checks of this server.

Why is there no uptime for Iris?
Iris runs on your own machine over stdio — there is no network address to reach, so uptime cannot be measured for it by anyone. What can be measured is adoption: the npm package @iris-eval/mcp-server was installed 658 times last week.
How do I connect Iris?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It runs locally, so the command pulls @iris-eval/mcp-server straight from npm; nothing to host, nothing to sign up for.
How many people use Iris?
The npm package @iris-eval/mcp-server was installed 658 times in the last week. Week over week that is +585%. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is Iris open source?
Yes — it is published under the MIT licence, written in TypeScript, 9 stars on GitHub and 6 open issues. The source link is on this page, so you can read exactly what it does with your data before you connect it.