jamp-mcp
An MCP server for JAMP. It
lets MCP-capable AI agents (Claude Code, Cursor, Claude Desktop, Windsurf, and
others) run your site's monitoring end to end: install JAMP on a project,
confirm data is arriving, read errors, uptime, vitals and traffic, and mark
errors resolved after shipping a fix.
Write access is scoped. An agent can add sites and resolve errors. It cannot
delete a site, change billing or touch your account.
Tools
Setup:
jamp_create_site | Create a site and get its install snippet (write) |
jamp_verify_install | Whether the snippet is sending data yet |
jamp_install_doctor | Diagnose a silent install: fetches the served HTML and checks each tag, with a fix |
jamp_setup_sourcemaps | The CI upload key and contract for readable stack traces (write) |
jamp_enable_uptime | Turn on uptime monitoring (write) |
Read:
jamp_list_sites | Your sites and their ids (needed by the other tools) |
jamp_list_errors | Grouped JS errors, busiest first, with active/resolved/regressed status |
jamp_get_error | One error in full: scrubbed stack trace, release SHA, file:line, breakdowns |
jamp_uptime | Up/down status, uptime %, response time, recent incidents |
jamp_vitals | p75 Core Web Vitals (LCP, CLS, INP, FCP, TTFB) |
jamp_traffic | Pageviews, visitors, top pages, sources and countries |
jamp_page_audit | Scoreboard of every page's scores; pass a path for the full single-page diagnosis |
jamp_run_audit | Run a fresh one-page audit now (re-check a page after a fix) |
jamp_site_audit | Whole-site crawl: broken links, SEO problems, third-party trackers |
Fix loop:
jamp_resolve_error | Mark an error fixed (write). If it recurs it shows as regressed, not silently active |
Most read tools take an optional window of 24h, 7d (default), 30d or 90d.
Setup — hosted with OAuth (easiest)
JAMP runs the server for you at https://mcp.jamp.io/mcp and supports OAuth,
so for clients that speak it (Claude connectors, and others) you just add the URL
and the client sends you to JAMP to sign in and authorize. No token to create or
paste. JAMP is an OAuth 2.1 server with dynamic client registration and PKCE, so
the client registers itself automatically.
Add the server URL in your client's connector/MCP settings:
https://mcp.jamp.io/mcp
Setup — hosted with a token
For clients without OAuth, point your agent at the same URL with a token from
Settings → API & MCP access in an Authorization: Bearer header.
Claude Code
claude mcp add --transport http jamp https://mcp.jamp.io/mcp \
--header "Authorization: Bearer jamp_xxx"
Cursor / Claude Desktop / Windsurf
{
"mcpServers": {
"jamp": {
"url": "https://mcp.jamp.io/mcp",
"headers": { "Authorization": "Bearer jamp_xxx" }
}
}
}
Setup — local (stdio)
Prefer to run it yourself? The package is on npm, so npx is enough. Pass the
token via env. For the write tools, tick "Allow write access" when creating the
token.
Claude Code
claude mcp add jamp --env JAMP_API_TOKEN=jamp_xxx -- npx -y jamp-mcp
Cursor / Claude Desktop / Windsurf
{
"mcpServers": {
"jamp": {
"command": "npx",
"args": ["-y", "jamp-mcp"],
"env": { "JAMP_API_TOKEN": "jamp_xxx" }
}
}
}
Configuration
JAMP_API_TOKEN | yes | — | A token from Settings → API & MCP access |
JAMP_API_URL | no | https://jamp.io | Override for self-hosted instances |
The API underneath
The server is a thin wrapper over JAMP's REST API, which you can also call
directly:
curl -H "Authorization: Bearer jamp_xxx" https://jamp.io/api/v1/sites
Read: GET /api/v1/sites, /sites/:id/errors, /sites/:id/errors/:fingerprint,
/sites/:id/uptime, /sites/:id/vitals, /sites/:id/traffic,
/sites/:id/audit, /sites/:id/site-audit, /sites/:id/install-status,
/sites/:id/install-doctor.
Write (needs a write-scoped token): POST /api/v1/sites,
POST /sites/:id/uptime, GET /sites/:id/sourcemap-key,
POST /sites/:id/errors/:fingerprint/resolve (DELETE to undo).
Full docs: https://jamp.io/docs/mcp