A GoLang implementation of an MCP (Model Context Protocol) server for incident.io, providing comprehensive tools to interact with the incident.io API. Built following industry-standard Go project layout patterns.
β οΈ Fair warning!β οΈ
This repository is largely vibe-coded and unsupported. Built by our CMO and an enterprising Solutions Engineer with questionable coding practices but undeniable enthusiasm. Use at your own risk! π
# Clone the repository
git clone https://github.com/incident-io/incidentio-mcp-golang.git
cd incidentio-mcp-golang
# Set up environment
cp .env.example .env
# Edit .env and add your incident.io API key
# Build and run
go build -o bin/mcp-server ./cmd/mcp-server
./start-mcp-server.sh- β Complete incident.io V2 API coverage including Custom Fields
- β Workflow automation and management
- β Alert routing and event handling
- β Comprehensive test suite
- β MCP protocol compliant
- β Industry-standard Go project structure
- β Clean, layered architecture (client β handlers β server)
Add to your Claude Desktop configuration:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"incidentio": {
"command": "/path/to/incidentio-mcp-golang/start-mcp-server.sh",
"env": {
"INCIDENT_IO_API_KEY": "your-api-key"
}
}
}
}Or, if you'd prefer to run everything in Docker:
{
"mcpServers": {
"incidentio": {
"command": "docker-compose",
"args": ["-f", "/path/to/docker-compose.yml", "run", "--rm", "-T", "mcp-server"],
"env": {
"INCIDENT_IO_API_KEY": "your-api-key"
}
}
}
}list_incidents- List incidents with optional filtersget_incident- Get details of a specific incidentcreate_incident- Create a new incidentupdate_incident- Update an existing incidentclose_incident- Close an incident with proper workflowcreate_incident_update- Post status updates to incidents
list_follow_ups- List follow-ups with optional filtersget_follow_up- Get details of a specific follow-up
list_alerts- List alerts with optional filtersget_alert- Get details of a specific alertlist_incident_alerts- List connections between incidents and alertscreate_alert_event- Create an alert eventlist_alert_routes- List and manage alert routes
list_workflows- List available workflowsget_workflow- Get workflow detailsupdate_workflow- Update workflow configuration
list_users- List organization userslist_available_incident_roles- List available incident rolesassign_incident_role- Assign roles to users
list_catalog_types- List available catalog typeslist_catalog_entries- List catalog entriesupdate_catalog_entry- Update catalog entries
list_custom_fields- List all custom fieldsget_custom_field- Get details of a specific custom fieldsearch_custom_fields- Search for custom fields by name or typecreate_custom_field- Create a new custom fieldupdate_custom_field- Update custom field configurationdelete_custom_field- Delete a custom fieldlist_custom_field_options- List all custom field optionscreate_custom_field_option- Add a new option to a select field
# Through Claude or another MCP client
"Show me all active incidents"
"Create a new incident called 'Database performance degradation' with severity high"
"List alerts for incident INC-123"
"Assign John Doe as incident lead for INC-456"
"Update the Payments service catalog entry with new team information"
"Show me all custom fields configured in incident.io"
"Search for custom fields related to 'priority'"
"Create a new custom field called 'Root Cause' with type single_select"- Development Guide - Setup, testing, and contribution guidelines
- Configuration Guide - Environment variables and deployment options
- Contributing Guide - How to contribute to the project
- Testing Guide - Testing documentation and best practices
- Deployment Guide - Deployment instructions and considerations
- Code of Conduct - Community guidelines and standards
This project follows industry-standard Go project layout:
βββ cmd/mcp-server/ # Main application entry point
βββ internal/
β βββ client/ # incident.io API client (HTTP layer)
β βββ handlers/ # MCP protocol handlers (adapter layer)
β βββ server/ # MCP server orchestration
βββ pkg/mcp/ # Public MCP types
βββ docs/ # Documentation
Design Philosophy:
internal/client: Pure HTTP API client for incident.io - reusable, testableinternal/handlers: MCP protocol adapters - converts MCP requests to API callsinternal/server: MCP server that orchestrates handlers and manages the protocol
- 404 errors: Ensure incident IDs are valid and exist in your instance
- Authentication errors: Verify your API key is correct and has proper permissions
- Parameter errors: All incident-related tools use
incident_idas the parameter name
Enable debug logging by setting environment variables:
export MCP_DEBUG=1
export INCIDENT_IO_DEBUG=1
./start-mcp-server.shContributions are welcome! Please see our Development Guide for details on setup, testing, and contribution guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with the Model Context Protocol specification
- Powered by incident.io API
- Created with assistance from Claude