
Uptimizr
io.github.RaananWPublished by GitHub account RaananWv1.2.3Updated Nov 7, 2026
Ask an AI agent about your self-hosted 3D scene analytics: heatmaps, meshes, performance, sessions.
Overview
Queries your own self-hosted Uptimizr collector so an assistant can answer questions about 3D scene analytics: heatmaps, meshes, sessions and performance.
- What you can do
- Query sessions and scenes: list recent sessions, session metadata, walked paths, scene representations and scene lists
- Analyze attention and interaction: pointer, gaze, world, camera and position heatmaps, click rays, flow links, top meshes, dwell, blind spots, dead and rage clicks
- Review navigation and funnels: coverage, aggregate paths, backtracking, conversion funnels, retention, variant leaderboards and insight baselines, movers, anomalies and significance
- Inspect rendering performance and stability: FPS distributions, frame-time percentiles, jank, compile stalls, GPU and memory percentiles, error heatmaps and diagnostics
- Audit XR and AR: head rotation, locomotion, tracking quality…
- When to use it
- Use it when your team already runs an Uptimizr collector for a 3D, WebGL or XR product and you want an assistant to answer natural-language questions about engagement, funnels or frame-rate regressions without opening a dashboard.
- Requirements
- Runs locally over stdio via npx from the npm package @uptimizr/mcp, so Node.js is needed. Requires UPTIMIZR_COLLECTOR_URL (base URL of your own collector) and UPTIMIZR_API_KEY, sent as the x-api-key header. The key needs the query capability; add annotate to enable metadata tools. Network access to your collector is required.
Installation
In SourceWeft
- Open Uptimizr in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
@uptimizr/mcp
A Model Context Protocol server over an Uptimizr collector's API. It lets an AI agent ask natural-language questions about your 3D analytics ("what was the most-clicked mesh this week?") and have them answered by querying your own collector — nothing is sent to any third party.
The server is a thin wrapper: each analytics tool maps one-to-one to a documented collector query
endpoint (see
integration docs) and performs
GET requests only. There is no ingestion tool, and nothing here can write, alter or delete an
analytics event — events are read-only. A key holding query:raw additionally gets
session_narrative, the compacted account of one session, on a collector running with
ENABLE_RAW_SESSION_RETENTION.
The one exception is gated: when the configured key holds the annotate capability the server also
registers the project-metadata tools annotate, define_term, save_analysis, pin_panel and
unpin_panel (plus list_annotations, list_glossary, list_analyses, list_panels), which
leave notes, definitions, saved analyses and pinned panels behind. The server asks
GET /api/v1/whoami once at start-up, so a read-only key yields a
read-only server, and every metadata write is recorded in the project's agent audit log.
How it connects
The server talks only to your collector's HTTP query API — it never opens the database (DuckDB/ClickHouse/Postgres) directly. The collector stays the single gateway to your data, so an agent gets exactly the auth, project-scoping, and privacy guarantees a dashboard user does:
Run
Configure an MCP client
Most MCP clients (Claude Desktop, VS Code, etc.) launch the server over stdio. Example client config:
For GitHub Copilot CLI, put the same entry in ~/.copilot/mcp-config.json with
"type": "local" and "tools": ["*"], then restart the CLI so it loads the tools:
Tools
The catalog is generated from the semantic metric registry in @uptimizr/metrics (ADR 0051 §1):
every metric the collector serves on a read endpoint is a tool — 76 of them, one table row
each, of which a plain query key sees 75 (session_narrative needs query:raw). Each tool's
description carries the metric's interpretation notes and caveats, and each declares an MCP
outputSchema covering every format envelope it can answer with — the rows, the table
envelope around them (the tools' default), or a summary digest. Results come back as both
content text and structuredContent. Read uptimizr://capabilities for each tool's result
grain, column units, row schema and caveats; the same registry drives the collector's
GET /api/v1/openapi.json.
Most tools accept an optional time range (since / until, epoch ms) and the filters the
underlying endpoint supports (scene, session, source, bins, cellSize, interval, type,
limit, cameraMode, region, …). session_meta, session_trajectory and
scene_representation take a required id.
Resources & prompts
The server also exposes read-only resources for self-discovery — uptimizr://capabilities
(a machine-readable descriptor of event types, the tool catalog, parameter semantics, and
metrics: the collector's whole semantic metric registry, with each metric's result grain, column
units, row JSON Schema, row limits, interpretation and caveats — ADR 0051) and
uptimizr://context (the live project context document), uptimizr://scenes (live scene ids) and
uptimizr://skills (the methodology catalog below) — plus one curated prompt per packaged
skill, listed in the table below, that drives the tools above. See the
MCP guide for details.
Methodology skills
Each prompt template is a packaged skill — an Agent Skills file, skills/<name>/SKILL.md,
shipped in this package — so the method an agent follows is readable, forkable and identical to the
one uptimizr agent report --skill runs on your collector. The catalog is also served as the
uptimizr://skills resource. * marks a required argument.
Hosted transport (Streamable HTTP)
The collector can serve this same server itself, over MCP's Streamable HTTP transport, so a
remote agent connects with a URL and a key instead of launching this package locally (ADR 0051 §7).
Start the collector with COLLECTOR_MCP_HTTP=1 and point a client at /mcp:
x-api-key works in place of the bearer header, the key still needs only query, and the tools,
resources and prompts are identical — both transports are built by the same createMcpServer()
below. Tool calls made that way are recorded in the collector's audit log with
surface: "mcp-http"; calls from this package over stdio are ordinary HTTP reads, recorded as
http. See the
hosted transport guide.
Programmatic use
createMcpServer(client, options?) takes an optional options.capabilities — the capability set of
the API key the server instance is bound to. The collector-hosted transport passes the key it
resolved, so a session's surface can only narrow to what its key may do; omitting it (as the stdio
entry point does) registers the whole read catalog and leaves enforcement to the collector.
The package also exports readTools, rawTools, writeTools, CollectorError, version, and the
related public types. The read-only analytics catalog (readTools), the annotate-gated
writeTools, and the collector client are defined in the
framework-agnostic @uptimizr/agent-core package and re-exported here,
so the agent tool surface is defined once and shared across the MCP server, the dashboard assistant,
and the demo assistant (ADR 0050). Building a non-MCP agent? Depend on @uptimizr/agent-core
directly — it also ships a headless provider-adapter interface and tool-calling loop.
Develop
Licensed under Apache-2.0.
Source: oss/packages/mcp/README.md at commit 4e64022
Tools
0Version history
1- v1.2.3LatestNov 7, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts