MCP server

Connect an AI agent to JAMP so it can read your site's errors, uptime, vitals and traffic. Ask it what is broken in production and it can pull the stack trace, see which deploy it started in, and go fix it.

JAMP exposes its monitoring data through the Model Context Protocol, supported by Claude, Cursor, Claude Code and other MCP clients. It is read-only: an agent can read your data but cannot change or delete anything.

Connect with OAuth (easiest)

For clients that support OAuth, add the hosted server URL and the client sends you to JAMP to sign in and authorize. There is nothing to install and no token to paste.

https://mcp.jamp.io/mcp

JAMP is an OAuth 2.1 server with dynamic client registration and PKCE, so the client registers itself. You will see a consent screen asking to grant read access to your sites, then the connection completes.

Connect with a token

For clients without OAuth, create a token under Settings → API & MCP access and pass it in an Authorization header. With Claude Code:

claude mcp add --transport http jamp \
  https://mcp.jamp.io/mcp \
  --header "Authorization: Bearer jamp_..."

For Cursor, Claude Desktop, Windsurf and similar, add the server to the MCP config:

mcp config
{
  "mcpServers": {
    "jamp": {
      "url": "https://mcp.jamp.io/mcp",
      "headers": { "Authorization": "Bearer jamp_..." }
    }
  }
}

Run it locally (stdio)

If you would rather run the server yourself, the jamp-mcp package is a small stdio server that wraps the same API.

# from the mcp/ folder
npm install && npm run build
claude mcp add jamp --env JAMP_API_TOKEN=jamp_... -- node /abs/path/to/mcp/dist/index.js

Tools

Most tools take a site id (from jamp_list_sites) and an optional window of 24h, 7d (default), 30d or 90d.

jamp_list_sites

Your sites and their ids (needed by the other tools).

jamp_list_errors

Grouped JavaScript errors for a site, busiest first.

jamp_get_error

One error in full: scrubbed stack trace, the release it appeared in, file and line, and breakdowns.

jamp_uptime

Up or down, uptime percentage, average response time and recent incidents.

jamp_vitals

p75 Core Web Vitals (LCP, CLS, INP, FCP, TTFB) from real users.

jamp_traffic

Pageviews, unique visitors and top pages, sources and countries.

The fix-it flow

Ask your agent something like "what is the top error on my site?" It calls jamp_list_errors, picks a fingerprint, then calls jamp_get_error to get the scrubbed stack trace and the release SHA the error last appeared in, so it can open the right file at the right commit.

REST API

The MCP server is a thin wrapper over a read-only REST API you can also call directly with the same token. All responses are JSON and take an optional ?window= query parameter.

curl -H "Authorization: Bearer jamp_..." \
  https://jamp.io/api/v1/sites
GET /api/v1/sites

List the sites this token can read.

GET /api/v1/sites/:id/errors

Grouped errors, busiest first.

GET /api/v1/sites/:id/errors/:fingerprint

Full detail for one error group.

GET /api/v1/sites/:id/uptime

Status, uptime percentage and incidents.

GET /api/v1/sites/:id/vitals

p75 Core Web Vitals.

GET /api/v1/sites/:id/traffic

Traffic summary.

Security

  • Tokens and OAuth grants are read-only and cover every site in your account.
  • We store only a hash of each token, so the secret is shown once at creation. Revoke any token from Settings → API & MCP access.
  • Error messages and stack traces are scrubbed of emails, tokens and long numbers before storage, so the agent never sees that data.
  • Requests are rate limited per account (120 per minute); over that you get a 429, so a runaway client can't hammer the API.