Model Context Protocol

Agent output.
Your standard.

An AI agent asked to clean up a file has no way to know what your project counts as clean. It can count lines and guess at a limit, and its guess changes between runs. Iris Code answers over MCP with the thresholds your pre-push hook actually enforces, so the agent works against your committed standard instead of inventing one.

01

Six tools

Pro tools stay listed and describe themselves as Pro rather than hiding, so your assistant can say what an upgrade would add. Entitlement is checked when a tool runs, not when it is listed, so a cached tool list cannot be replayed for Pro work. Full behaviour is in the MCP guide.

iris_check

Findings for a path, each with a rule id, a line, a real severity, and a stable id the agent can pass back. One file free; folder and workspace on Pro.

FreePro
iris_config

The project's resolved thresholds, scoring weights, and gate limits, exactly as the pre-push hook and CI would apply them.

Free
iris_fix_safe

Preview, then apply, only the changes Iris Code can prove safe. Refuses per finding with a reason. One file free; folder and workspace on Pro.

FreePro
iris_explain

Findings plus the rule detail behind them, so an agent can act on the reason rather than the label.

Pro
iris_gate

Whether the configured gate would pass, and which files fail which rule. The same answer the hook gives.

Pro
iris_check_dependency

OSV advisories for a dependency at its installed version, with severity, confidence, and the nearest fixed version.

Pro
Safe fixes

It shows you the change
before it makes it

iris_fix_safe previews by default and returns a single-use token. Applying requires that token, so Iris Code only ever writes a change set it has already put in front of you. Refusals are per finding with a reason, and one refusal never blocks the fixes that are provable.

1iris_fix_safepreview
2iris_fix_safeapply + token
iris_fix_safe — preview
would change delete-line src/api/users.ts:34 refused hardcoded-secret rotate the credential console-log line holds other code magic-number needs a name you choose
nothing written yettoken valid 10 min
02

What it will not do

Handing an agent write access to a repository is only reasonable if the boundaries are explicit. Each of these is enforced in the server process, not left to the client.

Preview first

iris_fix_safe returns the exact changes it would make plus a single-use token. Applying requires that token, so Iris Code only ever writes a change set it has already shown you. A confirmation flag alone would not give you that, because the model sets the flag.

Refusals with reasons

A hardcoded secret is never auto-fixed. A debug print sharing its line with real code is left alone, because deleting the line would take the code with it. One refusal never blocks the fixes that are provable.

Root-confined paths

Every requested path must resolve inside --root, checked after resolving symlinks, so a link pointing outside your workspace is refused rather than followed. There is no shell-execution tool and no command passthrough.

Masked secrets only

Secret values are never returned to the agent, only the masked form every other Iris Code surface shows. Analysis runs on your machine; only dependency and advisory lookups reach the network, and those ask first.

Disclosed truncation

Large results drop the lowest severities first and report what was withheld, so a critical finding is never cut to make room for a magic number and a partial answer cannot look complete.

The enforced numbers

An agent can count lines and guess at a limit, and its guess changes between runs. Iris Code answers with the thresholds your pre-push hook actually enforces, so work that passes here passes there.

Setup

One command,
any client

This is not something you type in a terminal. It goes in your agent's MCP configuration, and your agent runs it. The npx form needs no install and picks up new releases on its own. Pass --root to pin the folder Iris Code may read and write, or leave it out and your editor tells Iris Code which project is open.

package@iris-code/mcp
flag--root/path/to/project
mcp.json
{ "command": "npx", "args": ["-y", "@iris-code/mcp", "--root", "/path/to/project"] }

JetBrains IDEs

Open a project, then use Tools | Iris Code | Set Up MCP Server. Paste the copied configuration into your assistant's MCP settings.

MCP setup ↗

Claude Code

Add it as an MCP server in your project or user settings.

MCP setup ↗

Cursor

Register it under mcpServers in .cursor/mcp.json.

MCP setup ↗

Windsurf

Register it under mcpServers in the Windsurf MCP configuration.

MCP setup ↗

Copilot agent mode

Add it to the repository MCP configuration your VS Code version supports.

MCP setup ↗

Zed

Same npx command, registered as a context server.

MCP setup ↗

Rules while it writes, checks while it works

MCP lets an agent ask questions as it goes. Project rules tell it your limits before it starts. They cover different moments, and both are free.

Start with one project

Point the server at a repository you know well and ask your agent whether a file is ready to push. The answer is the one your hook would give.

Read the MCP guide ↗

Write the rules down too

iris rules puts your limits, naming convention, and gate rules into AGENTS.md or CLAUDE.md, so an agent follows them while it writes rather than after review.

Project rules ↗

See it in your editor

The same engine scores every file on save, with inline diagnostics and a health score. MCP is that engine, answering questions instead of drawing squiggles.

Install Iris Code ↗