Airbrake MCP by usefulapi

Read Airbrake projects, error groups, notices, deploys and stats; mute or unmute error groups.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
99%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,382Tokens (tool definitions)
~1.7 KBTypical response size
Significant attention impact (2.64% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "airbrake": {
      "url": "https://airbrake.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://airbrake.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (13)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢airbrake_list_projects(page, limit)

List the Airbrake projects your user can see, with id, name, last deploy, notice total, rejected count, deploy count and resolved/unresolved error-group counts. Start here to get a project_id. Airbrake API: GET /api/v4/projects.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "limit": {
      "description": "Items per page (default 20, max 100 here).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢airbrake_get_project(project_id)

Get one Airbrake project: name, last deploy id/time, notice total, rejection count, deploy count and resolved/unresolved error-group counts. Airbrake API: GET /api/v4/projects/{project_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Airbrake project id (from airbrake_list_projects)."
    }
  },
  "required": [
    "project_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢airbrake_list_groups(project_id, order, deploy_id, archived, muted, ...)

List a project's error groups ("errors" in the Airbrake app): each with id, resolved flag, error type/message/backtrace, context (environment, severity, component/action), last notice time, notice counts and last deploy. Sorted by last notice by default; order by notice_count, weight or created instead. Filter by deploy, archived or muted groups, or creation time. Backtraces are cut to the first 5 frames (set full_backtraces for all; airbrake_get_group shows one group in full). Airbrake API: GET /api/v4/projects/{project_id}/groups.

Input Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Airbrake project id (from airbrake_list_projects)."
    },
    "order": {
      "description": "Sort order (default last_notice).",
      "type": "string",
      "enum": [
        "last_notice",
        "notice_count",
        "weight",
        "created"
      ]
    },
    "deploy_id": {
      "description": "Only groups of this deploy.",
      "type": "string",
      "pattern": "^\\d{1,24}$"
    },
    "archived": {
      "description": "true = return archived groups.",
      "type": "boolean"
    },
    "muted": {
      "description": "true = return muted groups.",
      "type": "boolean"
    },
    "start_time": {
      "description": "Only groups created after this RFC 3339 date-time (with timezone).",
      "type": "string"
    },
    "end_time": {
      "description": "Only groups created before this RFC 3339 date-time (with timezone).",
      "type": "string"
    },
    "full_backtraces": {
      "description": "Return every backtrace frame (default: first 5 per error).",
      "type": "boolean"
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "limit": {
      "description": "Items per page (default 20, max 100 here).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "project_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢airbrake_get_group(project_id, group_id)

Get one error group in full: resolved flag, every error with its complete backtrace (file, function, line, column), context, last deploy, last notice id/time, notice counts and creation time. Airbrake API: GET /api/v4/projects/{project_id}/groups/{group_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Airbrake project id (from airbrake_list_projects)."
    },
    "group_id": {
      "type": "string",
      "pattern": "^\\d{1,24}$",
      "description": "Error group id (digits, as a string: Airbrake group ids exceed JavaScript's safe integers). From airbrake_list_groups."
    }
  },
  "required": [
    "project_id",
    "group_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢airbrake_get_group_stats(project_id, group_id, period, since, until, ...)

Occurrence counts over time for one error group: parallel arrays `time`, `accepted` (notices counted) and `limited` (dropped by rate limits), aggregated per period, from `since` until `until` (default now). Use it to see whether an error is spiking or fading. Airbrake API: GET /api/v5/projects/{project_id}/groups/{group_id}/stats.

Input Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Airbrake project id (from airbrake_list_projects)."
    },
    "group_id": {
      "type": "string",
      "pattern": "^\\d{1,24}$",
      "description": "Error group id (digits, as a string: Airbrake group ids exceed JavaScript's safe integers). From airbrake_list_groups."
    },
    "period": {
      "type": "string",
      "pattern": "^(\\d{1,3}[mhd]|minute|hour|day)$",
      "description": "Aggregation period. The reference lists 1m, 5m, 15m, 30m, 2h, 3h, 6h, 12h, 24h (project stats) and minute, hour (group stats)."
    },
    "since": {
      "type": "string",
      "description": "Start (inclusive), RFC 3339 date-time with timezone; sent as time__gte in Unix seconds."
    },
    "until": {
      "description": "End (exclusive, default now), RFC 3339 date-time with timezone; sent as time__lt.",
      "type": "string"
    },
    "limit": {
      "description": "Max data points (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "required": [
    "project_id",
    "group_id",
    "period",
    "since"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢airbrake_list_notices(project_id, group_id, version, full_backtraces, page, ...)

List the individual occurrences (notices) of one error group, newest first: each with id, deploy, errors and backtrace, context (environment, hostname, app version, user, URL, severity, notifier), environment, session and request params, and created time. Optionally only notices of one app version. Backtraces are cut to the first 10 frames unless full_backtraces is set. Airbrake API: GET /api/v4/projects/{project_id}/groups/{group_id}/notices.

Input Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Airbrake project id (from airbrake_list_projects)."
    },
    "group_id": {
      "type": "string",
      "pattern": "^\\d{1,24}$",
      "description": "Error group id (digits, as a string: Airbrake group ids exceed JavaScript's safe integers). From airbrake_list_groups."
    },
    "version": {
      "description": "Only notices reported by this app version (e.g. 1.0).",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "full_backtraces": {
      "description": "Return every backtrace frame (default: first 10 per error).",
      "type": "boolean"
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "limit": {
      "description": "Items per page (default 20, max 100 here).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "project_id",
    "group_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢airbrake_get_notice_status(project_id, notice_id)

Check what happened to a reported error, by the notice id that Airbrake's create-notice API returned: code = processed (groupId = its error group), rejected (message = why, e.g. an app-version filter), archived (past retention) or not_found (unknown or still processing). Airbrake API: GET /api/v4/projects/{project_id}/notice-status/{notice_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Airbrake project id (from airbrake_list_projects)."
    },
    "notice_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$",
      "description": "The notice id returned by Airbrake's create-notice API (v3) when the error was reported."
    }
  },
  "required": [
    "project_id",
    "notice_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢airbrake_list_deploys(project_id, page, limit)

List a project's tracked deploys: environment, username/email of the deployer, repository, revision (commit) and version. Use it to correlate new errors with a release. Airbrake API: GET /api/v4/projects/{project_id}/deploys.

Input Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Airbrake project id (from airbrake_list_projects)."
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "limit": {
      "description": "Items per page (default 20, max 100 here).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "project_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢airbrake_get_deploy(project_id, deploy_id)

Get one deploy: environment, deployer, repository, revision and version. Airbrake API: GET /api/v4/projects/{project_id}/deploys/{deploy_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Airbrake project id (from airbrake_list_projects)."
    },
    "deploy_id": {
      "type": "string",
      "pattern": "^\\d{1,24}$",
      "description": "Deploy id (digits, as a string). From airbrake_list_deploys or a group's lastDeployId."
    }
  },
  "required": [
    "project_id",
    "deploy_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢airbrake_list_activities(project_id, page, limit)

List a project's activity feed: who did what and when (for example group.resolved), with user name, activity, the affected object (trackableType/trackableId) and timestamps. Airbrake API: GET /api/v4/projects/{project_id}/activities.

Input Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Airbrake project id (from airbrake_list_projects)."
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "limit": {
      "description": "Items per page (default 20, max 100 here).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "project_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢airbrake_get_project_stats(project_id, period, since, limit)

Error volume over time for a whole project: parallel arrays `time`, `accepted` (notices counted), `limited` (dropped by rate limits) and `overQuota` (dropped over the plan quota), aggregated per period (1m, 5m, 15m, 30m, 2h, 3h, 6h, 12h, 24h). Airbrake API: GET /api/v5/projects/{project_id}/stats.

Input Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Airbrake project id (from airbrake_list_projects)."
    },
    "period": {
      "type": "string",
      "pattern": "^(\\d{1,3}[mhd]|minute|hour|day)$",
      "description": "Aggregation period. The reference lists 1m, 5m, 15m, 30m, 2h, 3h, 6h, 12h, 24h (project stats) and minute, hour (group stats)."
    },
    "since": {
      "description": "Start (inclusive), RFC 3339 date-time with timezone; sent as time__gte in Unix seconds.",
      "type": "string"
    },
    "limit": {
      "description": "Max data points (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "required": [
    "project_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴airbrake_mute_group(project_id, group_id)

WRITE: mute one error group. Airbrake removes it from the default error list and stops ALL notifications for it (email, Slack and other integrations) until it is unmuted. Notices are still recorded. Reversible with airbrake_unmute_group. Airbrake API: PUT /api/v4/projects/{project_id}/groups/{group_id}/muted.

Input Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Airbrake project id (from airbrake_list_projects)."
    },
    "group_id": {
      "type": "string",
      "pattern": "^\\d{1,24}$",
      "description": "Error group id (digits, as a string: Airbrake group ids exceed JavaScript's safe integers). From airbrake_list_groups."
    }
  },
  "required": [
    "project_id",
    "group_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡airbrake_unmute_group(project_id, group_id)

WRITE: unmute one error group, so it is back in the default error list and its notifications resume. Airbrake API: PUT /api/v4/projects/{project_id}/groups/{group_id}/unmuted.

Input Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Airbrake project id (from airbrake_list_projects)."
    },
    "group_id": {
      "type": "string",
      "pattern": "^\\d{1,24}$",
      "description": "Error group id (digits, as a string: Airbrake group ids exceed JavaScript's safe integers). From airbrake_list_groups."
    }
  },
  "required": [
    "project_id",
    "group_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded13 tools