MCP低风险未认领
Iris
Stop shipping agents on vibes. Score every agent output for quality, safety, and cost.
iris-evaliris-eval/mcp-server
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工作区外的路径—无
智能体工具—无
检查
低风险 · 没有发现需要提醒的地方。
未经人工审核 · 已做规则检查;模型审核尚未开启。
版本
- #10.20.0最新2026年10月7日
Iris在 Codeg 中打开