Iris
resmiServer evaluasi agen dan observabilitas native MCP dengan pencatatan jejak, evaluasi kualitas output, pelacakan biaya, 12 aturan evaluasi bawaan, dasbor real-time, dan deteksi PII
Apa yang bisa Anda lakukan dengan Iris MCP?
- Log agent runs — Minta untuk merekam eksekusi dengan
log_trace, termasuk span, panggilan alat, penggunaan token, dan biaya dalam USD. - Skor kualitas output — Gunakan
evaluate_outputuntuk memeriksa kelengkapan, relevansi, keamanan, dan biaya terhadap 13 aturan bawaan. - Kueri riwayat trace — Ambil run yang tersimpan dengan
get_traces, dengan filter berdasarkan rentang waktu, paginasi, dan kriteria lainnya. - Kelola aturan kustom — Terapkan aturan eval baru dengan
deploy_ruleatau hapus melaluidelete_ruleuntuk menyesuaikan penilaian. - Jalankan LLM-sebagai-juri — Panggil
evaluate_with_llm_judgeuntuk penilaian semantik di lima template, dengan batas biaya keras per evaluasi. - Verifikasi kutipan — Gunakan
verify_citationsuntuk mengekstrak dan memeriksa fakta sumber yang dikutip terhadap klaim melalui juri LLM.
Dokumentasi
Iris — berhenti mengirim agen berdasarkan perasaan
Iris memberi skor pada setiap eksekusi agen untuk kualitas, keamanan, dan biaya — di mesin Anda, tanpa SDK dan tanpa akun. Kebanyakan proyek agen memeriksa kualitas dengan menjalankan beberapa prompt yang diingat lalu melihat hasilnya secara sekilas. Iris menggantinya dengan angka yang bisa Anda audit: eksekusi agen Anda tersimpan di basis data SQLite di disk Anda, 13 aturan bawaan memberi skor secara deterministik — PII, penyuntikan prompt, penanda halusinasi, ambang biaya — gratis, tanpa panggilan LLM, dan juri LLM opsional dengan batas biaya keras per-evaluasi menangani pertanyaan semantik. Setiap aturan dapat diperiksa dan diedit, karena juri yang tidak bisa Anda audit hanyalah perasaan yang diberi angka. Lisensi MIT, tanpa telemetri; jejak Anda tidak pernah meninggalkan mesin Anda.
Membutuhkan Node.js 20 atau lebih baru. Periksa dengan node --version.

