Skip to content

A Golang version of the incident.io MCP server fork

License

bostojic-rho/incidentio-mcp-golang

Β 
Β 

Repository files navigation

incident.io MCP Server

CI Go Report Card License: MIT Go Version

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 filters
  • get_incident - Get details of a specific incident
  • create_incident - Create a new incident
  • update_incident - Update an existing incident
  • close_incident - Close an incident with proper workflow
  • create_incident_update - Post status updates to incidents

Follow-up Management

  • list_follow_ups - List follow-ups with optional filters
  • get_follow_up - Get details of a specific follow-up

Alert Management

  • list_alerts - List alerts with optional filters
  • get_alert - Get details of a specific alert
  • list_incident_alerts - List connections between incidents and alerts
  • create_alert_event - Create an alert event
  • list_alert_routes - List and manage alert routes

Workflow & Automation

  • list_workflows - List available workflows
  • get_workflow - Get workflow details
  • update_workflow - Update workflow configuration

Team & Roles

  • list_users - List organization users
  • list_available_incident_roles - List available incident roles
  • assign_incident_role - Assign roles to users

Catalog Management

  • list_catalog_types - List available catalog types
  • list_catalog_entries - List catalog entries
  • update_catalog_entry - Update catalog entries

Custom Fields

  • list_custom_fields - List all custom fields
  • get_custom_field - Get details of a specific custom field
  • search_custom_fields - Search for custom fields by name or type
  • create_custom_field - Create a new custom field
  • update_custom_field - Update custom field configuration
  • delete_custom_field - Delete a custom field
  • list_custom_field_options - List all custom field options
  • create_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

πŸ—οΈ 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, testable
  • internal/handlers: MCP protocol adapters - converts MCP requests to API calls
  • internal/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_id as 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 Development Guide for details on setup, testing, and contribution guidelines.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

About

A Golang version of the incident.io MCP server fork

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 87.5%
  • Python 9.6%
  • Shell 2.5%
  • Other 0.4%