npm package · v0.6.1 · checked 2026-09-04

Open Dashboard MCP

Ten read-only tools for comparing model economics, source health, provider availability and GitHub movement in one evidence-shaped interface.

10read-only tools
4provider registry
20+required Node version
0keys needed by default

Install it once, then let npx resolve the published package when the server starts. Every answer carries its own provenance and freshness state.

Open the matrix →

Install in your client

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 Code
claude mcp add open-dashboard -- npx -y open-dashboard-mcp

Registers the server for the current Claude Code environment.

Claude Desktop
{
  "mcpServers": {
    "open-dashboard": {
      "command": "npx",
      "args": ["-y", "open-dashboard-mcp"]
    }
  }
}
Any MCP client
npx -y open-dashboard-mcp

Communicates over stdio with protocol 2025-06-18; the checked release identifies as 0.6.1.

What it can answer

The tool list is bounded, read-only and explicit about unknowns. A missing field is not silently converted into a favorable ranking.

dashboard_source_health

Report source freshness, collector failures and available public routes.

dashboard_model_economics

Compare 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_model

Return a bounded fallback list that satisfies every explicit provider, capability and lifecycle constraint.

dashboard_model_status

Diagnose an exact model id, separating last seen from the latest complete check that could have observed its absence.

dashboard_free_models

Find currently listed, genuinely free models. Rate-limited free routing and unknown prices are kept separate.

dashboard_whats_changed

Surface appearances, disappearances, deprecations, price movement and models that stopped being free. The result is partial when the archive cannot establish full coverage.

dashboard_usage_leaders

Rank public model usage while keeping rolling app totals, latest app-model evidence and the producer-selected matrix as separate sections.

dashboard_github_movers

Return category-scoped project-family momentum for exact 7-, 30- or 90-day baselines.

dashboard_github_trending

List GitHub trending repositories with collection time, source path and a six-hour stale flag.

dashboard_key_inventory

Opt-in liveness and spend visibility for configured provider keys. It returns secret names only; values are never returned, logged or modified.

Current provider shape

The registry intentionally preserves asymmetry. “Not published” means the provider did not give the field to the source; it never means zero or free.

Package README snapshot checked 2026-09-04. OpenRouter, Groq and Cerebras rows measured 2026-08-27; Sail measured 2026-09-04.
ProviderCataloguePricingContext / modalityLifecycle / spend
OpenRouter560+Most modelsYes / yesYes / billing API
Groq13Some modelsYes / yesNo / no billing API
Cerebras2Not publishedNo / noNo / no billing API
Sail10SHA-256-pinned documentNo / noNo / 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.

Freshness is part of the answer

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.

Live

Read now

Use cache: { "ttlMs": 0 }, or disable the cache with cache: false when the question needs a fresh upstream read.

Cached

Fast repeat

The default cache TTL is five minutes. Each evidence item includes fetchedAt, ageSeconds and expiresAt.

Expired

Last known, marked

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.

Three sharp edges, made visible

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.

Discounts

Endpoint fact, not model fact

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.

Change detection

Empty is not all-clear

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

The document is the evidence

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.

Boundaries worth keeping

Unknown ≠ free

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.

No signal ≠ no risk

Groq, Cerebras and Sail do not publish the same lifecycle evidence as OpenRouter. The server reports that absence instead of calling it safe.

GitHub time is collection time

Trending data carries the origin collection timestamp, the path that served it and whether it has crossed the six-hour staleness boundary.

Read-only by construction

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 matrix has its own boundary

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.

Not in this release

Automated switching

Deliberately outside the server. The intended writer is the agent or your own deployment configuration.

Task-quality fitness

Structural constraints are available; actual “good enough for this task” quality is not modelled.

Long price history

Change detection compares the two most recent archived runs. A longer, fully dated history remains future work.

Package and source links

The package is MIT licensed. The public data server is read-only; optional key inventory remains dormant unless OPEN_DASHBOARD_KEY_SOURCES is configured.