Kegagalan di layar dalam 60 detik
Tanpa pengaturan agen, tanpa konfigurasi — satu perintah:
npx @iris-eval/mcp-server --demo
Ini mengisi basis data demo — segelintir agen kecil dengan satu minggu eksekusi — dan menyajikan dasbor untuk itu di http://localhost:6920 (browser Anda terbuka otomatis pada eksekusi pertama). Dasbor mendarat di Failures: apa yang gagal, terburuk dan terbaru lebih dulu. Layak diklik — kebocoran PII yang tertangkap aturan keamanan, percobaan penyuntikan prompt yang ditandai, dan skor juri LLM yang gagal beserta alasannya.
Data demo tersimpan di basis datanya sendiri (demo.db di direktori utama Iris Anda — ~/.iris di macOS/Linux, %USERPROFILE%\.iris di Windows) dan tidak pernah tercampur dengan jejak asli Anda. Hapus semuanya dengan satu perintah:
npx @iris-eval/mcp-server --demo-clear
Hubungkan agen Anda sendiri
Tambahkan Iris ke konfigurasi MCP Anda. Berfungsi dengan Claude Desktop, Claude Code, Cursor, Windsurf, Continue, VS Code, Cline, Zed, Codex CLI, Gemini CLI — dan agen lain yang kompatibel dengan MCP. Satu blok, dasbor sudah termasuk:
{
"mcpServers": {
"iris-eval": {
"command": "npx",
"args": ["@iris-eval/mcp-server", "--dashboard"]
}
}
}
Agen Anda menemukan sembilan alat Iris saat terhubung, dan dasbor tersaji di http://localhost:6920. Sekarang tempel ini ke agen Anda:
Catat tugas terakhir itu ke Iris dan evaluasi keluarannya.
Jejak tersebut mendarat di dasbor beserta skornya. Lebih suka server MCP tanpa kepala? Hapus --dashboard dari argumen — Anda bisa membuka dasbor yang sama kapan saja dengan npx @iris-eval/mcp-server --dashboard.
Satu hal yang perlu diketahui sejak awal: alat MCP dipanggil saat model memutuskan untuk memanggilnya. Iris tidak mencegat agen Anda, jadi jejak dicatat saat agen Anda memintanya untuk dicatat — baik karena Anda menyuruhnya, atau karena kode Anda memanggil alat tersebut secara langsung. Minta agen Anda untuk "catat ini ke Iris dan evaluasi" dan ia akan melakukannya. Jika Anda ingin penangkapan yang tidak bergantung pada pilihan model, POST /api/v1/traces melakukan hal itu — kode Anda mengirim jejak melalui HTTP biasa, tanpa model dalam proses (lihat docs/http-ingest.md). CLI dan SDK di peta jalan akan menjadi klien tipis di atas endpoint yang sama.
Penangkapan melalui HTTP (tanpa model dalam proses)
Dengan dasbor berjalan, apa pun yang bisa mengirim permintaan HTTP dapat mencatat jejak — dan secara opsional menjalankan evaluasi deterministik dalam permintaan yang sama:
curl -s -X POST "http://127.0.0.1:6920/api/v1/traces" \
-H "Content-Type: application/json" \
-d '{
"agent_name": "support-bot",
"input": "What is the refund policy?",
"output": "Refunds are available within 30 days of purchase.",
"evaluate": true,
"eval_type": "safety"
}'
Mengembalikan 201 dengan trace_id yang tersimpan dan hasil evaluasi. Endpoint menerima badan yang sama dengan alat log_trace dan berada di belakang middleware stack loopback-only yang sama dengan dasbor lainnya. Kontrak lengkap, referensi bidang, dan semantik kesalahan: docs/http-ingest.md.
Periksa instalasi
npx @iris-eval/mcp-server --self-test
Diagnostik instalasi luring: round-trip penyimpanan, evaluasi deterministik, dasbor + pelindung DNS-rebinding — semuanya di dalam home temp terisolasi, jadi basis data asli Anda tidak pernah dibuka. Kode keluar 0 = sehat, 1 = ada pemeriksaan yang gagal.
Setup berdasarkan alat
Claude Desktop
Edit file konfigurasi MCP Anda:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Tambahkan konfigurasi JSON di atas, lalu mulai ulang Claude Desktop.
Claude Code
claude mcp add --transport stdio iris-eval -- npx @iris-eval/mcp-server
Lalu mulai ulang sesi (/clear atau luncurkan ulang) agar alat dapat dimuat.
Catatan Windows: Jangan gunakan pembungkus
cmd /c— itu menyebabkan masalah penguraian jalur. Perintahnpxberfungsi langsung.
Cursor / Windsurf
Tambahkan ke .cursor/mcp.json workspace Anda atau pengaturan MCP global menggunakan konfigurasi JSON di atas.
VS Code (MCP asli)
Tambahkan ke .vscode/mcp.json di workspace Anda (catatan: VS Code menggunakan servers, bukan mcpServers):
{
"servers": {
"iris-eval": {
"command": "npx",
"args": ["@iris-eval/mcp-server"]
}
}
}
Cline
Buka panel MCP Servers di Cline → Konfigurasi MCP Servers, dan tambahkan konfigurasi JSON mcpServers di atas ke cline_mcp_settings.json.
Zed
Tambahkan ke Zed settings.json:
{
"context_servers": {
"iris-eval": {
"command": {
"path": "npx",
"args": ["@iris-eval/mcp-server"]
}
}
}
}
OpenAI Codex CLI
Tambahkan ke ~/.codex/config.toml:
[mcp_servers.iris-eval]
command = "npx"
args = ["@iris-eval/mcp-server"]
Gemini CLI
Tambahkan konfigurasi JSON mcpServers di atas ke ~/.gemini/settings.json.
Hal lain apa pun yang mendukung MCP
Iris adalah server MCP stdio standar — satu perintah npx @iris-eval/mcp-server, tanpa SDK, tanpa perubahan kode. Jika klien Anda mendukung MCP, ia mendukung Iris. Format konfigurasi klien berubah-ubah; jika ragu, periksa dokumentasi MCP klien Anda dan arahkan ke perintah itu.
Metode Instalasi Lainnya
# Global install (recommended for persistent data and faster startup)
npm install -g @iris-eval/mcp-server
iris-mcp --dashboard
# Docker — two servers, two ports: 3000 = MCP HTTP transport,
# 6920 = dashboard (which also serves the POST /api/v1/traces ingest endpoint)
docker run -p 3000:3000 -p 6920:6920 -v iris-data:/data ghcr.io/iris-eval/mcp-server
Tips: Instalasi global (
npm install -g) menyimpan jejak secara persisten di~/.iris/iris.db. Dengannpx, jejak tersimpan di lokasi yang sama, tetapi startup lebih lambat karena resolusi paket.
Yang Anda Dapatkan
| Pencatatan Jejak | Pohon span hierarkis dengan latensi per-panggilan-alat, pemakaian token, dan biaya dalam USD. Tersimpan di SQLite, dapat ditanyakan secara instan. |
| Evaluasi Keluaran | 13 aturan bawaan di 4 kategori: kelengkapan, relevansi, keamanan, biaya. Deteksi PII (19 pola: SSN, kartu kredit, telepon, email, IBAN, DOB, MRN, IP, kunci API, paspor, plus token AWS/Slack/SendGrid/GitHub/Google/npm/DigitalOcean, blok kunci privat PEM, dan frasa seed), deteksi penyuntikan prompt (37 pola, frasa + struktural), deteksi keluaran tiruan, deteksi halusinasi (25 sinyal fabrikasi/kontradiksi berbasis konteks — berikan input untuk mengokohkannya terhadap materi sumber agen). Tambahkan aturan kustom dengan skema Zod. |
| LLM-sebagai-Juri | Penilaian semantik opsional melalui Anthropic atau OpenAI — bawa kunci API Anda sendiri. Lima templat. Batas biaya keras per-evaluasi (IRIS_LLM_JUDGE_MAX_COST_USD_PER_EVAL, default $0.25), harga per-evaluasi diungkapkan dalam hasil. |
| Visibilitas Biaya | Biaya agregat di semua agen dalam rentang waktu apa pun. Tetapkan ambang anggaran. Dapatkan peringatan saat agen membelanjakan berlebihan. |
| Dasbor Web | UI mode gelap waktu-nyata yang mendarat di kegagalan, terburuk dan terbaru lebih dulu — visualisasi jejak, hasil evaluasi, rincian biaya, dan palet perintah (⌘K) yang mencari aturan, jejak, dan evaluasi Anda sendiri. |
| Lokal-pertama | Semuanya tersimpan di SQLite di disk Anda. Tanpa akun, tanpa pendaftaran, tanpa telemetri. HTTP keluar hanya terjadi jika Anda mengikutsertakan: kunci LLM-judge Anda sendiri, pengambilan sitasi, atau eksportir OTel yang Anda konfigurasi. |
Ke mana arah selanjutnya: peta jalan.
Alat MCP
Iris mendaftarkan sembilan alat yang dapat dipanggil oleh agen apa pun yang kompatibel dengan MCP — siklus hidup aturan + jejak lengkap + LLM-sebagai-juri + verifikasi sitasi semantik:
log_trace— Mencatat eksekusi agen dengan span, panggilan alat, pemakaian token, dan biayaevaluate_output— Memberi skor kualitas keluaran terhadap aturan kelengkapan, relevansi, keamanan, dan biaya (heuristik, deterministik, gratis)get_traces— Menanyakan jejak tersimpan dengan pemfilteran, pembagian halaman, dan dukungan rentang waktulist_rules— Menghitung aturan evaluasi kustom yang diterapkan (hanya-baca)deploy_rule— Mendaftarkan aturan evaluasi kustom baru agar aktif pada setiapevaluate_outputdari kategori itudelete_rule— Menghapus aturan kustom yang diterapkan (destruktif, idempoten)delete_trace— Menghapus satu jejak tersimpan berdasarkan ID (destruktif, terlingkup-tenant)evaluate_with_llm_judge— Evaluasi semantik melalui LLM (Anthropic atau OpenAI). Lima templat: akurasi, kebermanfaatan, keamanan, kebenaran, kesetiaan. Berbatas biaya, harga per-evaluasi diungkapkan. Bawa kunci API Anda sendiri (IRIS_ANTHROPIC_API_KEYatauIRIS_OPENAI_API_KEY) — Iris tidak mem-proxy atau meneruskan panggilan LLM.verify_citations— Mengekstrak sitasi dari keluaran (bernomor, penulis-tahun, URL, DOI), mengambil sumber di belakang resolver berpelindung-SSRF + daftar-putih-domain, dan menggunakan juri LLM untuk memeriksa apakah setiap sumber benar-benar mendukung klaim yang disitasi. HTTP keluar bersifat ikut-serta. Persyaratan BYOK yang sama denganevaluate_with_llm_judge.
Saat IRIS_OTEL_ENDPOINT dikonfigurasi, panggilan log_trace juga mengeluarkan ekspor JSON OTLP/HTTP sebaik-mungkin ke kolektor OpenTelemetry mana pun (Jaeger, Grafana Tempo, Datadog OTLP, Honeycomb, dll.). Lihat docs/otel-integration.md.
Bagaimana passed ditentukan
evaluate_output mengembalikan bendera score dan passed — keduanya menjawab pertanyaan yang berbeda:
score(0..1) adalah rata-rata tertimbang di seluruh aturan yang berjalan — gradien kualitas.passedadalah vonis kirim/jangan-kirim:truehanya saat skor melewati ambang kelulusan (default 0,7) dan tidak ada aturan kritis yang gagal.
Pelanggaran keamanan yang sesungguhnya gagal-keras. no_pii, no_injection_patterns, dan no_blocklist_words adalah aturan kritis: jika satu gagal, evaluasi melaporkan passed: false tidak peduli seberapa baik aturan lain memberi skor, dan respons menyebutkan pelakunya di critical_failures. SSN yang bocor tidak bisa dirata-ratakan. Aturan kustom yang diterapkan dengan severity: "high" atau "critical" gagal-keras dengan cara yang sama; tingkat keparahan low/medium hanya memengaruhi skor. Satu batasan yang perlu diketahui: aturan kritis yang dilewati (konteks hilang, atau penyebab lain dari lompatan) belum menilai keluaran dan tidak memveto — rule_results menampilkan setiap lompatan beserta alasannya, sehingga pintu gerbang yang harus gagal-tertutup pada non-vonis bisa melakukannya.
Satu kendala untuk gerbang CI: jika Anda menghilangkan eval_type, kumpulan default completeness yang berjalan — aturan keamanan tidak ikut. Respons menggema eval_type (plus note saat itu di-default-kan) sehingga gerbang Anda dapat memverifikasi kumpulan mana yang benar-benar berjalan. Kunci pada passed untuk vonis dan eval_type: "safety" untuk cakupan.
Skema alat lengkap dan konfigurasi: iris-eval.com
Fitur ter-hosting
Iris berjalan sepenuhnya di mesin Anda saat ini, dan semua yang dilakukannya gratis dan berlisensi MIT tanpa batasan dan tanpa akun.
Penyimpanan ter-hosting, riwayat tim bersama, dan pemberitahuan sedang dipertimbangkan, bukan sedang dibangun. Tidak ada harga, dan tidak ada yang bisa dibeli. Jika riwayat bersama berguna bagi Anda, daftar tunggu adalah cara kami mengetahui apakah itu layak dibangun — itu tidak mengikat Anda pada apa pun.
Dua komitmen tetap berlaku apa pun yang terjadi: tidak ada yang gratis hari ini yang akan dipindahkan ke balik paywall, dan tidak ada sertifikasi kepatuhan yang akan diklaim sebelum dimiliki.
Contoh
- Pengaturan Claude Desktop — konfigurasi MCP untuk mode stdio dan HTTP
- TypeScript — klien SDK MCP — hubungkan dan panggil alat
- Transport HTTP (TS + Python) — kode klien lengkap untuk integrasi gaya REST
- Instrumentasi LangChain (Python, konseptual) — kerangka yang menunjukkan bentuknya; membutuhkan kode agen Anda agar dapat dijalankan
- Instrumentasi CrewAI (Python, konseptual) — kerangka; peringatan yang sama
Komunitas
- GitHub Issues — Laporan bug dan permintaan fitur
- GitHub Discussions — Pertanyaan dan ide
- Contributing Guide — Cara berkontribusi
- HTTP Ingest — Penangkapan jejak deterministik melalui
POST /api/v1/traces - Roadmap — Apa yang akan datang
Konfigurasi & Keamanan
Argumen CLI
| Bendera | Default | Deskripsi |
|---|---|---|
--transport | stdio | Jenis transport: stdio atau http |
--port | 3000 | Port transport HTTP |
--db-path | ~/.iris/iris.db | Jalur basis data SQLite |
--config | ~/.iris/config.json | Jalur file konfigurasi |
--api-key | — | Kunci API untuk autentikasi HTTP |
--dashboard | false | Aktifkan dasbor web |
--dashboard-port | 6920 | Port dasbor |
--dashboard-host | 127.0.0.1 | Alamat bind dasbor. Loopback secara default — dasbor tidak diautentikasi kecuali --api-key diatur, sehingga mengikat di luar loopback akan mengekspos seluruh riwayat jejak Anda |
--demo | false | Buat basis data demo (terpisah dari jejak asli Anda) dan sajikan dasbor terhadapnya |
--demo-clear | false | Hapus basis data demo dan keluar |
--self-test | false | Jalankan diagnostik instalasi offline di rumah temp terisolasi, lalu keluar (0 = sehat, 1 = pemeriksaan gagal) |
Variabel Lingkungan
| Variabel | Deskripsi |
|---|---|
IRIS_TRANSPORT | Jenis transport (stdio atau http) |
IRIS_PORT | Port transport HTTP |
IRIS_HOST | Host transport HTTP (default 127.0.0.1) |
IRIS_HOME | Direktori untuk semua file per pengguna: config.json, iris.db, custom-rules.json, audit.log, preferences.json (default ~/.iris) |
IRIS_DB_PATH | Jalur basis data SQLite (hanya menimpa IRIS_HOME untuk DB) |
IRIS_LOG_LEVEL | Tingkat log: debug, info, warn, error |
IRIS_DASHBOARD | Aktifkan dasbor web (true/false; false juga menimpa dashboard.enabled di config.json) |
IRIS_DASHBOARD_PORT | Port dasbor (default 6920) |
IRIS_DASHBOARD_HOST | Alamat bind dasbor (default 127.0.0.1) |
IRIS_API_KEY | Kunci API untuk autentikasi HTTP |
IRIS_ALLOWED_ORIGINS | Asal CORS yang diizinkan dipisahkan koma |
Bendera CLI lebih diutamakan daripada variabel lingkungan jika keduanya diatur.
Keamanan
Saat menggunakan transport HTTP, Iris mencakup:
- Autentikasi kunci API dengan perbandingan aman waktu
- CORS dibatasi ke localhost secara default
- Pembatasan laju (600 req/menit API dasbor, 20 req/menit MCP)
- Header keamanan Helmet
- Validasi input Zod di semua rute
- Regex aman ReDoS untuk aturan eval kustom
- Batas badan permintaan 1MB
# Production deployment
iris-mcp --transport http --port 3000 --api-key "$(openssl rand -hex 32)" --dashboard
Pemecahan Masalah
Langkah pertama: jalankan uji mandiri
npx @iris-eval/mcp-server --self-test
Ini memeriksa penyimpanan, eval deterministik, dan dasbor di rumah temp terisolasi dan mencetak vonis per langkah — output kegagalan menyebutkan langkah yang rusak. Kode keluar 0 berarti instalasi sehat.
Iris tidak mau mulai / ERR_MODULE_NOT_FOUND
Anda mungkin memiliki versi lama yang di-cache. Bersihkan cache npx dan coba lagi:
npx --yes @iris-eval/mcp-server@latest
Atau instal secara global untuk menghindari masalah cache sepenuhnya:
npm install -g @iris-eval/mcp-server@latest
Alat tidak muncul di Claude Code
Alat MCP hanya dimuat saat sesi dimulai. Setelah menambahkan iris-eval, mulai ulang sesi dengan /clear atau luncurkan ulang terminal.
Pemeriksaan versi
Iris mencatat versinya pada baris startup pertama:
npx @iris-eval/mcp-server --dashboard
# First log line: "Starting Iris MCP server vX.Y.Z"
Untuk instalasi global, npm ls -g @iris-eval/mcp-server menampilkan versi yang terinstal.
Pembaruan
# If using npx (clears cache and fetches latest)
npx --yes @iris-eval/mcp-server@latest
# If installed globally
npm update -g @iris-eval/mcp-server
Versi Node.js
Iris memerlukan Node.js 20 atau lebih baru. Node 18 mencapai EOL pada April 2025 dan tidak didukung.
node --version # Must be v20.x or v22.x+
Windows: cmd /c tidak diperlukan
/doctor milik Claude Code mungkin menyarankan membungkus npx dengan cmd /c. Ini tidak diperlukan dan menyebabkan masalah penguraian jalur. Gunakan npx secara langsung:
# Correct
claude mcp add --transport stdio iris-eval -- npx @iris-eval/mcp-server
# Wrong (causes /c to be parsed as a path)
claude mcp add --transport stdio iris-eval -- cmd /c "npx @iris-eval/mcp-server"
Jika Iris berguna bagi Anda, pertimbangkan untuk memberi bintang pada repo — ini membantu orang lain menemukannya.
Dilisensikan MIT.