honeycomb-mcp-server
by kajirita2002
Verified
# Honeycomb MCP Server
<a href="https://glama.ai/mcp/servers/honeycomb-mcp-server">
<img width="380" height="200" src="https://glama.ai/mcp/servers/@kajirita2002/honeycomb-mcp-server/badge" alt="Honeycomb MCP server" />
</a>
*Read this in [Japanese](README.ja.md)*
## Overview
This server is an interface that uses the [Model Context Protocol (MCP)](https://github.com/anthropics/anthropic-cookbook/tree/main/model_context_protocol) to enable Claude AI to interact with the [Honeycomb API](https://docs.honeycomb.io/api//).
With this MCP server, Claude AI can perform operations such as retrieving, creating, and updating Honeycomb datasets, queries, events, boards, markers, SLOs, and triggers.
## About the Repository
This repository provides a standalone implementation of the Honeycomb MCP server. It integrates Claude AI with Honeycomb to streamline observability and monitoring workflows.
## Setup
### Prerequisites
- Node.js 18 or higher
- Honeycomb API key
### Installation
```bash
# Install globally
npm install -g @kajirita2002/honeycomb-mcp-server
# Or use directly with npx
npx @kajirita2002/honeycomb-mcp-server
```
### Setting Environment Variables
```bash
# Set environment variables
export HONEYCOMB_API_KEY="your_honeycomb_api_key"
```
### MCP Configuration Example
If you're using this MCP server, add the following configuration to your `mcp_config.json` file:
```json
"honeycomb": {
"command": "npx",
"args": ["-y", "@kajirita2002/honeycomb-mcp-server"],
"env": {
"HONEYCOMB_API_KEY": "your_honeycomb_api_key"
}
}
```
### Starting the Server
```bash
# Start the server
npm start
```
## Available Tools
This MCP server provides the following tools:
### Authentication
1. `honeycomb_auth`
- Authenticates with the Honeycomb API
- Input:
- `apiKey` (string, optional): Honeycomb API key (if not provided, uses environment variable)
#### Dataset Management
1. `honeycomb_datasets_list`
- Lists all available datasets
- No input parameters required
2. `honeycomb_dataset_get`
- Gets information about a specific dataset
- Input:
- `datasetSlug` (string, required): Slug of the dataset
3. `honeycomb_datasets_create`
- Creates a new dataset
- Input:
- `name` (string, required): Name of the dataset
- `description` (string, optional): Description of the dataset
#### Column Management
1. `honeycomb_columns_list`
- Lists all columns in a dataset
- Input:
- `datasetSlug` (string, required): Slug of the dataset
#### Query Management
1. `honeycomb_query_create`
- Creates a new query for a dataset
- Input:
- `datasetSlug` (string, required): Slug of the dataset
- `query` (object, required): Query configuration
2. `honeycomb_query_result_create`
- Executes a query and returns the results
- Input:
- `datasetSlug` (string, required): Slug of the dataset
- `query` (object, required): Query configuration
#### Event Management
1. `honeycomb_event_create`
- Creates a new event in a dataset
- Input:
- `datasetSlug` (string, required): Slug of the dataset
- `data` (object, required): Event data
#### Board Management
1. `honeycomb_boards_list`
- Lists all boards
- No input parameters required
2. `honeycomb_board_get`
- Gets information about a specific board
- Input:
- `boardId` (string, required): ID of the board
3. `honeycomb_board_create`
- Creates a new board
- Input:
- `name` (string, required): Name of the board
- `description` (string, optional): Description of the board
- `query_ids` (array of strings, optional): Query IDs to include in the board
4. `honeycomb_board_update`
- Updates an existing board
- Input:
- `boardId` (string, required): ID of the board to update
- `name` (string, optional): New name for the board
- `description` (string, optional): New description for the board
- `query_ids` (array of strings, optional): New query IDs to include in the board
#### Marker Management
1. `honeycomb_markers_list`
- Lists all markers for a dataset
- Input:
- `datasetSlug` (string, required): Slug of the dataset
2. `honeycomb_marker_create`
- Creates a new marker
- Input:
- `datasetSlug` (string, required): Slug of the dataset
- `message` (string, required): Message for the marker
- `type` (string, required): Type of the marker
- `start_time` (string, required): Start time for the marker
- `end_time` (string, optional): End time for the marker
- `url` (string, optional): URL associated with the marker
- Input:
- `datasetSlug` (string, required): Slug of the dataset
- `markerId` (string, required): ID of the marker to delete
## Example Usage
Here's an example of Claude using this MCP server to create a new Honeycomb dataset and add an event:
```
[Claude] Please create a new dataset in Honeycomb called "Application Monitoring" with a description "Monitoring for our production application".
[User] I'll help you create a new dataset in Honeycomb.
[Claude] I'll create a new dataset for you in Honeycomb.
I'll use the honeycomb_datasets_create tool:
Input:
{
"name": "Application Monitoring",
"description": "Monitoring for our production application"
}
The dataset has been created successfully!
[Claude] Now, let me add an event to this dataset. I'll create an event with some sample metrics.
I'll use the honeycomb_event_create tool:
Input:
{
"datasetSlug": "application-monitoring",
"data": {
"service": "api-gateway",
"duration_ms": 45.2,
"status_code": 200,
"endpoint": "/users",
"method": "GET"
}
}
Event created successfully! You can now see this event in the Honeycomb UI under the Application Monitoring dataset.
[Claude] I can also create a query to analyze this data. Let me create a query that shows the average duration by endpoint.
I'll use the honeycomb_query_create tool:
Input:
{
"datasetSlug": "application-monitoring",
"query": {
"calculations": [
{
"op": "AVG",
"column": "duration_ms"
}
],
"breakdowns": ["endpoint"],
"time_range": 3600
}
}
```
### Common Integration Patterns
1. **Observability Automation**
```
[User] Claude, please help me set up a new SLO for API response times.
[Claude] I can help with that. Let me create an SLO to track API response times.
I'll use honeycomb_slo_create with these parameters:
{
"datasetSlug": "production-api",
"name": "API Response Time SLO",
"description": "Tracks response time for critical API endpoints",
"sli": {
"alias": "Response Time < 300ms",
"conditions": {
"column": "duration_ms",
"operator": "<",
"value": 300
}
},
"time_period_days": 30,
"target_per_million": 995000
}
```
2. **Incident Investigation**
```
[User] We're seeing elevated error rates in production. Can you help investigate?
[Claude] I'll help investigate the elevated error rates. Let me query the recent error data.
First, I'll use honeycomb_query_result_create:
{
"datasetSlug": "production",
"query": {
"calculations": [
{
"op": "COUNT"
}
],
"filters": [
{
"column": "status_code",
"operator": ">=",
"value": 500
}
],
"breakdowns": ["service", "endpoint"],
"time_range": 3600,
"granularity": 60
}
}
```
Creating dataset "Application Monitoring" with the description "Monitoring for our production application"...
[Claude uses honeycomb_datasets_create]
The dataset has been successfully created! Now we can add events to it.
Would you like me to create a sample event in the dataset to test it?
[User] Yes, please add a sample event.
[Claude] I'll add a sample event to the "Application Monitoring" dataset.
[Claude uses honeycomb_event_create]
Success! I've added a sample event to your "Application Monitoring" dataset with the following data:
{
"service": "api-server",
"message": "User login successful",
"duration_ms": 45,
"status_code": 200,
"endpoint": "/api/login",
"timestamp": "2025-03-25T14:30:00Z"
}
This event represents a successful user login operation that took 45ms to complete.
You can now view this event in your Honeycomb dashboard and start building queries to analyze your data.
```
## Error Handling
This MCP server returns error information in a consistent format. When an error occurs, the following structure is returned:
```json
{
"error": {
"message": "Detailed error description",
"code": "ERROR_CODE"
}
}
```
### Common Error Codes
- `AUTH_ERROR`: Authentication failed. Check your API key.
- `NOT_FOUND`: The requested resource was not found.
- `INVALID_PARAMETER`: One or more parameters are invalid.
- `RATE_LIMIT`: Honeycomb API rate limit has been reached.
- `SERVER_ERROR`: Internal server error occurred.
### Troubleshooting Tips
1. **Authentication Issues**
- Ensure your `HONEYCOMB_API_KEY` is set correctly
- Verify the API key has appropriate permissions
2. **Dataset Not Found**
- Confirm that the dataset slug is correct (check for typos)
- Make sure the dataset exists in your Honeycomb account
3. **Query Execution Issues**
- Validate that query parameters are formatted correctly
- Check column names in queries match those in your dataset
## Contributing
Contributions to the Honeycomb MCP server are welcome! Here's how you can contribute:
### Development Setup
1. Fork the repository
2. Clone your fork
```bash
git clone https://github.com/your-username/honeycomb-mcp-server.git
```
3. Install dependencies
```bash
npm install
```
4. Make your changes
5. Run the build
```bash
npm run build
```
6. Test your changes locally
### Pull Request Process
1. Create a feature branch
```bash
git checkout -b feat-your-feature-name
```
2. Commit your changes following [Conventional Commits](https://www.conventionalcommits.org/) format
```bash
git commit -m "feat: add new feature"
```
3. Push to your fork
```bash
git push origin feat-your-feature-name
```
4. Open a Pull Request
### Coding Standards
- Use TypeScript for all new code
- Follow the existing code style
- Add comments for public APIs
- Write tests for new functionality
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.