incident-io/incidentio-mcp-golang
If you are the rightful owner of incidentio-mcp-golang and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The incident.io MCP Server is a GoLang implementation of a Model Context Protocol server designed to interact with the incident.io V2 API, providing comprehensive tools for incident management and workflow automation.
incident.io MCP Server
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! 🚀
🚀 Quick Start
# 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
📋 Features
- ✅ 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)
🤖 Using with Claude
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"
}
}
}
}
Available Tools
Incident Management
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
Follow-up Management
list_follow_ups- List follow-ups with optional filtersget_follow_up- Get details of a specific follow-up
Alert Management
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
Workflow & Automation
list_workflows- List available workflowsget_workflow- Get workflow detailsupdate_workflow- Update workflow configuration
Team & Roles
list_users- List organization userslist_available_incident_roles- List available incident rolesassign_incident_role- Assign roles to users
Catalog Management
list_catalog_types- List available catalog typeslist_catalog_entries- List catalog entriesupdate_catalog_entry- Update catalog entries
Custom Fields
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
📝 Example Usage
# 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"
📚 Documentation
- - Setup, testing, and contribution guidelines
- - Environment variables and deployment options
- - How to contribute to the project
- - Testing documentation and best practices
- - Deployment instructions and considerations
- - Community guidelines and standards
🏗️ Project Structure
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
🔧 Troubleshooting
Common Issues
- 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
Debug Mode
Enable debug logging by setting environment variables:
export MCP_DEBUG=1
export INCIDENT_IO_DEBUG=1
./start-mcp-server.sh
🤝 Contributing
Contributions are welcome! Please see our for details on setup, testing, and contribution guidelines.
📄 License
This project is licensed under the MIT License - see the file for details.
🙏 Acknowledgments
- Built with the Model Context Protocol specification
- Powered by incident.io API
- Created with assistance from Claude