返回市场
事件处理-mcp-golang

事件处理-mcp-golang

作者:incident-io13 星标更新:2025-11-17

项目介绍

incident.io MCP 服务器

CI Go Report Card License: MIT Go Version

这是一个用 GoLang 实现的 incident.io 的 MCP(模型上下文协议)服务器,提供了与 incident.io API 交互的全面工具。按照行业标准的 Go 项目布局模式构建。

⚠️ 公平警告! ⚠️
本仓库主要由我们的首席营销官和一位有进取心的解决方案工程师使用可疑的编码实践但无可否认的热情构建。未经支持且风险自负!🚀

🚀 快速开始

# 克隆仓库
git clone https://github.com/incident-io/incidentio-mcp-golang.git
cd incidentio-mcp-golang

# 设置环境
cp .env.example .env
# 编辑 .env 并添加你的 incident.io API 密钥

# 构建并运行
go build -o bin/mcp-server ./cmd/mcp-server
./start-mcp-server.sh

📋 功能

  • ✅ 完整覆盖 incident.io V2 API 包括自定义字段
  • ✅ 工作流自动化和管理
  • ✅ 告警路由和事件处理
  • ✅ 全面测试套件
  • ✅ 符合 MCP 协议
  • ✅ 行业标准的 Go 项目结构
  • ✅ 清晰分层架构(客户端 → 处理器 → 服务器)

🤖 使用 Claude

在你的 Claude Desktop 配置中添加:

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"
      }
    }
  }
}

或者,如果你希望在 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 - 列出事件,可选过滤条件
  • get_incident - 获取特定事件的详细信息
  • create_incident - 创建新事件
  • update_incident - 更新现有事件
  • close_incident - 按照正确的工作流程关闭事件
  • create_incident_update - 向事件发布状态更新

跟进管理

  • list_follow_ups - 列出跟进,可选过滤条件
  • get_follow_up - 获取特定跟进的详细信息

告警管理

  • list_alerts - 列出告警,可选过滤条件
  • get_alert - 获取特定告警的详细信息
  • list_incident_alerts - 列出事件和告警之间的连接
  • create_alert_event - 创建告警事件
  • list_alert_routes - 列出和管理告警路由

工作流及自动化

  • list_workflows - 列出可用工作流
  • get_workflow - 获取工作流详细信息
  • update_workflow - 更新工作流配置

团队及角色

  • list_users - 列出组织用户
  • list_available_incident_roles - 列出可用事件角色
  • assign_incident_role - 为用户分配角色

目录管理

  • list_catalog_types - 列出可用目录类型
  • list_catalog_entries - 列出目录条目
  • update_catalog_entry - 更新目录条目

自定义字段

  • list_custom_fields - 列出所有自定义字段
  • get_custom_field - 获取特定自定义字段的详细信息
  • search_custom_fields - 按名称或类型搜索自定义字段
  • create_custom_field - 创建新的自定义字段
  • update_custom_field - 更新自定义字段配置
  • delete_custom_field - 删除自定义字段
  • list_custom_field_options - 列出所有自定义字段选项
  • create_custom_field_option - 向选择字段添加新选项

📝 示例用法

# 通过 Claude 或其他 MCP 客户端
"显示所有活跃事件"
"创建一个名为 '数据库性能下降' 的新事件,严重程度高"
"列出事件 INC-123 的告警"
"将 John Doe 分配为事件 INC-456 的负责人"
"更新支付服务目录条目,添加新的团队信息"
"显示在 incident.io 中配置的所有自定义字段"
"搜索与 '优先级' 相关的自定义字段"
"创建一个新的名为 '根本原因' 的单选自定义字段"

📚 文档

🏗️ 项目结构

此项目遵循行业标准的 Go 项目布局:

├── cmd/mcp-server/       # 主应用程序入口点
├── internal/
│   ├── client/           # incident.io API 客户端(HTTP 层)
│   ├── handlers/         # MCP 协议处理器(适配层)
│   └── server/           # MCP 服务器编排
├── pkg/mcp/              # 公共 MCP 类型
└── docs/                 # 文档

设计理念:

  • internal/client: 用于 incident.io 的纯 HTTP API 客户端 - 可重用、可测试
  • internal/handlers: MCP 协议适配器 - 将 MCP 请求转换为 API 调用
  • internal/server: 负责编排处理器并管理协议的 MCP 服务器

🔧 故障排除

常见问题

  • 404 错误: 确保事件 ID 是有效的,并存在于您的实例中
  • 身份验证错误: 验证您的 API 密钥是否正确并且具有适当的权限
  • 参数错误: 所有与事件相关的工具都使用 incident_id 作为参数名称

调试模式

通过设置环境变量启用调试日志:

export MCP_DEBUG=1
export INCIDENT_IO_DEBUG=1
./start-mcp-server.sh

🤝 贡献

欢迎贡献!请参阅我们的 开发指南 以获取关于设置、测试和贡献指南的详细信息。

📄 许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

🙏 致谢