Honeybadger
Interact with the Honeybadger API for error and uptime monitoring.
Honeybadger MCP Server
An MCP (Model Context Protocol) server for Honeybadger, providing structured access to Honeybadger's API through the MCP protocol.
Installation
First, pull the Docker image:
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 your Honeybadger user settings.
Cursor, Windsurf, and Claude Desktop
Put this config in ~/.cursor/mcp.json for Cursor, or ~/.codeium/windsurf/mcp_config.json for Windsurf. See Anthropic's MCP quickstart guide for how to locate your claude_desktop_config.json for 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"
}
}
}
}
Claude Code
Run this command to configure Claude 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
VS Code
Add the following to your user settings or .vscode/mcp.json in 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}"
}
}
}
}
}
See Use MCP servers in VS Code for more info.
Zed
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": {}
}
}
}
Building Docker locally
To build the Docker image and run it locally:
git clone [email protected]: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
Building from source
If you don't have Docker, you can build the server from source:
git clone [email protected]: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"
}
}
}
}
Configuration
Environment Variables
| Environment Variable | Required | Default | Description |
|---|---|---|---|
HONEYBADGER_PERSONAL_AUTH_TOKEN | yes | — | API token for Honeybadger |
HONEYBADGER_READ_ONLY | no | true | Run in read-only mode, excluding write operations like delete_project |
LOG_LEVEL | no | info | Log verbosity (debug, info, warn, error) |
HONEYBADGER_API_URL | no | https://app.honeybadger.io | Override the base URL for Honeybadger's API |
Important: The server runs in read-only mode by default for security. This means only read operations (like list_projects, get_project, list_faults) are available. Write operations such as create_project, update_project, and delete_project are excluded to prevent accidental modifications.
To enable write operations, explicitly set HONEYBADGER_READ_ONLY=false. Use with caution as this allows destructive operations like deleting projects.
Command Line Options
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-only flag defaults to true. Set --read-only=false to enable write operations like create_project, update_project, and delete_project.
Configuration File
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
Tools
Projects
-
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 (requires
read-only=false)account_id: The account ID to associate the project with (string, required)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 (requires
read-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 (requires
read-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)
Faults
-
list_faults - Get a list of faults for a project with optional filtering and ordering
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)
-
get_fault_counts - Get fault count statistics for a project with optional filtering
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)
Insights
- 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)
Development
Local Development Setup
This project uses the api-go library for API interactions. For local development, you'll need to set up a Go workspace to work with both repositories simultaneously.
From the parent directory containing both honeybadger-mcp-server and api-go:
# Initialize the workspace (if not already done)
go work init
go work use ./honeybadger-mcp-server
go work use ./api-go
# The go.work file is gitignored and won't be committed
Now you can work on both repositories and changes to api-go will be immediately reflected when working on the MCP server.
Working with Dependencies
When using the workspace, Go uses the local api-go directory instead of fetching from GitHub. However, go.sum must still contain checksums for the published api-go module to support:
- CI/CD builds (which don't have the workspace)
- Developers who clone only this repository
- Docker builds
When to use GOWORK=off:
# Update dependencies and go.sum with published module checksums
GOWORK=off go mod tidy
# Install a specific version of a dependency
GOWORK=off go get github.com/some/[email protected]
# Test the build as if no workspace exists (simulates CI/end-user builds)
GOWORK=off go build ./...
GOWORK=off go test ./...
The GOWORK=off flag temporarily disables the workspace, ensuring that go.sum contains the correct checksums for the published modules.
Running Tests
go test ./...
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add my amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
관련 서버
Scout Monitoring MCP
스폰서Put performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
스폰서Access financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
Kubeshark
MCP access to cluster-wide L4 and L7 network traffic, packets, APIs, and complete payloads.
TakeProfit MCP
Provides access to TakeProfit.com's Indie documentation and tooling — a Python-based scripting language for building custom cloud indicators and trading strategies on the TakeProfit platform.
P4 MCP Server
Perforce P4MCP Server is a Model Context Protocol (MCP) server that integrates with the Perforce P4 version control system.
Android MCP
An MCP server that provides control over Android devices through ADB. Offers device screenshot capture, UI layout analysis, package management, and ADB command execution capabilities.
Apache SkyWalking MCP
An MCP server for integrating AI agents with the SkyWalking observability platform and its ecosystem.
AI Develop Assistant
Assists AI developers with requirement clarification, module design, and technical architecture.
Authless Remote MCP Server
An authless remote MCP server designed for deployment on Cloudflare Workers. It can be set up locally using npm create.
MCP Gateway
A gateway to translate MCP tool calls into HTTP API requests, configurable via YAML.
agentskill.sh
Search, discover, and install 55k+ AI agent skills for Claude Code, Cursor, Copilot, Windsurf, and more.
Iris
MCP-native agent evaluation and observability server — log traces, evaluate output quality, and track agent costs with 12 built-in eval rules and a real-time dashboard.