Skip to content
VS Code

Iris for VS Code

io.github.iris-eval/mcp-server

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

client:VS Code transport:stdio runtime:npm

Install Iris in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "iris-api-key",
      "description": "IRIS_API_KEY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-api-key-file",
      "description": "IRIS_API_KEY_FILE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-allow-unauthenticated",
      "description": "IRIS_ALLOW_UNAUTHENTICATED",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-db-path",
      "description": "IRIS_DB_PATH",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-sqlite-driver",
      "description": "IRIS_SQLITE_DRIVER",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-log-level",
      "description": "IRIS_LOG_LEVEL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-home",
      "description": "IRIS_HOME",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-anthropic-api-key",
      "description": "IRIS_ANTHROPIC_API_KEY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-openai-api-key",
      "description": "IRIS_OPENAI_API_KEY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-llm-judge-max-cost-usd-per-eval",
      "description": "IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-citation-allow-fetch",
      "description": "IRIS_CITATION_ALLOW_FETCH",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-dashboard",
      "description": "IRIS_DASHBOARD",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-dashboard-port",
      "description": "IRIS_DASHBOARD_PORT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-port",
      "description": "IRIS_PORT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-otel-endpoint",
      "description": "IRIS_OTEL_ENDPOINT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-citation-domains",
      "description": "IRIS_CITATION_DOMAINS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-transport",
      "description": "IRIS_TRANSPORT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-host",
      "description": "IRIS_HOST",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-allowed-origins",
      "description": "IRIS_ALLOWED_ORIGINS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-dashboard-host",
      "description": "IRIS_DASHBOARD_HOST",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-otel-headers",
      "description": "IRIS_OTEL_HEADERS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-otel-service-name",
      "description": "IRIS_OTEL_SERVICE_NAME",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-otel-timeout-ms",
      "description": "IRIS_OTEL_TIMEOUT_MS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-webhook-url",
      "description": "IRIS_WEBHOOK_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "iris-webhook-secret",
      "description": "IRIS_WEBHOOK_SECRET",
      "password": true
    }
  ],
  "servers": {
    "mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@iris-eval/mcp-server"
      ],
      "env": {
        "IRIS_API_KEY": "${input:iris-api-key}",
        "IRIS_API_KEY_FILE": "${input:iris-api-key-file}",
        "IRIS_ALLOW_UNAUTHENTICATED": "${input:iris-allow-unauthenticated}",
        "IRIS_DB_PATH": "${input:iris-db-path}",
        "IRIS_SQLITE_DRIVER": "${input:iris-sqlite-driver}",
        "IRIS_LOG_LEVEL": "${input:iris-log-level}",
        "IRIS_HOME": "${input:iris-home}",
        "IRIS_ANTHROPIC_API_KEY": "${input:iris-anthropic-api-key}",
        "IRIS_OPENAI_API_KEY": "${input:iris-openai-api-key}",
        "IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL": "${input:iris-llm-judge-max-cost-usd-per-eval}",
        "IRIS_CITATION_ALLOW_FETCH": "${input:iris-citation-allow-fetch}",
        "IRIS_DASHBOARD": "${input:iris-dashboard}",
        "IRIS_DASHBOARD_PORT": "${input:iris-dashboard-port}",
        "IRIS_PORT": "${input:iris-port}",
        "IRIS_OTEL_ENDPOINT": "${input:iris-otel-endpoint}",
        "IRIS_CITATION_DOMAINS": "${input:iris-citation-domains}",
        "IRIS_TRANSPORT": "${input:iris-transport}",
        "IRIS_HOST": "${input:iris-host}",
        "IRIS_ALLOWED_ORIGINS": "${input:iris-allowed-origins}",
        "IRIS_DASHBOARD_HOST": "${input:iris-dashboard-host}",
        "IRIS_OTEL_HEADERS": "${input:iris-otel-headers}",
        "IRIS_OTEL_SERVICE_NAME": "${input:iris-otel-service-name}",
        "IRIS_OTEL_TIMEOUT_MS": "${input:iris-otel-timeout-ms}",
        "IRIS_WEBHOOK_URL": "${input:iris-webhook-url}",
        "IRIS_WEBHOOK_SECRET": "${input:iris-webhook-secret}"
      }
    }
  }
}

VS Code prompts for each input the first time the server starts, so no secret is written to the file. VS Code docs

Iris in other clients