claude mcp add open-dashboard -- npx -y open-dashboard-mcp
Registers the server for the current Claude Code environment.
npm package · v0.6.1 · checked 2026-09-04
Ten read-only tools for comparing model economics, source health, provider availability and GitHub movement in one evidence-shaped interface.
Install it once, then let npx resolve the published package when the server starts. Every answer carries its own provenance and freshness state.
Node 20 or newer. The public dashboard data needs no API key. Key inventory is opt-in and is the only tool that touches configured credentials.
claude mcp add open-dashboard -- npx -y open-dashboard-mcp
Registers the server for the current Claude Code environment.
{
"mcpServers": {
"open-dashboard": {
"command": "npx",
"args": ["-y", "open-dashboard-mcp"]
}
}
}
npx -y open-dashboard-mcp
Communicates over stdio with protocol 2025-06-18; the checked release identifies as 0.6.1.
The tool list is bounded, read-only and explicit about unknowns. A missing field is not silently converted into a favorable ranking.
dashboard_source_healthReport source freshness, collector failures and available public routes.
dashboard_model_economicsCompare OpenRouter, Groq, Cerebras and Sail on exact prices, discounts, context, modality, tools, performance, availability and retirement risk. Sail prices only count when its pinned document verifies.
dashboard_resolve_modelReturn a bounded fallback list that satisfies every explicit provider, capability and lifecycle constraint.
dashboard_model_statusDiagnose an exact model id, separating last seen from the latest complete check that could have observed its absence.
dashboard_free_modelsFind currently listed, genuinely free models. Rate-limited free routing and unknown prices are kept separate.
dashboard_whats_changedSurface appearances, disappearances, deprecations, price movement and models that stopped being free. The result is partial when the archive cannot establish full coverage.
dashboard_usage_leadersRank public model usage while keeping rolling app totals, latest app-model evidence and the producer-selected matrix as separate sections.
dashboard_github_moversReturn category-scoped project-family momentum for exact 7-, 30- or 90-day baselines.
dashboard_github_trendingList GitHub trending repositories with collection time, source path and a six-hour stale flag.
dashboard_key_inventoryOpt-in liveness and spend visibility for configured provider keys. It returns secret names only; values are never returned, logged or modified.
The registry intentionally preserves asymmetry. “Not published” means the provider did not give the field to the source; it never means zero or free.
| Provider | Catalogue | Pricing | Context / modality | Lifecycle / spend |
|---|---|---|---|---|
| OpenRouter | 560+ | Most models | Yes / yes | Yes / billing API |
| Groq | 13 | Some models | Yes / yes | No / no billing API |
| Cerebras | 2 | Not published | No / no | No / no billing API |
| Sail | 10 | SHA-256-pinned document | No / no | No / no billing API |
Sail’s catalogue publishes model ids, not programmatic prices. The server parses pricing.md only when its digest matches the pin, and carries the completion window (asap, balanced or flex) with each price.
The server reads the public zero-credential API at query time. The default host is a hobby-tier deployment with no uptime guarantee, so failure and age are returned as structured state.
Use cache: { "ttlMs": 0 }, or disable the cache with cache: false when the question needs a fresh upstream read.
The default cache TTL is five minutes. Each evidence item includes fetchedAt, ageSeconds and expiresAt.
If the upstream is unreachable but an older value exists, it is returned as expired with a note. With no value, the tool says unavailable.
Point the server at a compatible deployment with DASHBOARD_BASE_URL. It never silently substitutes a number whose freshness or provenance it cannot establish.
These are the details most likely to be flattened into a misleading “cheapest” or “nothing changed” answer. The package keeps them attached to the evidence.
Measured 2026-08-19: 0 of 550 OpenRouter model rows exposed a discount, while 272 of 272 provider endpoints did. No expiry is published, so expiresAt stays null.
dashboard_whats_changed compares the two latest archived runs. Price movement and “stopped being free” stay in their own bucket, and successful coverage remains partial when the span cannot be established.
Sail prices come from a SHA-256-pinned pricing.md, not an API. If the digest moves, prices go quiet until the pin is reconciled; asap, balanced and flex remain distinct windows.
Unpriced models stay in the response as cost-unknown. A concrete zero price, a free router tier and an absent price are three different states.
Groq, Cerebras and Sail do not publish the same lifecycle evidence as OpenRouter. The server reports that absence instead of calling it safe.
Trending data carries the origin collection timestamp, the path that served it and whether it has crossed the six-hour staleness boundary.
The server does not switch models, write configuration, mint credentials or rotate keys. An agent may use the evidence to make a decision; the server does not make the change.
The site’s Matrix page visualizes the same latest-complete app-model evidence used by dashboard_usage_leaders. It is a top-10 slice for one published period, not a complete app census or a causal attribution.
When the source returns collection_disabled or another unavailable state, the page keeps that reason visible. Archived fixture data is explicitly labelled as a snapshot and is never mixed with live rows.
Deliberately outside the server. The intended writer is the agent or your own deployment configuration.
Structural constraints are available; actual “good enough for this task” quality is not modelled.
Change detection compares the two most recent archived runs. A longer, fully dated history remains future work.
The package is MIT licensed. The public data server is read-only; optional key inventory remains dormant unless OPEN_DASHBOARD_KEY_SOURCES is configured.