@iris-eval/mcp-server 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -54,11 +54,25 @@ Add Iris to your MCP config. Works with Claude Desktop, Cursor, Windsurf, and an
54
54
 
55
55
  That's it. Your agent discovers Iris and starts logging traces automatically.
56
56
 
57
- Want the dashboard?
57
+ ### Turn on the dashboard
58
+
59
+ Iris ships with a real-time web dashboard showing traces, eval results, cost breakdowns, and rule pass-rates. It's off by default so the MCP server stays lightweight — flip it on with a flag.
60
+
61
+ ```json
62
+ {
63
+ "mcpServers": {
64
+ "iris-eval": {
65
+ "command": "npx",
66
+ "args": ["@iris-eval/mcp-server", "--dashboard"]
67
+ }
68
+ }
69
+ }
70
+ ```
71
+
72
+ Then open **http://localhost:6920** after your agent runs a trace. The same dashboard is available via CLI:
58
73
 
59
74
  ```bash
60
75
  npx @iris-eval/mcp-server --dashboard
61
- # Open http://localhost:6920
62
76
  ```
63
77
 
64
78
  <details>
@@ -120,9 +134,10 @@ Self-hosted Iris runs on your machine with SQLite. As your team's eval needs gro
120
134
  ## Examples
121
135
 
122
136
  - [Claude Desktop setup](examples/claude-desktop/) — MCP config for stdio and HTTP modes
123
- - [TypeScript](examples/typescript/basic-usage.ts) — MCP SDK client usage
124
- - [LangChain](examples/langchain/observe-agent.py) — Agent instrumentation
125
- - [CrewAI](examples/crewai/observe-crew.py) — Crew observability
137
+ - [TypeScript — MCP SDK client](examples/typescript/basic-usage.ts) — connect and invoke tools
138
+ - [HTTP transport (TS + Python)](examples/http-transport/) — full client code for REST-style integration
139
+ - [LangChain instrumentation (Python, conceptual)](examples/langchain/observe-agent.py) — scaffold showing the shape; needs your agent code to be runnable
140
+ - [CrewAI instrumentation (Python, conceptual)](examples/crewai/observe-crew.py) — scaffold; same caveat
126
141
 
127
142
  ## Community
128
143
 
@@ -150,14 +165,18 @@ Self-hosted Iris runs on your machine with SQLite. As your team's eval needs gro
150
165
 
151
166
  | Variable | Description |
152
167
  |----------|-------------|
153
- | `IRIS_TRANSPORT` | Transport type |
154
- | `IRIS_PORT` | HTTP port |
155
- | `IRIS_DB_PATH` | Database path |
156
- | `IRIS_LOG_LEVEL` | Log level: debug, info, warn, error |
157
- | `IRIS_DASHBOARD` | Enable dashboard (true/false) |
168
+ | `IRIS_TRANSPORT` | Transport type (`stdio` or `http`) |
169
+ | `IRIS_PORT` | HTTP transport port |
170
+ | `IRIS_HOST` | HTTP transport host (default `127.0.0.1`) |
171
+ | `IRIS_DB_PATH` | SQLite database path |
172
+ | `IRIS_LOG_LEVEL` | Log level: `debug`, `info`, `warn`, `error` |
173
+ | `IRIS_DASHBOARD` | Enable web dashboard (`true`/`false`) |
174
+ | `IRIS_DASHBOARD_PORT` | Dashboard port (default `6920`) |
158
175
  | `IRIS_API_KEY` | API key for HTTP authentication |
159
176
  | `IRIS_ALLOWED_ORIGINS` | Comma-separated allowed CORS origins |
160
177
 
178
+ CLI flags take precedence over environment variables when both are set.
179
+
161
180
  ### Security
162
181
 
163
182
  When using HTTP transport, Iris includes:
package/dist/index.js CHANGED
@@ -57,9 +57,14 @@ async function main() {
57
57
  const httpServers = [];
58
58
  // Run data retention cleanup on startup
59
59
  if (config.retention.days > 0) {
60
- const deleted = await storage.deleteTracesOlderThan(config.retention.days);
61
- if (deleted > 0) {
62
- logger.info(`Retention cleanup: deleted ${deleted} trace(s) older than ${config.retention.days} days`);
60
+ try {
61
+ const deleted = await storage.deleteTracesOlderThan(config.retention.days);
62
+ if (deleted > 0) {
63
+ logger.info(`Retention cleanup: deleted ${deleted} trace(s) older than ${config.retention.days} days`);
64
+ }
65
+ }
66
+ catch (err) {
67
+ logger.warn(`Retention cleanup skipped: ${err instanceof Error ? err.message : String(err)}`);
63
68
  }
64
69
  }
65
70
  if (config.transport.type === 'http') {
@@ -74,6 +79,9 @@ async function main() {
74
79
  const transport = createStdioTransport();
75
80
  await mcpServer.connect(transport);
76
81
  logger.info('Stdio transport connected');
82
+ if (!config.dashboard.enabled) {
83
+ logger.info(`Tip: run with --dashboard to open the web dashboard on port ${config.dashboard.port}`);
84
+ }
77
85
  }
78
86
  if (config.dashboard.enabled || config.transport.type === 'http') {
79
87
  const dashboardServer = createDashboardServer(storage, config, logger);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iris-eval/mcp-server",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "The agent eval standard for MCP. Score every agent output for quality, safety, and cost.",
5
5
  "mcpName": "io.github.iris-eval/mcp-server",
6
6
  "type": "module",
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/iris-eval/mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.2.1",
9
+ "version": "0.2.2",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@iris-eval/mcp-server",
14
- "version": "0.2.1",
14
+ "version": "0.2.2",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },