PlantUML CSA MCP服务器
通过模型上下文协议(MCP)使用PlantUML生成控制系统架构(CSA)图。
特性
- ISA-95普渡模型 -带颜色编码级别(0-4)的区域包
- 工业符号 -36+组件类型(10个控制器,26个设备)
- 协议可视化 -12种协议,具有不同的线条颜色
- 架构模板 -5个用于常见配置的预定义模板
- Bootstrap来自技能 -根据设备清单+仪器io技能生成拓扑图
- 多布局引擎 -Graphviz、斯美塔那、ELK
- 可共享URL -生成PlantUML服务器链接
- 与FreeCAD相同的架构 -可互操作的YAML拓扑格式
项目结构
plantuml-csa-mcp-server/
├── src/
│ ├── __init__.py # Package entry point
│ ├── __main__.py # Module runner (python -m src)
│ ├── server.py # FastMCP server with 8 MCP tools
│ ├── models/
│ │ └── csa_topology.py # Pydantic models (same as FreeCAD CSA)
│ ├── converter/
│ │ ├── topology_to_puml.py # YAML topology → PlantUML source
│ │ ├── sprites.py # ISA symbol definitions (36+ types)
│ │ └── layout_hints.py # Purdue-aware layout directives
│ ├── renderer/
│ │ └── plantuml_runner.py # PlantUML CLI wrapper (JAR/native/Docker)
│ ├── encoder/
│ │ └── plantuml_encoder.py # Text encoding for shareable URLs
│ ├── templates/
│ │ └── architecture_templates.py # 5 architecture templates
│ └── bootstrap/
│ └── csa_bootstrap.py # Bootstrap from equipment/IO lists
├── tests/ # 56 tests
├── docs/
│ └── completed-plans/ # Implementation plan
├── pyproject.toml
├── CLAUDE.md # Development guide
└── README.md安装
# Clone and install
cd plantuml-csa-mcp-server
uv sync
# Verify PlantUML is available
uv run python -c "from src.renderer import PlantUMLRunner; print(PlantUMLRunner().check_available())"快速开始
1.添加到MCP配置
添加到您的 .mcp.json:
{
"mcpServers": {
"plantuml-csa-mcp": {
"type": "stdio",
"command": "uv",
"args": ["--directory", "/path/to/plantuml-csa-mcp-server", "run", "python", "-m", "src"],
"description": "PlantUML CSA diagram generation (ISA-95 Purdue model)"
}
}
}2.生成图表
# topology.yaml
schema_version: "1.0"
metadata:
project_name: "Sample WWTP CSA"
zones:
- id: "level_0"
purdue_level: 0
- id: "level_1"
purdue_level: 1
controllers:
- id: "PLC-101"
type: PLC
zone: "level_1"
devices:
- id: "RIO-101"
type: RemoteIO
parent_controller: "PLC-101"
zone: "level_0"
links:
- source: "PLC-101"
target: "RIO-101"
protocol: "Ethernet_IP"然后使用MCP工具:
# Get PlantUML source for version control
csa_get_plantuml_source(topology_yaml=yaml_content)
# Generate SVG diagram
csa_generate_diagram(topology_yaml=yaml_content, format="svg")
# Get shareable URL
csa_encode_plantuml(plantuml_source=puml_source)MCP工具参考
| 工具 | 目的 |
|---|---|
csa_generate_diagram | 将拓扑YAML渲染为SVG/PNG |
csa_get_plantuml_source | 获取.pump版本控制源 |
csa_validate_topology | 根据架构验证YAML |
csa_list_symbols | 列出可用的ISA样式符号 |
csa_encode_plantuml | 生成可共享的PlantUML URL |
csa_list_templates | 列出架构模板 |
csa_render_preview | 迭代快速预览 |
csa_check_plantuml | 检查PlantUML可用性 |
csa_bootstrap_from_io | 设备/IO列表中的Bootstrap拓扑 |
架构模板
通用控制系统配置的预定义模板:
| 模板 | 描述 | 用例 |
|---|---|---|
centralized | 中央MCC+中央PLC | 小型工厂(\20 MLD) |
hybrid_safety | 中央安全+分布式过程 | SIL/SIS要求 |
vendor_package_integration | 通过OPC-UA的OEM包 | 多个供应商包 |
技能输出引导
根据设备清单技能和仪器io技能输出生成CSA拓扑:
csa_bootstrap_from_io(
equipment_list_qmd=equipment_qmd_content,
instrument_database_yaml=io_database_yaml,
project_name="WWTP Control System",
architecture_template="fully_distributed"
)
# Returns: {topology_yaml, suggestions, io_summary, equipment_mapping}支持的组件
控制器(10种)
PLC、DCS、PAC、安全PLC、软PLC、边缘控制器、运动控制器、冗余PLC、RTU、SIS
设备(26种)
RemoteIO、HMI、SCADA、Historian、OPC_UA_Server、网关、VFD、软启动器、MCC、工业PC、交换机、管理交换机、路由器、防火墙、无线_AP、媒体转换器、网络_TAP、电机启动器、工程_WS、面板-PC、数据记录器、接线盒、编组柜、本地面板、远程面板、仪器机架
协议(12种)
Ethernet_IP、Profinet、Modbus_TCP、Modbus_RTU、Profibus、DeviceNet、ControlNet、HART、Foundation现场总线、OPC_UA、MQTT、BACnet
测试
# Run all tests
uv run pytest tests/ -v
# Run with coverage
uv run pytest tests/ --cov=src与FreeCAD CSA
| 方面 | PlantUML CSA | FreeCAD CSA |
|---|---|---|
| 输出 | SVG/PNG | TechDraw PDF |
| 版本控制 | 纯文本.puml | 二进制。FCStd |
| 依赖关系 | Java/PlantMUL | FreeCAD运行时 |
| 最适合 | 文档 | CAD可交付成果 |
两者都用:相同的YAML拓扑结构适用于两个渲染器。使用PlantUML进行快速迭代和记录,使用FreeCAD绘制最终工程图纸。
工作流集成
此服务器是puran水控制系统架构工作流的一部分:
┌─────────────────────────┐ ┌──────────────────────────┐ ┌─────────────────────┐
│ equipment-list-skill │ ──► │ instrument-io-skill │ ──► │ csa-diagram-skill │
│ (equipment + feeder) │ │ (IO lists, patterns) │ │ (CSA generation) │
└─────────────────────────┘ └──────────────────────────┘ └─────────────────────┘
│
▼
┌─────────────────────┐
│ plantuml-csa-mcp │
│ (this server) │
└─────────────────────┘
│
▼
┌─────────────────────┐
│ CSA Topology YAML │
│ PlantUML PNG/SVG │
│ Shareable URLs │
└─────────────────────┘相关项目
上游(数据源)
同伴技能
- csa图技能 -编排此MCP服务器的Claude代码技能
相似模式(电气)
- plantuml-sld-mcp服务器 -单线图生成(相同的YAML→ PlantUML模式)
- 配电技能 -使用plantuml-SLD-mcp服务器的SLD技能
替代渲染器
- freecadcsa工作台 -在FreeCAD中为CAD可交付成果呈现相同的YAML拓扑
许可证
麻省理工学院
