MCP低风险未认领

Iris

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

iris-evaliris-eval/mcp-server★ 9更新于 2026年10月4日

server.json

{
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "name": "io.github.iris-eval/mcp-server",
  "description": "Stop shipping agents on vibes. Score every agent output for quality, safety, and cost.",
  "title": "Iris",
  "repository": {
    "url": "https://github.com/iris-eval/mcp-server",
    "source": "github"
  },
  "version": "0.20.0",
  "websiteUrl": "https://iris-eval.com",
  "icons": [
    {
      "src": "https://iris-eval.com/iris-logo.svg",
      "mimeType": "image/svg+xml",
      "sizes": [
        "any"
      ]
    },
    {
      "src": "https://iris-eval.com/iris-logo-white-bg.png",
      "mimeType": "image/png",
      "sizes": [
        "180x180"
      ]
    }
  ],
  "packages": [
    {
      "registryType": "npm",
      "identifier": "@iris-eval/mcp-server",
      "version": "0.20.0",
      "transport": {
        "type": "stdio"
      },
      "environmentVariables": [
        {
          "description": "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",
          "format": "string",
          "isSecret": true,
          "name": "IRIS_API_KEY"
        },
        {
          "description": "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",
          "format": "string",
          "name": "IRIS_API_KEY_FILE"
        },
        {
          "description": "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)",
          "format": "string",
          "name": "IRIS_ALLOW_UNAUTHENTICATED"
        },
        {
          "description": "SQLite database path",
          "format": "string",
          "name": "IRIS_DB_PATH"
        },
        {
          "description": "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",
          "format": "string",
          "name": "IRIS_SQLITE_DRIVER"
        },
        {
          "description": "How long one trace search may read before it answers with the matches found so far, in milliseconds (50-60000, default 1000)",
          "format": "string",
          "name": "IRIS_SEARCH_BUDGET_MS"
        },
        {
          "description": "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",
          "format": "string",
          "name": "IRIS_SEARCH_INDEX"
        },
        {
          "description": "Log level: debug, info, warn, error",
          "format": "string",
          "name": "IRIS_LOG_LEVEL"
        },
        {
          "description": "Directory for the database, custom rules and preferences (default ~/.iris)",
          "format": "string",
          "name": "IRIS_HOME"
        },
        {
          "description": "Enables evaluate_with_llm_judge and verify_citations with an Anthropic model. Optional: the deterministic rules never need a key",
          "format": "string",
          "isSecret": true,
          "name": "IRIS_ANTHROPIC_API_KEY"
        },
        {
          "description": "Enables evaluate_with_llm_judge and verify_citations with an OpenAI model. Optional: the deterministic rules never need a key",
          "format": "string",
          "isSecret": true,
          "name": "IRIS_OPENAI_API_KEY"
        },
        {
          "description": "Hard cap on the worst-case cost of one judge or citation call (default 0.25)",
          "format": "string",
          "name": "IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL"
        },
        {
          "description": "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)",
          "format": "string",
          "name": "IRIS_RELEVANCE_JUDGE_MODEL"
        },
        {
          "description": "What the relevance judge may spend per UTC day, per tenant, in USD (default 1); past it answers_the_ask reads the ask lexically",
          "format": "string",
          "name": "IRIS_RELEVANCE_JUDGE_DAILY_BUDGET_USD"
        },
        {
          "description": "Relevance judge calls one request may make (default 20)",
          "format": "string",
          "name": "IRIS_RELEVANCE_JUDGE_MAX_CALLS_PER_REQUEST"
        },
        {
          "description": "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",
          "format": "string",
          "name": "IRIS_RELEVANCE_JUDGE_REDACT"
        },
        {
          "description": "Let verify_citations fetch URLs (off by default)",
          "format": "boolean",
          "name": "IRIS_CITATION_ALLOW_FETCH"
        },
        {
          "description": "Start the dashboard alongside the server (same as --dashboard)",
          "format": "boolean",
          "name": "IRIS_DASHBOARD"
        },
        {
          "description": "Dashboard port (default 6920); IRIS_PORT is the MCP HTTP transport port (default 3000)",
          "format": "number",
          "name": "IRIS_DASHBOARD_PORT"
        },
        {
          "description": "MCP HTTP transport port (default 3000); only used with --transport http",
          "format": "number",
          "name": "IRIS_PORT"
        },
        {
          "description": "OTLP/HTTP collector URL; when set, every stored trace is also exported as OpenTelemetry spans (best-effort, asynchronous)",
          "format": "string",
          "name": "IRIS_OTEL_ENDPOINT"
        },
        {
          "description": "Comma-separated domain allowlist for verify_citations fetches (only consulted when IRIS_CITATION_ALLOW_FETCH is on)",
          "format": "string",
          "name": "IRIS_CITATION_DOMAINS"
        },
        {
          "description": "Transport: stdio (default) or http; same as --transport",
          "format": "string",
          "name": "IRIS_TRANSPORT"
        },
        {
          "description": "Bind host for the HTTP transport (default 127.0.0.1); only used with --transport http",
          "format": "string",
          "name": "IRIS_HOST"
        },
        {
          "description": "Comma-separated Origin allowlist for the HTTP transport and dashboard CORS (default http://localhost:*)",
          "format": "string",
          "name": "IRIS_ALLOWED_ORIGINS"
        },
        {
          "description": "Bind host for the dashboard (default 127.0.0.1); same as --dashboard-host",
          "format": "string",
          "name": "IRIS_DASHBOARD_HOST"
        },
        {
          "description": "Comma-separated key=value headers sent with every OTLP export (for example an auth token for your collector)",
          "format": "string",
          "name": "IRIS_OTEL_HEADERS"
        },
        {
          "description": "service.name resource attribute on exported spans (default iris-eval)",
          "format": "string",
          "name": "IRIS_OTEL_SERVICE_NAME"
        },
        {
          "description": "Timeout in milliseconds for each OTLP export request",
          "format": "number",
          "name": "IRIS_OTEL_TIMEOUT_MS"
        },
        {
          "description": "The receiver of the webhook that fires on a moment (docs/webhooks.md); merged over notify.webhook in config.json",
          "format": "string",
          "name": "IRIS_WEBHOOK_URL"
        },
        {
          "description": "The signing key of that webhook (any string, or whsec_ + base64); the iris format refuses to run without one",
          "format": "string",
          "isSecret": true,
          "name": "IRIS_WEBHOOK_SECRET"
        }
      ]
    },
    {
      "registryType": "mcpb",
      "identifier": "https://github.com/iris-eval/mcp-server/releases/download/v0.20.0/iris-eval.mcpb",
      "version": "0.20.0",
      "fileSha256": "45fc7164f9b598500f9fb10162478dd13027d28be9d876c2fa9ca0ad4ffcdca3",
      "transport": {
        "type": "stdio"
      }
    }
  ]
}

权限

声明检测
运行代码—bundlenode
安装—npm:@iris-eval/mcp-server@0.20.0mcpb:https://github.com/iris-eval/mcp-server/releases/download/v0.20.0/iris-eval.mcpb@0.20.0
安装时运行脚本—无
网络无无
需要的凭据IRIS_ANTHROPIC_API_KEYIRIS_API_KEYIRIS_OPENAI_API_KEYIRIS_WEBHOOK_SECRETIRIS_ANTHROPIC_API_KEYIRIS_API_KEYIRIS_OPENAI_API_KEYIRIS_WEBHOOK_SECRET
工作区外的路径—无
智能体工具—无

检查

低风险 · 没有发现需要提醒的地方。

未经人工审核 · 已做规则检查;模型审核尚未开启。

版本

  1. #10.20.0最新2026年10月7日