Honeybadger
About
Interact with the Honeybadger API for error and uptime monitoring.
Details
- Author
- honeybadger-io
- Categories
- Developer Tools
Jump to
Setup
Install Honeybadger in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/honeybadger-io/honeybadger-mcp-server
Follow the installation instructions in the repository README, then restart your MCP client.
An MCP (Model Context Protocol) server forHoneybadger, providing structured access to Honeybadger's API through the MCP protocol.
docker pull ghcr.io/honeybadger-io/honeybadger-mcp-server:latest
Then, configure your MCP client(s). You can find your personal auth token under the "Authentication" tab in yourHoneybadger user settings.
Put this config in~/.cursor/mcp.jsonforCursor, or~/.codeium/windsurf/mcp_config.jsonforWindsurf. See Anthropic'sMCP quickstart guidefor how to locate yourclaude_desktop_config.jsonfor Claude Desktop:
{ "mcpServers": { "honeybadger": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "HONEYBADGER_PERSONAL_AUTH_TOKEN", "ghcr.io/honeybadger-io/honeybadger-mcp-server" ], "env": { "HONEYBADGER_PERSONAL_AUTH_TOKEN": "your personal auth token" } } } }
Run this command to configureClaude Code:
claude mcp add honeybadger -- docker run -i --rm -e HONEYBADGER_PERSONAL_AUTH_TOKEN="HONEYBADGER_PERSONAL_AUTH_TOKEN" ghcr.io/honeybadger-io/honeybadger-mcp-server:latest
Add the following to youruser settingsor.vscode/mcp.jsonin your workspace:
{ "mcp": { "inputs": [ { "type": "promptString", "id": "honeybadger_auth_token", "description": "Honeybadger Personal Auth Token", "password": true } ], "servers": { "honeybadger": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "HONEYBADGER_PERSONAL_AUTH_TOKEN", "ghcr.io/honeybadger-io/honeybadger-mcp-server" ], "env": { "HONEYBADGER_PERSONAL_AUTH_TOKEN": "${input:honeybadger_auth_token}" } } } } }
SeeUse MCP servers in VS Codefor more info.
Add the following to your Zed settings file in~/.config/zed/settings.json:
{ "context_servers": { "honeybadger": { "command": { "path": "docker", "args": [ "run", "-i", "--rm", "-e", "HONEYBADGER_PERSONAL_AUTH_TOKEN", "ghcr.io/honeybadger-io/honeybadger-mcp-server" ], "env": { "HONEYBADGER_PERSONAL_AUTH_TOKEN": "your personal auth token" } }, "settings": {} } } }
To build the Docker image and run it locally:
git clone git@github.com:honeybadger-io/honeybadger-mcp-server.git cd honeybadger-mcp-server docker build -t honeybadger-mcp-server .
Then you can replace "ghcr.io/honeybadger-io/honeybadger-mcp-server" with "honeybadger-mcp-server" in any of the configs above. Or you can run the image directly:
docker run -i --rm -e HONEYBADGER_PERSONAL_AUTH_TOKEN honeybadger-mcp-server
If you don't have Docker, you can build the server from source:
git clone git@github.com:honeybadger-io/honeybadger-mcp-server.git cd honeybadger-mcp-server go build -o honeybadger-mcp-server ./cmd/honeybadger-mcp-server
And then configure your MCP client to run the server directly:
{ "mcpServers": { "honeybadger": { "command": "/path/to/honeybadger-mcp-server", "args": ["stdio"], "env": { "HONEYBADGER_PERSONAL_AUTH_TOKEN": "your personal auth token" } } } }
Important: The server runs inread-only mode by defaultfor security. This means only read operations (likelist_projects,get_project,list_faults) are available. Write operations such ascreate_project,update_project, anddelete_projectare excluded to prevent accidental modifications.
To enable write operations, explicitly setHONEYBADGER_READ_ONLY=false.Use with cautionas this allows destructive operations like deleting projects.
The server defaults to Honeybadger's US API (https://app.honeybadger.io). If your account is in theEU region, setHONEYBADGER_API_URLtohttps://eu-app.honeybadger.ioand use a personal auth token from yourEU user settings. A US token won't authenticate against the EU region, and vice versa.
claude mcp add honeybadger-eu -- docker run -i --rm -e HONEYBADGER_PERSONAL_AUTH_TOKEN="your_eu_token" -e HONEYBADGER_API_URL="https://eu-app.honeybadger.io" ghcr.io/honeybadger-io/honeybadger-mcp-server:latest
To use both regions at once, run two servers with distinct names (for examplehoneybadger-usandhoneybadger-eu), each with its own token and API URL.
When running the server via the CLI you can configure the server with command-line flags:
# Run with custom configuration ./honeybadger-mcp-server stdio --auth-token your_token --log-level debug --api-url https://custom.honeybadger.io # Enable write operations (use with caution) ./honeybadger-mcp-server stdio --auth-token your_token --read-only=false # Get help ./honeybadger-mcp-server stdio --help
The--read-onlyflag defaults totrue. Set--read-only=falseto enable write operations likecreate_project,update_project, anddelete_project.
You can also use a configuration file at~/.honeybadger-mcp-server.yaml:
auth-token: "your_token_here" log-level: "info" api-url: "https://app.honeybadger.io" read-only: true
- get_reference- Returns Honeybadger reference documentation for LLMs, organized into non-overlapping topics:badgerql(query language),queries(Insights query fundamentals),charts(visualization views,chart_config),dashboards(widget schema, grid layout),alarms(trigger_configschema, states, patterns), anderrors(fault/notice model, error search syntax). Topics are fetched from thedocs siteand cached in memory. Tool descriptions declare which topics they require.
- topics: Reference topics to fetch, e.g.["badgerql", "charts"]. Use["all"]for everything; omit for an index of topics (array of strings, optional)
-
list_projects- List all Honeybadger projects
- account_id: Account ID to filter projects by specific account (string, optional)
get_project- Get detailed information for a single project by ID
- id: The ID of the project to retrieve (number, required)
create_project- Create a new Honeybadger project(requiresread-only=false)
- account_id: The account ID to associate the project with. If omitted, the project is created in the first account your auth token has access to (string, optional)
- name: The name of the new project (string, required)
- resolve_errors_on_deploy: Whether all unresolved faults should be marked as resolved when a deploy is recorded (boolean, optional)
- disable_public_links: Whether to allow fault details to be publicly shareable via a button on the fault detail page (boolean, optional)
- user_url: A URL format like 'http://example.com/admin/users/[user_id]' that will be displayed on the fault detail page (string, optional)
- source_url: A URL format like 'https://gitlab.com/username/reponame/blob/[sha]/[file]#L[line]' that is used to link lines in the backtrace to your git browser (string, optional)
- purge_days: The number of days to retain data (up to the max number of days available to your subscription plan) (number, optional)
- user_search_field: A field such as 'context.user_email' that you provide in your error context (string, optional)
update_project- Update an existing Honeybadger project(requiresread-only=false)
- id: The ID of the project to update (number, required)
- name: The name of the project (string, optional)
- resolve_errors_on_deploy: Whether all unresolved faults should be marked as resolved when a deploy is recorded (boolean, optional)
- disable_public_links: Whether to allow fault details to be publicly shareable via a button on the fault detail page (boolean, optional)
- user_url: A URL format like 'http://example.com/admin/users/[user_id]' that will be displayed on the fault detail page (string, optional)
- source_url: A URL format like 'https://gitlab.com/username/reponame/blob/[sha]/[file]#L[line]' that is used to link lines in the backtrace to your git browser (string, optional)
- purge_days: The number of days to retain data (up to the max number of days available to your subscription plan) (number, optional)
- user_search_field: A field such as 'context.user_email' that you provide in your error context (string, optional)
delete_project- Delete a Honeybadger project(requiresread-only=false)
- id: The ID of the project to delete (number, required)
get_project_occurrence_counts- Get occurrence counts for all projects or a specific project
- project_id: Project ID to get occurrence counts for a specific project (number, optional)
- period: Time period for grouping data: 'hour', 'day', 'week', or 'month'. Defaults to 'hour' (string, optional)
- environment: Environment name to filter results (string, optional)
get_project_integrations- Get a list of integrations (channels) for a Honeybadger project
- project_id: The ID of the project to get integrations for (number, required)
get_project_report- Get report data for a Honeybadger project
- project_id: The ID of the project to get report data for (number, required)
- report: The type of report to get: 'notices_by_class', 'notices_by_location', 'notices_by_user', or 'notices_per_day' (string, required)
- start: Start date/time in ISO 8601 format for the beginning of the reporting period (string, optional)
- stop: Stop date/time in ISO 8601 format for the end of the reporting period (string, optional)
- environment: Environment name to filter results (string, optional)
-
list_faults- Get a list of faults for a project with optional filtering and ordering. Fetch theerrorsreference topic (viaget_reference) for the fault/notice model and theqsearch syntax.
- project_id: The ID of the project to get faults for (number, required)
- q: Search string to filter faults (string, optional)
- created_after: Filter faults created after this timestamp (string, optional)
- occurred_after: Filter faults that occurred after this timestamp (string, optional)
- occurred_before: Filter faults that occurred before this timestamp (string, optional)
- limit: Maximum number of faults to return (max 25) (number, optional)
- order: Order results by 'recent' or 'frequent' (string, optional)
- page: Page number for pagination (number, optional)
get_fault- Get detailed information for a specific fault in a project
- project_id: The ID of the project containing the fault (number, required)
- fault_id: The ID of the fault to retrieve (number, required)
update_fault- Update a fault's resolved, ignored, assignee, or resolve-on-deploy state. Only the provided fields are changed.
- project_id: The ID of the project containing the fault (number, required)
- fault_id: The ID of the fault to update (number, required)
- resolved: Whether the fault is resolved (boolean, optional)
- ignored: Whether the fault is ignored (boolean, optional)
- assignee_id: Positive integer to assign that user; null to remove the current assignee; omit to leave unchanged (integer or null, optional)
- resolve_on_deploy: Mark the fault to be resolved automatically on next deploy (boolean, optional)
get_fault_counts- Get fault count statistics for a project with optional filtering. Fetch theerrorsreference topic (viaget_reference) for theqsearch syntax.
- project_id: The ID of the project to get fault counts for (number, required)
- q: Search string to filter faults (string, optional)
- created_after: Filter faults created after this timestamp (string, optional)
- occurred_after: Filter faults that occurred after this timestamp (string, optional)
- occurred_before: Filter faults that occurred before this timestamp (string, optional)
list_fault_notices- Get a list of notices (individual error events) for a specific fault
- project_id: The ID of the project containing the fault (number, required)
- fault_id: The ID of the fault to get notices for (number, required)
- created_after: Filter notices created after this timestamp (string, optional)
- created_before: Filter notices created before this timestamp (string, optional)
- limit: Maximum number of notices to return (max 25) (number, optional)
list_fault_affected_users- Get a list of users who were affected by a specific fault with occurrence counts
- project_id: The ID of the project containing the fault (number, required)
- fault_id: The ID of the fault to get affected users for (number, required)
- q: Search string to filter affected users (string, optional)
- query_insights- Execute a BadgerQL query against Insights data
- project_id: The ID of the project to query insights for (number, required)
- query: BadgerQL query string to execute against your Insights data (string, required)
- ts: Time range - shortcuts like 'today', 'week', or ISO 8601 duration (e.g., 'PT3H'). Defaults to PT3H (string, optional)
- timezone: IANA timezone identifier (e.g., 'America/New_York') for timestamp interpretation (string, optional)
- stream_ids: List of stream IDs to restrict the query to specific Insights streams. Uselist_streamsto discover a project's stream IDs. Omit to query all streams (array of strings, optional)
- list_streams- List Insights data streams for a project
- project_id: The ID of the project to list streams for (number, required)
-
list_dashboards- List all Insights dashboards for a project
- project_id: The ID of the project to list dashboards for (number, required)
get_dashboard- Get a single Insights dashboard by ID
- project_id: The ID of the project the dashboard belongs to (number, required)
- dashboard_id: The ID of the dashboard to retrieve (string, required)
create_dashboard- Create a new Insights dashboard(requiresread-only=false)
- project_id: The ID of the project to create the dashboard in (number, required)
- title: The title of the dashboard (string, required)
- widgets: JSON array of widget objects. Thedashboardsreference topic has the full widget schema and examples. Each widget needs atype(insights_vis,alarms,errors,deployments,checkins,uptime) and optionallygrid({x,y,w,h}),presentation({title, subtitle}), andconfig(type-specific settings) (string, required)
- default_ts: Default time range for the dashboard. ISO 8601 duration (e.g., P1D, PT3H) or keyword (today, yesterday, week, month) (string, optional)
update_dashboard- Update an existing Insights dashboard(requiresread-only=false)
- project_id: The ID of the project the dashboard belongs to (number, required)
- dashboard_id: The ID of the dashboard to update (string, required)
- title: The title of the dashboard (string, required)
- widgets: JSON array of widget objects (seecreate_dashboard) (string, required)
- default_ts: Default time range for the dashboard (string, optional)
delete_dashboard- Delete an Insights dashboard(requiresread-only=false)
- project_id: The ID of the project the dashboard belongs to (number, required)
- dashboard_id: The ID of the dashboard to delete (string, required)
-
list_alarms- List all Insights alarms for a project
- project_id: The ID of the project to list alarms for (number, required)
get_alarm- Get a single Insights alarm by ID
- project_id: The ID of the project the alarm belongs to (number, required)
- alarm_id: The ID of the alarm to retrieve (string, required)
create_alarm- Create a new Insights alarm(requiresread-only=false). Fetch reference topicsalarms,queries, andbadgerqlfirst (viaget_reference) for thetrigger_configschema and query guidelines.
- project_id: The ID of the project to create the alarm in (number, required)
- name: The name of the alarm (string, required)
- query: BadgerQL query for the alarm. The alarm system wraps the query to count results automatically (string, required)
- evaluation_period: How often the alarm is evaluated (e.g., 5m, 1h, 1d). Minimum 1m (string, required)
- trigger_config: JSON object defining when to trigger the alarm, e.g.{"type": "alert_result_count", "config": {"operator": "gt", "value": 10}}(string, required)
- lookback_lag: Delay before evaluating to allow data to arrive (e.g., 1m, or 0s for no lag) (string, required)
- description: Optional description of the alarm (string, optional)
- stream_ids: Optional JSON array of stream IDs to query (defaults to["default"]) (string, optional)
update_alarm- Update an existing Insights alarm(requiresread-only=false). Fetch reference topicsalarms,queries, andbadgerqlfirst (viaget_reference).
- project_id: The ID of the project the alarm belongs to (number, required)
- alarm_id: The ID of the alarm to update (string, required)
- name: The name of the alarm (string, required)
- query: BadgerQL query for the alarm (string, required)
- evaluation_period: How often the alarm is evaluated (e.g., 5m, 1h, 1d). Minimum 1m (string, required)
- trigger_config: JSON object defining when to trigger the alarm (string, required)
- lookback_lag: Delay before evaluating to allow data to arrive (e.g., 1m, 0s for no lag) (string, required)
- description: Optional description of the alarm (string, optional)
- stream_ids: Optional JSON array of stream IDs to query (string, optional)
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





