事件风暴MCP服务器

Event Storming MCP是一个支持领域驱动设计(DDD)中Event Storming技术的MCP服务器,提供文本环境下的结构化工作坊管理、分析和可视化工具。

  • by narnia-ai-mason
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 narnia-ai-mason/eventstorming-mcp

使用说明

事件存储MCP服务器

可在基于文本的环境中系统地举办Domain-Driven Design事件Storming研讨会的MCP服务器

🎯 概要

事件Storming MCP是一款模型上下文协议(MCP)服务器,旨在在数字环境中运行Alberto Brandolini创建的事件Storming技术。无需物理白板或Miro等可视化工具,即可使用结构化的JSON数据管理和分析研讨会的所有元素。

主要功能

✨ 完整的Event Storming支持

  • 8个关键要素(事件、命令、Actor、Agright、策略、阅读模型、外部系统、热点)
  • 反映传统的色彩体系
  • 跟踪元素之间的因果关系

🎨 管理绑定上下文

  • 实施DDD的核心概念
  • 分组和分配元素
  • 上下文统计和分析

📊 强大的分析工具

  • 时间轴视图
  • 可视化事件流
  • 统计和报告
  • 关键字搜索

💾 数据管理

  • 基于JSON的永久存储(UTF-8韩文支持)
  • 标记/JSON格式Export(直接保存为文件)
  • 导出/导入研讨会
  • 特定于项目的工作空间支持
  • 自动迁移

🚀 快速入门

安装

# 프로젝트 다운로드
git clone https://github.com/narnia-ai-mason/eventstorming-mcp.git
cd eventstorming-mcp

# 필수 패키지 설치
uv sync

Claude桌面设置

claude_desktop_config.json 将以下内容添加到文件:

首选项(保存到主目录)

{
  "mcpServers": {
    "eventstorming": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/eventstorming-mcp",
        "run",
        "eventstorming_mcp.py"
      ]
    }
  }
}

设置特定于项目的工作空间(建议)

{
  "mcpServers": {
    "eventstorming": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/eventstorming-mcp",
        "run",
        "eventstorming_mcp.py"
      ],
      "env": {
        "EVENTSTORMING_WORKSPACE": "/path/to/your/project/eventstorming"
      }
    }
  }
}

💡 环境变量选项

  • EVENTSTORMING_WORKSPACE设置后,研讨会将保存在项目目录中。
  • 未设置时的默认位置: ~/.eventstorming_workshops
  • 如果有现有研讨会,将自动迁移

开始第一个研讨会

# 1. 워크샵 생성
eventstorming_create_workshop({
  "name": "My First Event Storming",
  "domain": "E-commerce"
})

# 2. 이벤트 추가
eventstorming_add_element({
  "workshop_id": "...",
  "type": "event",
  "name": "Order Placed"
})

# 3. 워크샵 로드
eventstorming_load_workshop({
  "workshop_id": "..."
})

📚 文档

主要文档

什么是Event Storming?

Event Storming是一种快速浏览和建模复杂业务域的研讨会技巧:

  1. 域事件 发现(橙色便利贴)
  2. 命令 标识(蓝色便利贴)
  3. 演员 显示(黄色便利贴)
  4. 令人毛骨悚然 定义(浅黄色便利贴)
  5. 绑定上下文 配置

更多信息: 活动Storming.com

🛠 工具列表

管理研讨会(3个)

工具 说明
eventstorming_create_workshop 创建新研讨会
eventstorming_list_workshops 查看研讨会列表
eventstorming_load_workshop 工作负载

元素管理(3个)

工具 说明
eventstorming_add_element 添加元素(所有类型)
eventstorming_update_element 修改元素
eventstorming_delete_element 删除元素

绑定上下文(2个)

工具 说明
eventstorming_create_bounded_context 创建上下文
eventstorming_assign_to_context 分配元素

查询和分析(5个)

工具 说明
eventstorming_search_elements 关键字搜索
eventstorming_get_timeline 时间轴视图
eventstorming_get_context_overview 上下文概述
eventstorming_get_statistics 统计分析
eventstorming_visualize_flow 可视化事件流

数据管理(2个)

工具 说明
eventstorming_export_workshop 导出研讨会
eventstorming_import_workshop 导入研讨会

共15个工具

💡 使用示例

电子商务订购系统

# 워크샵 생성
workshop = create_workshop({
  "name": "E-commerce Order System",
  "domain": "E-commerce"
})

# 주요 이벤트 추가
add_element({
  "type": "event",
  "name": "Order Placed",
  "position": 0
})

add_element({
  "type": "event",
  "name": "Payment Processed",
  "position": 10
})

