Integrations

MCP clients

Query AlertINT findings from Claude Code, Codex, and other MCP clients.

AlertINT runs a persistent MCP Streamable HTTP server on port 9912, started inside alertint serve whenever the ALERTINT_MCP_TOKEN env var is set (presence-based; mcp.enabled: false forces it off). Any MCP-capable AI agent can connect to it and query incidents, evidence packs, and live metrics in natural language.

Endpoint: http://<host>:9912/mcp

Auth: Bearer token — the value of ALERTINT_MCP_TOKEN (or whichever env var mcp.token_env names in your config). The token is an opaque secret — the agent compares it byte-for-byte, so any long random string of printable ASCII works; openssl rand -hex 32 in the docs is just one way to generate one. This is a shared team credential: every client below presents the same value, so store it where teammates can retrieve it (a password manager or secret store) — not only in the deployment that set it. In a Kubernetes setup, read it back from the Secret if it wasn't saved at creation time (kubectl get secret <name> -o jsonpath='{.data.ALERTINT_MCP_TOKEN}' | base64 -d). If the value is lost entirely, set a new one and restart the agent, then update every connected client.

Copy-paste versions of the configs below also ship in the repo under examples/mcp-clients/.

Claude Code#

Export the token, then add AlertINT from the shell. --scope user makes it available in every project; use --scope local to keep it private to the current project instead:

export ALERTINT_MCP_TOKEN="<your-token>"
claude mcp add --transport http --scope user alertint http://localhost:9912/mcp --header "Authorization: Bearer ${ALERTINT_MCP_TOKEN}"

Alternatively, create .mcp.json at your project root (or merge into ~/.claude.json for global access), then reload with /mcp:

{
  "mcpServers": {
    "alertint": {
      "type": "http",
      "url": "http://localhost:9912/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_ALERTINT_MCP_TOKEN"
      }
    }
  }
}

Codex#

Export the token in the environment from which you start Codex, then add the Streamable HTTP server. Codex stores the environment-variable name, not the token itself, in its shared MCP configuration:

export ALERTINT_MCP_TOKEN="<your-token>"
codex mcp add alertint --url http://localhost:9912/mcp --bearer-token-env-var ALERTINT_MCP_TOKEN

Run codex mcp get alertint to inspect the saved entry or codex mcp list to list all configured servers. The Codex CLI, IDE extension, and desktop app use the same MCP configuration.

Alternatively, merge this into ~/.codex/config.toml for global access, or .codex/config.toml in a trusted project for project-only access:

[mcp_servers.alertint]
url = "http://localhost:9912/mcp"
bearer_token_env_var = "ALERTINT_MCP_TOKEN"

The token itself still belongs in the ALERTINT_MCP_TOKEN environment variable; do not put its value in config.toml.

For a hosted AlertINT instance, replace http://localhost:9912/mcp in the command or configuration with its HTTPS MCP endpoint.

Cursor#

Merge into ~/.cursor/mcp.json (create if absent), then restart Cursor and check Settings → MCP to confirm the server is listed:

{
  "mcpServers": {
    "alertint": {
      "url": "http://localhost:9912/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_ALERTINT_MCP_TOKEN"
      }
    }
  }
}

Windsurf#

Merge into ~/.codeium/windsurf/mcp_config.json (create if absent), then restart Windsurf and check Settings → MCP Servers:

{
  "mcpServers": {
    "alertint": {
      "serverUrl": "http://localhost:9912/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_ALERTINT_MCP_TOKEN"
      }
    }
  }
}

Available tools#

Tool Description
alertint_list_incidents List incidents with optional status and limit filters.
alertint_get_incident Get full analysis details for one incident by ID, including operator_history — the group's governing verdict and age-stamped notes, visible from any incident on the group key.
alertint_search_alerts Search raw alerts by label key and value.
alertint_get_evidence_pack Get the evidence pack and Prometheus metrics for an incident.
alertint_verify_audit Verify the hash-chained audit log and report any tampering.
prometheus_query Instant PromQL query against the connected Prometheus (requires Prometheus enabled).
prometheus_query_range Range PromQL query with auto-stepped resolution (requires Prometheus enabled).
loki_query_range Range-query the configured log backend using its native query language (requires a log source enabled).
alertint_recent_changes List recent deploys/releases/PRs matching a label selector (requires change enrichment enabled).
sentry_issues_list List live, distilled Sentry issues for a project (+ optional environment) by status (unresolved/resolved/ignored); requires the Sentry Error source enabled.
sentry_issues_trace Return full distilled stacktraces (file:line, function, in_app) for up to 10 Sentry issue ids; requires the Sentry Error source enabled.
alertint_incident_annotate Attach a permanent, age-stamped operator note to an incident — context for the next investigator; never affects triage or memory recall.
alertint_incident_capture_verdict Capture an operator-confirmed correction or confirmation as a replayable, graded record. A correction steers the next triage of its failure group (tested against live evidence, ruling-gated — never blended in) and demotes the corrected prior from strong recall; a confirmation retires steering.

Read-only toward your systems, always; feedback writes (the last two tools above) land only in AlertINT's own incident state, additive and audit-chained. Every other tool reads local AlertINT state; the Prometheus tools additionally issue queries to the configured Prometheus instance — see Prometheus.