# Honeybadger MCP Server
A Model Context Protocol (MCP) server implementation for interacting with the Honeybadger API. This server allows AI agents to fetch and analyze error data from your Honeybadger projects.
## Overview
This MCP server provides a bridge between AI agents and the Honeybadger error monitoring service. It follows the best practices laid out by Anthropic for building MCP servers, allowing seamless integration with any MCP-compatible client.
## Features
The server provides two essential tools for interacting with Honeybadger:
1. **`list_faults`**: List and filter faults from your Honeybadger project
- Search by text query
- Filter by creation or occurrence timestamps
- Sort by frequency or recency
- Paginate results
2. **`get_fault_details`**: Get detailed information about specific faults
- Filter notices by creation time
- Paginate through notices
- Results ordered by creation time descending
## Prerequisites
- Python 3.10+
- Honeybadger API key and Project ID
- Docker if running the MCP server as a container (recommended)
## Installation
### Using uv
1. Install uv if you don't have it:
```bash
pip install uv
```
2. Clone this repository:
```bash
git clone https://github.com/bobtista/honeybadger-mcp.git
cd honeybadger-mcp
```
3. Install dependencies:
```bash
uv pip install -e .
```
4. Install development dependencies (optional):
```bash
uv pip install -e ".[dev]"
```
5. Create your environment file:
```bash
cp .env.example .env
# Edit .env with your configuration
```
### Using Docker (Recommended)
1. Build the Docker image:
```bash
docker build -t honeybadger/mcp --build-arg PORT=8050 .
```
2. Create a `.env` file and configure your environment variables
## Configuration
You can configure the server using either environment variables or command-line arguments:
| Option | Env Variable | CLI Argument | Default | Description |
| ---------- | ---------------------- | ------------ | --------- | ------------------------------------------ |
| API Key | HONEYBADGER_API_KEY | --api-key | Required | Your Honeybadger API key |
| Project ID | HONEYBADGER_PROJECT_ID | --project-id | Required | Your Honeybadger project ID |
| Transport | TRANSPORT | --transport | sse | Transport protocol (sse or stdio) |
| Host | HOST | --host | 127.0.0.1 | Host to bind to when using SSE transport |
| Port | PORT | --port | 8050 | Port to listen on when using SSE transport |
| Log Level | LOG_LEVEL | --log-level | INFO | Logging level (INFO, DEBUG, etc.) |
## Running the Server
### Running with uv (Development)
#### SSE Transport (Default)
```bash
# Using environment variables:
HONEYBADGER_API_KEY=your-key HONEYBADGER_PROJECT_ID=your-project uv run src/honeybadger_mcp_server/server.py
# Using CLI arguments:
uv run src/honeybadger_mcp_server/server.py --api-key your-key --project-id your-project
```
#### Using Stdio
```bash
uv run src/honeybadger_mcp_server/server.py --transport stdio --api-key your-key --project-id your-project
```
### Running Installed Package
#### SSE Transport (Default)
```bash
# Using environment variables:
HONEYBADGER_API_KEY=your-key HONEYBADGER_PROJECT_ID=your-project honeybadger-mcp-server
# Using CLI arguments:
honeybadger-mcp-server --api-key your-key --project-id your-project
```
#### Using Stdio
```bash
honeybadger-mcp-server --transport stdio --api-key your-key --project-id your-project
```
### Using Docker
#### Run with SSE
```bash
docker run --env-file .env -p 8050:8050 honeybadger/mcp
```
#### Using Stdio
With stdio, the MCP client itself can spin up the MCP server container, so nothing to run at this point.
## Integration with MCP Clients
### SSE Configuration
Once you have the server running with SSE transport, you can connect to it using this configuration:
```json
{
"mcpServers": {
"honeybadger": {
"transport": "sse",
"url": "http://localhost:8050/sse"
}
}
}
```
### Claude Desktop Configuration
#### Using SSE Transport (Recommended)
First, start the server:
```bash
honeybadger-mcp-server --api-key your-key --project-id your-project
```
Then add to your Claude Desktop config:
```json
{
"mcpServers": {
"honeybadger": {
"transport": "sse",
"url": "http://localhost:8050/sse"
}
}
}
```
#### Using Stdio Transport
Add to your Claude Desktop config:
```json
{
"mcpServers": {
"honeybadger": {
"command": "uv",
"args": [
"run",
"--project",
"/path/to/honeybadger-mcp",
"src/honeybadger_mcp_server/server.py",
"--transport",
"stdio",
"--api-key",
"YOUR-API-KEY",
"--project-id",
"YOUR-PROJECT-ID"
]
}
}
}
```
### Docker Configuration
```json
{
"mcpServers": {
"honeybadger": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"honeybadger/mcp",
"--transport",
"stdio",
"--api-key",
"YOUR-API-KEY",
"--project-id",
"YOUR-PROJECT-ID"
]
}
}
}
```
## Tool Usage Examples
### List Faults
```python
result = await client.call_tool("list_faults", {
"q": "RuntimeError", # Optional search term
"created_after": 1710806400, # Unix timestamp (2024-03-19T00:00:00Z)
"occurred_after": 1710806400, # Filter by occurrence time
"limit": 10, # Max 25 results
"order": "recent" # 'recent' or 'frequent'
})
```
### Get Fault Details
```python
result = await client.call_tool("get_fault_details", {
"fault_id": "abc123",
"created_after": 1710806400, # Unix timestamp
"created_before": 1710892800, # Optional end time
"limit": 5 # Number of notices (max 25)
})
```
## Development
### Running Tests
```bash
# Install dev dependencies
uv pip install -e ".[dev]"
# Run tests
pytest
```
### Code Quality
```bash
# Run type checker
pyright
# Run linter
ruff check .
```
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.