# 바운디드 컨텍스트 생성
create_bounded_context({
  "name": "Order Management",
  "description": "주문 생명주기 관리"
})

# 통계 확인
get_statistics({"workshop_id": "..."})

更多示例: 实战教程

📊 数据结构

JSON研讨会

{
  "metadata": {
    "id": "uuid",
    "name": "워크샵 이름",
    "domain": "도메인",
    "created_at": "2025-10-21T10:00:00Z",
    "updated_at": "2025-10-21T15:30:00Z",
    "facilitators": ["이름1", "이름2"]
  },
  "elements": [
    {
      "id": "uuid",
      "type": "event",
      "name": "Order Placed",
      "description": "주문이 접수됨",
      "position": 0,
      "triggers": ["payment-cmd-id"],
      "triggered_by": ["place-order-cmd-id"],
      "bounded_context_id": "order-ctx-id"
    }
  ],
  "bounded_contexts": [
    {
      "id": "uuid",
      "name": "Order Management",
      "element_ids": ["event-1", "cmd-1"],
      "color": "#3498db"
    }
  ]
}

🎨 元素类型和颜色

类型颜色用途 |------|------|------| | Event | 🟧 橙色|域中发生的事情| | Command | 🟦 蓝色|系统命令| | Actor | 🟨 黄色|执行命令的主体| | Aggregate | 📄 浅黄色一致性边界 | Policy | 🟪 淡紫色自动化规则 | Read Model | 🟩 绿色|查询模式| | External System | 🩷 粉红外部系统 | Hotspot | 🟥 红色|问题/不确定区域|

📁 文件存储位置

研讨会数据存储在以下位置:

~/.eventstorming_workshops/
  ├── {workshop-id-1}.json
  ├── {workshop-id-2}.json
  └── ...

🔧 高级功能

跟踪事件流

# 특정 이벤트부터 흐름 추적
visualize_flow({
  "workshop_id": "...",
  "start_element_id": "order-placed-id",
  "max_depth": 5
})

上下文覆盖分析

# 바운디드 컨텍스트 할당률 확인
statistics = get_statistics({"workshop_id": "..."})
# Coverage: 93.3% of elements are contextualized

热点管理

# 문제 영역 표시
add_element({
  "type": "hotspot",
  "name": "Payment Timeout Handling",
  "description": "타임아웃 시 처리 방법 미정의",
  "notes": "재시도? 취소? 수동 확인?"
})

# 핫스팟 검색
search_elements({
  "query": "timeout",
  "element_type": "hotspot"
})

🤝 研讨会进度指南

建议的进度顺序(2小时)

  1. 准备 (5分钟)

    • 创建研讨会
    • 参与者简介
  2. 发现域事件 (30分钟)

    • 从重要事件开始创建
    • 按时间顺序放置
  3. 命令和动作 (20分钟)

    • 标识每个事件的触发器
    • 明确执行主体
  4. 业务规则 (15分钟)

    • 定义策略
    • 异常处理规则
  5. Agrageit设计 (20分钟)

    • 确定事务边界
    • 将相关元素分组
  6. 绑定上下文 (20分钟)

    • 定义逻辑边界
    • 分配元素
  7. 审阅和整理 (10分钟)

    • 流验证
    • 统计确认
    • 导出研讨会

🐛 故障排除

常见问题

问:找不到研讨会

# 워크샵 목록 확인
eventstorming_list_workshops()

# 올바른 ID 사용 확인

问:关系太复杂了

# 흐름 시각화로 구조 파악
eventstorming_visualize_flow()

# 컨텍스트별로 분리
create_bounded_context()

问:上下文边界不明确

# 통계로 응집도 확인
get_statistics()

# 반복적으로 재조정

📝 最佳实践

✅ 做

  • 将域事件创建为历史记录
  • 从核心流程开始
  • 包括异常情况
  • 明确绑定上下文边界
  • 坦率地显示热点

❌ 不要

  • 过于详细的事件(UI点击等)
  • 仅用技术术语表示
  • 追求完美主义(反复改进)
  • 上下文之间的强合并

🔮 今后计划

  • []创建PlantUML/Mermaid图表
  • []Git版本管理集成
  • []模板系统
  • []基于AI的建议功能
  • []实时协作支持
  • []一致性验证工具
  • []自动生成文档

📚 参考资料

📄 许可证

MIT许可证-可自由使用、修改和分发

🙏 贡献

欢迎使用Issue和Pull Request!


由以下材料制成❤️ DDD和Event Storming社区

版本1.0 |最后更新时间:2025-10-21