事故分类MCP
事件分类MCP是一个用于事件分类的模型上下文协议(MCP)服务器。它为证据检索、确定性摘要、工单工作流和通知提供了安全、可审计的工具。
这个项目是什么
- 事故分流工具的MCP控制平面。
- 与本地兼容(
stdio)并联网(streamable-http)MCP客户端。 - 专为独立模式、Docker Compose和Kubernetes而设计。
这个项目不是什么
- 不是独立的LLM代理平台。
- 不是提供程序凭据保管库。
- 不能替代你的证据管道;它消耗标准化的证据包。
体系结构快照
- MCP服务器保持精简,以策略为中心。
- 证据收集在Airflow(可选)中运行,并写入EvidenceBundle工件。
- 代理仅调用MCP工具。
- 合同稳定性定义如下
spec/.
有关完整详细信息,请参阅 docs/ARCHITECTURE.md.
核心工具
| 工具 | 目的 | 突变 |
|---|---|---|
evidence_get_bundle | 获取事件的归一化EvidenceBundle | 否 |
evidence_wait_for_bundle | 轮询直到捆绑包可用 | 否 |
incident_triage_summary | 从捆绑包构建确定性分类摘要 | 否 |
jira_draft_ticket | 构建非变异票草稿 | 否 |
jira_create_ticket | 创建带有安全门的票 | 是 |
RBAC对变异行为进行保护, dry_run, confirm_token、审计日志记录和幂等性。
供应商矩阵
| 区域 | 支持的提供商 |
|---|---|
| 警报 | mock, datadog, cloudwatch, prometheus, pagerduty, opsgenie |
| 指标 | mock, datadog, cloudwatch, prometheus |
| 日志 | mock, datadog, cloudwatch, elk, none |
| 痕迹 | mock, datadog, cloudwatch, xray, otel, none |
票务(JIRA_PROVIDER) | mock, cloud, servicenow |
通知(NOTIFY_PROVIDER) | slack, teams |
快速开始
本地(stdio)
python -m venv .venv
source .venv/bin/activate
pip install -e .
MCP_TRANSPORT=stdio \
WORKFLOW_BACKEND=none \
EVIDENCE_BACKEND=fs \
EVIDENCE_DIR=./evidence \
incident-triage-mcp本地代理运行(单事件)
incident-triage-agent \
--incident-id INC-123 \
--service payments-api \
--artifact-store fs \
--artifact-dir ./evidence \
--compactDocker(可流式传输http)
docker run --rm -p 3333:3333 \
-e MCP_TRANSPORT=streamable-http \
-e WORKFLOW_BACKEND=none \
-e EVIDENCE_BACKEND=fs \
ghcr.io/felixkwasisarpong/incident-triage-mcp:latest可选本地堆栈(气流+Postgres+MinIO+MCP):
docker compose up --buildKubernetes:每个触发器一个代理作业
这是推荐的运行时模式:
- 传入触发器(webhook/手动)到达。
- 调度器(或操作员)创建一个Kubernetes
Job每次事故。 - 作业运行
incident-triage-agent一次并退出。 - 代理通过HTTP调用MCP工具。
- MCP可选择触发气流DAG(
incident_evidence_v1)并从中消费捆绑包fs/s3.
部署MCP服务器(Helm)
helm upgrade --install incident-triage-mcp ./charts/incident-triage-mcp \
--namespace incident-triage --create-namespace \
--set image.repository=ghcr.io/felixkwasisarpong/incident-triage-mcp \
--set image.tag=0.2.8 \
--set env.MCP_TRANSPORT=streamable-http \
--set env.MCP_HTTP_AUTH_MODE=api_key \
--set secretEnv.MCP_HTTP_API_KEY=change-me使用单次运行的代理作业触发一个事件
kubectl -n incident-triage create job triage-inc-123 \
--image=ghcr.io/felixkwasisarpong/incident-triage-mcp:0.2.8 \
-- incident-triage-agent \
--incident-id INC-123 \
--service payments-api \
--mcp-url http://incident-triage-mcp/mcp \
--mcp-api-key change-me \
--compact确保单次运行行为
- 为每个事件使用确定性作业名称(
triage-inc-). - 如果作业已存在,则在调度程序级别拒绝重复作业。
- 保持票证创建幂等
idempotency_key. - 配置作业生命周期控制(
backoffLimit,activeDeadlineSeconds,ttlSecondsAfterFinished).
配置要点
| 变量 | 含义 |
|---|---|
MCP_TRANSPORT | stdio 或 streamable-http |
WORKFLOW_BACKEND | none 或 airflow |
EVIDENCE_BACKEND | none, fs, s3, airflow |
EVIDENCE_DIR | 使用时的本地捆绑目录 fs |
AIRFLOW_BASE_URL | 气流触发/读取工具所需 |
MCP_HTTP_AUTH_MODE | none, api_key, jwt_hs256 |
AUDIT_MODE | stdout (建议使用k8s)或 file |
DEPLOYMENT_PROFILE | local, staging, prod |
配置文件模板已上线 deploy/profiles/:
local.env.examplestaging.env.exampleprod.env.example
测试
运行完整测试:
pytest -q仅运行合同检查:
pytest -q tests/test_contract_evidence_bundle.py tests/test_contract_mcp_tools.py
python scripts/validate_contrib.py发布
从PyPI安装
pip install incident-triage-mcp==X.Y.Z拉取容器图像
docker pull ghcr.io/felixkwasisarpong/incident-triage-mcp:X.Y.Z支持的图像标签:
X.Y.Z(准确)X.Y(支流)latest
有关发布工作流的详细信息,请参阅 docs/RELEASING.md.
项目布局
incident-triage-mcp/
src/incident_triage_mcp/ # MCP server + tools + adapters
spec/ # versioned contracts
airflow/dags/ # evidence pipeline
charts/incident-triage-mcp/ # Helm chart
k8s/ # Kubernetes manifests
contrib/ # polyglot contribution area
docs/ # architecture, release, governance docs支持和分类
- 讨论:https://github.com/felixkwasisarpong/incident-triage-mcp/discussions
- 问题:https://github.com/felixkwasisarpong/incident-triage-mcp/issues
- 安全报告: 安全.md
文档索引
贡献
阅读 贡献.md 在打开PR之前。
许可证
麻省理工学院
