事件存储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 syncClaude桌面设置
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是一种快速浏览和建模复杂业务域的研讨会技巧:
- 域事件 发现(橙色便利贴)
- 命令 标识(蓝色便利贴)
- 演员 显示(黄色便利贴)
- 令人毛骨悚然 定义(浅黄色便利贴)
- 绑定上下文 配置
更多信息: 活动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小时)
- 准备 (5分钟)
- 创建研讨会 - 参与者简介
- 发现域事件 (30分钟)
- 从重要事件开始创建 - 按时间顺序放置
- 命令和动作 (20分钟)
- 标识每个事件的触发器 - 明确执行主体
- 业务规则 (15分钟)
- 定义策略 - 异常处理规则
- Agrageit设计 (20分钟)
- 确定事务边界 - 将相关元素分组
- 绑定上下文 (20分钟)
- 定义逻辑边界 - 分配元素
- 审阅和整理 (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*
