# Iris

Evaluates agent runs locally for safety, quality, and cost without accounts or remote SDKs.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 9
- Author: iris-eval
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/iris-eval/mcp-server
- Updated: 2026-10-22
- HTML: https://affpapa.org/en/nevibecode/mcp/iris

## What it does

Iris stores agent execution traces in a local SQLite file. The engine applies 26 deterministic rules to each run without calling external model APIs. It inspects tool calls, checks for prompt injection patterns, catches personal data leaks, and tracks token costs.

A model judge can be enabled for semantic checks, protected by a per-run cost cap. Inspection results and failed runs display in a local web interface at `http://localhost:6920`.

The server requires Node.js 22.13 or newer. It fails on older runtimes. Records stay on your machine unless you configure OpenTelemetry trace exports or webhook alerts.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `IRIS_API_KEY`, `IRIS_API_KEY_FILE`, `IRIS_ALLOW_UNAUTHENTICATED`, `IRIS_DB_PATH`, `IRIS_SQLITE_DRIVER`, `IRIS_SEARCH_BUDGET_MS`, `IRIS_SEARCH_INDEX`, `IRIS_LOG_LEVEL`, `IRIS_HOME`, `IRIS_ANTHROPIC_API_KEY` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env IRIS_API_KEY=<IRIS_API_KEY> --env IRIS_API_KEY_FILE=<IRIS_API_KEY_FILE> --env IRIS_ALLOW_UNAUTHENTICATED=<IRIS_ALLOW_UNAUTHENTICATED> --env IRIS_DB_PATH=<IRIS_DB_PATH> --env IRIS_SQLITE_DRIVER=<IRIS_SQLITE_DRIVER> --transport stdio iris -- npx -y @iris-eval/mcp-server
```
Replace <…> with your own values. 26 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add iris --env IRIS_API_KEY=<IRIS_API_KEY> --env IRIS_API_KEY_FILE=<IRIS_API_KEY_FILE> --env IRIS_ALLOW_UNAUTHENTICATED=<IRIS_ALLOW_UNAUTHENTICATED> --env IRIS_DB_PATH=<IRIS_DB_PATH> --env IRIS_SQLITE_DRIVER=<IRIS_SQLITE_DRIVER> -- npx -y @iris-eval/mcp-server
```
Replace <…> with your own values. 26 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "iris": {
            "command": "npx",
            "args": [
                "-y",
                "@iris-eval/mcp-server"
            ],
            "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>"
            }
        }
    }
}
```
Replace <…> with your own values. 26 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "iris": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@iris-eval/mcp-server"
            ],
            "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>"
            }
        }
    }
}
```
Replace <…> with your own values. 26 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -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> iris npx -y @iris-eval/mcp-server
```
Replace <…> with your own values. 26 more environment variables are in the server README

## When to use it
- catch prompt injections and hidden directives in agent input
- detect accidental leaks of sensitive personal data
- track hallucination markers and invalid tool calls
- enforce strict financial spending caps across agent executions

## Example prompts
- Evaluate the latest agent run against the safety and PII rules
- Audit the tool call sequence and check for hallucination markers
- Inspect the cost thresholds and rule failures logged in Iris

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 392262
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33989
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81163
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119231
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47577
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43902

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
