uml-diagram
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseUML & Diagram Generation via Kroki
通过Kroki实现UML和图表生成
MCP Server
MCP Server
| Property | Value |
|---|---|
| Source | antoinebou12/uml-mcp |
| Transport | stdio (default) or HTTP |
| Tools | 2 ( |
| Resources | 8 (diagram types, templates, examples, formats, server info) |
| Prompts | 11 (class, sequence, activity, usecase, Mermaid, BPMN, etc.) |
| Rendering | Kroki (primary) with PlantUML and Mermaid.ink fallback |
| Property | Value |
|---|---|
| Source | antoinebou12/uml-mcp |
| Transport | stdio (默认) 或 HTTP |
| Tools | 2个( |
| Resources | 8种(图表类型、模板、示例、格式、服务器信息) |
| Prompts | 11个(类图、时序图、活动图、用例图、Mermaid、BPMN等) |
| Rendering | 主用Kroki,降级方案为PlantUML和Mermaid.ink |
Tools
工具
generate_uml
generate_umlgenerate_uml
generate_umlGenerate a diagram and optionally save to disk.
| Parameter | Type | Default | Description |
|---|---|---|---|
| string | required | Diagram type (class, sequence, mermaid, d2, graphviz, etc.) |
| string | required | Diagram source code |
| string | null | Directory to save file (null = no file write) |
| string | "svg" | Output format: svg, png, pdf, jpeg, txt, base64 |
| string | null | PlantUML theme directive |
| float | 1.0 | SVG scaling factor (min 0.1) |
Returns:
{ code, url, playground, local_path, content_base64, error }生成图表并可选择保存到本地磁盘。
| Parameter | Type | Default | Description |
|---|---|---|---|
| string | 必填 | 图表类型(class、sequence、mermaid、d2、graphviz等) |
| string | 必填 | 图表源码 |
| string | null | 文件保存目录(null = 不写入文件) |
| string | "svg" | 输出格式:svg、png、pdf、jpeg、txt、base64 |
| string | null | PlantUML主题指令 |
| float | 1.0 | SVG缩放系数(最小0.1) |
返回值:
{ code, url, playground, local_path, content_base64, error }generate_diagram_url
generate_diagram_urlgenerate_diagram_url
generate_diagram_urlGet the Kroki rendering URL and optional base64 content without saving to disk.
| Parameter | Type | Default | Description |
|---|---|---|---|
| string | required | Diagram type |
| string | required | Diagram source code |
| string | "svg" | Output format |
| string | null | PlantUML theme |
| float | 1.0 | SVG scaling factor |
Returns:
{ code, url, playground, content_base64, error }获取Kroki渲染URL和可选的base64内容,不会写入磁盘。
| Parameter | Type | Default | Description |
|---|---|---|---|
| string | 必填 | 图表类型 |
| string | 必填 | 图表源码 |
| string | "svg" | 输出格式 |
| string | null | PlantUML主题 |
| float | 1.0 | SVG缩放系数 |
返回值:
{ code, url, playground, content_base64, error }Supported Diagram Types (27+)
支持的图表类型(27+种)
PlantUML-based
基于PlantUML的类型
| Type | Description | Use Case |
|---|---|---|
| Class diagrams | Object relationships, inheritance, interfaces |
| Sequence diagrams | Message flows between components |
| Activity diagrams | Workflow and process flows |
| Use case diagrams | Actor-system interactions |
| State machine diagrams | FSM, protocol states |
| Component diagrams | System architecture |
| Deployment diagrams | Infrastructure layout |
| Object diagrams | Instance-level relationships |
| C4 architecture | System context, container, component views |
| Generic PlantUML | Any PlantUML syntax |
| Type | Description | Use Case |
|---|---|---|
| 类图 | 对象关系、继承、接口 |
| 时序图 | 组件间的消息流 |
| 活动图 | 工作流与流程流转 |
| 用例图 | 参与者与系统的交互 |
| 状态机图 | 有限状态机、协议状态 |
| 组件图 | 系统架构 |
| 部署图 | 基础设施布局 |
| 对象图 | 实例级关系 |
| C4架构图 | 系统上下文、容器、组件视图 |
| 通用PlantUML | 任意PlantUML语法内容 |
Network & Infrastructure
网络与基础设施类
| Type | Description | Use Case |
|---|---|---|
| Network diagrams | Network topology, IP addressing, VLANs |
| Rack diagrams | Data center rack layouts |
| Packet diagrams | Protocol header formats (Ethernet, IP, TCP) |
| Block diagrams | System block diagrams |
| Activity diagrams | Activity flow (blockdiag family) |
| Sequence diagrams | Sequence flow (blockdiag family) |
| Type | Description | Use Case |
|---|---|---|
| 网络图 | 网络拓扑、IP地址规划、VLAN |
| 机架图 | 数据中心机架布局 |
| 数据包图 | 协议报文头格式(以太网、IP、TCP) |
| 框图 | 系统框图 |
| 活动图 | 活动流转(blockdiag系列) |
| 时序图 | 时序流转(blockdiag系列) |
Other Backends
其他渲染后端支持的类型
| Type | Description | Use Case |
|---|---|---|
| Mermaid diagrams | Flowcharts, Gantt, sequence, pie, journey |
| D2 declarative | Modern declarative diagrams |
| Graphviz DOT | Graph layouts, dependency trees |
| Entity-Relationship | Database schema diagrams |
| Database Markup | Database schema (DBML syntax) |
| BPMN 2.0 | Business process modeling |
| Structurizr DSL | C4 model architecture |
| ASCII art to diagram | Convert ASCII art to polished diagrams |
| Digital timing | Protocol timing diagrams, signal waveforms |
| Wire/cable harness | Cable and connector documentation |
| Byte field | Binary format documentation |
| Type | Description | Use Case |
|---|---|---|
| Mermaid图 | 流程图、甘特图、时序图、饼图、用户旅程图 |
| D2声明式图 | 现代声明式图表 |
| Graphviz DOT图 | 图布局、依赖树 |
| 实体关系图 | 数据库schema图 |
| 数据库标记语言图 | 数据库schema(DBML语法) |
| BPMN 2.0图 | 业务流程建模 |
| Structurizr DSL图 | C4模型架构 |
| ASCII艺术转图表 | 将ASCII艺术转换为精美的图表 |
| 数字时序图 | 协议时序图、信号波形 |
| 线缆/线束图 | 线缆与连接器文档 |
| 字节字段图 | 二进制格式文档 |
Network Engineering Examples
网络工程示例
Network Topology (nwdiag)
网络拓扑(nwdiag)
generate_uml(
diagram_type="nwdiag",
code="""
nwdiag {
network dmz {
address = "210.x.x.x/24"
web01 [address = "210.x.x.1"];
web02 [address = "210.x.x.2"];
}
network internal {
address = "172.x.x.x/24"
web01 [address = "172.x.x.1"];
web02 [address = "172.x.x.2"];
db01;
}
}
""",
output_format="svg"
)generate_uml(
diagram_type="nwdiag",
code="""
nwdiag {
network dmz {
address = "210.x.x.x/24"
web01 [address = "210.x.x.1"];
web02 [address = "210.x.x.2"];
}
network internal {
address = "172.x.x.x/24"
web01 [address = "172.x.x.1"];
web02 [address = "172.x.x.2"];
db01;
}
}
""",
output_format="svg"
)Rack Diagram (rackdiag)
机架图(rackdiag)
generate_uml(
diagram_type="rackdiag",
code="""
rackdiag {
16U;
1: UPS;
2: UPS;
3: Patch Panel;
4: Catalyst 9300;
5: Catalyst 9300;
6: Nexus 9000;
7: Nexus 9000;
8: ASR 1001-X;
9: ASR 1001-X;
10: BIG-IP i5800;
11: BIG-IP i5800;
12: UCS C220;
13: UCS C220;
14: UCS C220;
15: UCS C220;
16: Cable Management;
}
""",
output_format="png"
)generate_uml(
diagram_type="rackdiag",
code="""
rackdiag {
16U;
1: UPS;
2: UPS;
3: Patch Panel;
4: Catalyst 9300;
5: Catalyst 9300;
6: Nexus 9000;
7: Nexus 9000;
8: ASR 1001-X;
9: ASR 1001-X;
10: BIG-IP i5800;
11: BIG-IP i5800;
12: UCS C220;
13: UCS C220;
14: UCS C220;
15: UCS C220;
16: Cable Management;
}
""",
output_format="png"
)Packet Header (packetdiag)
报文头(packetdiag)
generate_uml(
diagram_type="packetdiag",
code="""
packetdiag {
colwidth = 32
node_height = 72
0-3: Version
4-7: IHL
8-15: DSCP / ECN
16-31: Total Length
32-47: Identification
48-50: Flags
51-63: Fragment Offset
64-71: TTL
72-79: Protocol
80-95: Header Checksum
96-127: Source Address
128-159: Destination Address
}
""",
output_format="svg"
)generate_uml(
diagram_type="packetdiag",
code="""
packetdiag {
colwidth = 32
node_height = 72
0-3: Version
4-7: IHL
8-15: DSCP / ECN
16-31: Total Length
32-47: Identification
48-50: Flags
51-63: Fragment Offset
64-71: TTL
72-79: Protocol
80-95: Header Checksum
96-127: Source Address
128-159: Destination Address
}
""",
output_format="svg"
)BGP State Machine (state)
BGP状态机(state)
generate_uml(
diagram_type="state",
code="""
@startuml
[*] --> Idle
Idle --> Connect : Start
Connect --> OpenSent : TCP established
Connect --> Active : TCP failed
Active --> OpenSent : TCP established
Active --> Connect : ConnectRetry timer
OpenSent --> OpenConfirm : OPEN received (valid)
OpenSent --> Idle : OPEN received (error)
OpenConfirm --> Established : KEEPALIVE received
OpenConfirm --> Idle : Hold timer expired
Established --> Idle : NOTIFICATION / Hold expired
Established : Process UPDATE messages
@enduml
""",
output_format="svg"
)generate_uml(
diagram_type="state",
code="""
@startuml
[*] --> Idle
Idle --> Connect : Start
Connect --> OpenSent : TCP established
Connect --> Active : TCP failed
Active --> OpenSent : TCP established
Active --> Connect : ConnectRetry timer
OpenSent --> OpenConfirm : OPEN received (valid)
OpenSent --> Idle : OPEN received (error)
OpenConfirm --> Established : KEEPALIVE received
OpenConfirm --> Idle : Hold timer expired
Established --> Idle : NOTIFICATION / Hold expired
Established : Process UPDATE messages
@enduml
""",
output_format="svg"
)OSPF Area Design (class)
OSPF区域设计(class)
generate_uml(
diagram_type="class",
code="""
@startuml
package "Area 0 - Backbone" {
class "Core-1" as C1 { router-id: 1.1.1.1 }
class "Core-2" as C2 { router-id: 2.2.2.2 }
C1 -- C2 : 10G P2P
}
package "Area 1 - Campus" {
class "Dist-1" as D1 { router-id: 3.3.3.3 }
class "Dist-2" as D2 { router-id: 4.4.4.4 }
}
package "Area 2 - DC" {
class "Spine-1" as S1 { router-id: 5.5.5.5 }
class "Spine-2" as S2 { router-id: 6.6.6.6 }
}
C1 -- D1 : ABR
C2 -- D2 : ABR
C1 -- S1 : ABR
C2 -- S2 : ABR
@enduml
""",
output_format="svg"
)generate_uml(
diagram_type="class",
code="""
@startuml
package "Area 0 - Backbone" {
class "Core-1" as C1 { router-id: 1.1.1.1 }
class "Core-2" as C2 { router-id: 2.2.2.2 }
C1 -- C2 : 10G P2P
}
package "Area 1 - Campus" {
class "Dist-1" as D1 { router-id: 3.3.3.3 }
class "Dist-2" as D2 { router-id: 4.4.4.4 }
}
package "Area 2 - DC" {
class "Spine-1" as S1 { router-id: 5.5.5.5 }
class "Spine-2" as S2 { router-id: 6.6.6.6 }
}
C1 -- D1 : ABR
C2 -- D2 : ABR
C1 -- S1 : ABR
C2 -- S2 : ABR
@enduml
""",
output_format="svg"
)Sequence: Change Request Flow
变更请求流程序列图
generate_uml(
diagram_type="sequence",
code="""
@startuml
actor Engineer
participant NetClaw
participant ServiceNow
participant Device
participant GAIT
Engineer -> NetClaw : "Add Loopback99"
NetClaw -> ServiceNow : Create Change Request
ServiceNow --> NetClaw : CR-12345 (New)
NetClaw -> ServiceNow : Wait for approval
ServiceNow --> NetClaw : CR-12345 (Implement)
NetClaw -> Device : Capture baseline
Device --> NetClaw : Running config
NetClaw -> Device : Apply config
Device --> NetClaw : Config applied
NetClaw -> Device : Verify change
Device --> NetClaw : Loopback99 up/up
NetClaw -> ServiceNow : Close CR-12345
NetClaw -> GAIT : Record full audit trail
NetClaw --> Engineer : Done. Verified.
@enduml
""",
output_format="svg"
)generate_uml(
diagram_type="sequence",
code="""
@startuml
actor Engineer
participant NetClaw
participant ServiceNow
participant Device
participant GAIT
Engineer -> NetClaw : "Add Loopback99"
NetClaw -> ServiceNow : Create Change Request
ServiceNow --> NetClaw : CR-12345 (New)
NetClaw -> ServiceNow : Wait for approval
ServiceNow --> NetClaw : CR-12345 (Implement)
NetClaw -> Device : Capture baseline
Device --> NetClaw : Running config
NetClaw -> Device : Apply config
Device --> NetClaw : Config applied
NetClaw -> Device : Verify change
Device --> NetClaw : Loopback99 up/up
NetClaw -> ServiceNow : Close CR-12345
NetClaw -> GAIT : Record full audit trail
NetClaw --> Engineer : Done. Verified.
@enduml
""",
output_format="svg"
)C4 Architecture (structurizr)
C4架构图(structurizr)
generate_uml(
diagram_type="structurizr",
code="""
workspace {
model {
engineer = person "Network Engineer"
netclaw = softwareSystem "NetClaw" {
openclaw = container "OpenClaw Agent"
pyats = container "pyATS MCP"
gait = container "GAIT MCP"
}
network = softwareSystem "Network Devices"
servicenow = softwareSystem "ServiceNow"
engineer -> openclaw "Chat"
openclaw -> pyats "MCP (stdio)"
openclaw -> gait "MCP (stdio)"
pyats -> network "SSH/NETCONF"
openclaw -> servicenow "REST API"
}
views {
container netclaw {
include *
autoLayout
}
}
}
""",
output_format="svg"
)generate_uml(
diagram_type="structurizr",
code="""
workspace {
model {
engineer = person "Network Engineer"
netclaw = softwareSystem "NetClaw" {
openclaw = container "OpenClaw Agent"
pyats = container "pyATS MCP"
gait = container "GAIT MCP"
}
network = softwareSystem "Network Devices"
servicenow = softwareSystem "ServiceNow"
engineer -> openclaw "Chat"
openclaw -> pyats "MCP (stdio)"
openclaw -> gait "MCP (stdio)"
pyats -> network "SSH/NETCONF"
openclaw -> servicenow "REST API"
}
views {
container netclaw {
include *
autoLayout
}
}
}
""",
output_format="svg"
)Workflows
工作流
1. Network Topology Documentation
1. 网络拓扑文档
pyats-topology → CDP/LLDP discovery data
→ generate_uml(type="nwdiag") → network topology diagram
→ msgraph-files → upload to SharePoint
→ GAITpyats-topology → CDP/LLDP discovery data
→ generate_uml(type="nwdiag") → network topology diagram
→ msgraph-files → upload to SharePoint
→ GAIT2. Protocol State Machine Reference
2. 协议状态机参考
generate_uml(type="state") → BGP/OSPF/STP state machine
→ Share in Slack/Teams for team reference
→ GAITgenerate_uml(type="state") → BGP/OSPF/STP state machine
→ Share in Slack/Teams for team reference
→ GAIT3. Change Request Visualization
3. 变更请求可视化
servicenow-change-workflow → CR details
→ generate_uml(type="sequence") → change flow diagram
→ Attach to ServiceNow CR or GAIT log
→ GAITservicenow-change-workflow → CR details
→ generate_uml(type="sequence") → change flow diagram
→ Attach to ServiceNow CR or GAIT log
→ GAIT4. Data Center Rack Documentation
4. 数据中心机架文档
generate_uml(type="rackdiag") → rack layout
→ generate_uml(type="nwdiag") → network connections
→ Cross-reference with NetBox rack/device data
→ msgraph-files → upload to SharePoint
→ GAITgenerate_uml(type="rackdiag") → rack layout
→ generate_uml(type="nwdiag") → network connections
→ Cross-reference with NetBox rack/device data
→ msgraph-files → upload to SharePoint
→ GAIT5. Packet Format Reference
5. 报文格式参考
generate_uml(type="packetdiag") → protocol header diagram
→ rfc-lookup → verify against RFC
→ Share as reference material
→ GAITgenerate_uml(type="packetdiag") → protocol header diagram
→ rfc-lookup → verify against RFC
→ Share as reference material
→ GAIT6. Architecture Documentation
6. 架构文档
generate_uml(type="structurizr" or "c4plantuml") → C4 architecture views
→ generate_uml(type="deployment") → deployment diagram
→ generate_uml(type="component") → component breakdown
→ msgraph-files → upload to SharePoint
→ GAITgenerate_uml(type="structurizr" or "c4plantuml") → C4 architecture views
→ generate_uml(type="deployment") → deployment diagram
→ generate_uml(type="component") → component breakdown
→ msgraph-files → upload to SharePoint
→ GAITIntegration with Other Skills
与其他技能的集成
| Skill | Integration |
|---|---|
| pyats-topology | Feed CDP/LLDP discovery data into nwdiag for topology diagrams |
| drawio-diagram | UML MCP for standards-based UML; Draw.io for freeform network diagrams |
| markmap-viz | Markmap for hierarchical mind maps; UML for structured diagrams |
| netbox-reconcile | Generate nwdiag diagrams color-coded by reconciliation status |
| rfc-lookup | Pair packetdiag with RFC references for protocol documentation |
| servicenow-change-workflow | Sequence diagrams documenting change request flows |
| msgraph-files | Upload generated diagrams to SharePoint |
| msgraph-teams | Share diagram URLs in Teams channels |
| gait-session-tracking | Record all diagram generation in GAIT |
| Skill | Integration |
|---|---|
| pyats-topology | 将CDP/LLDP发现数据传入nwdiag生成拓扑图 |
| drawio-diagram | UML MCP用于生成标准UML;Draw.io用于生成自由格式的网络图 |
| markmap-viz | Markmap用于生成层级思维导图;UML用于生成结构化图表 |
| netbox-reconcile | 生成按对账状态配色的nwdiag图表 |
| rfc-lookup | 将packetdiag与RFC参考结合制作协议文档 |
| servicenow-change-workflow | 用序列图记录变更请求流程 |
| msgraph-files | 将生成的图表上传到SharePoint |
| msgraph-teams | 在Teams频道中分享图表URL |
| gait-session-tracking | 在GAIT中记录所有图表生成操作 |
Comparison: UML MCP vs Draw.io vs Markmap
对比:UML MCP vs Draw.io vs Markmap
| Feature | UML MCP | Draw.io | Markmap |
|---|---|---|---|
| Best for | Structured UML, protocol diagrams, architecture | Freeform network topology | Hierarchical mind maps |
| Diagram types | 27+ (class, sequence, nwdiag, rack, packet, etc.) | Network topology, flowcharts | Mind maps from markdown |
| Rendering | Kroki (server-side) | Browser or CLI | Browser |
| Output | SVG, PNG, PDF, JPEG | .drawio, PNG, SVG, PDF | HTML |
| Code-based | Yes (PlantUML, Mermaid, D2, DOT, etc.) | XML/Mermaid/CSV | Markdown |
| Network-specific | nwdiag, rackdiag, packetdiag | Full topology editor | OSPF/BGP hierarchies |
When to use UML MCP:
- Protocol state machines (BGP FSM, OSPF states, STP states)
- Network topology diagrams from code (nwdiag)
- Rack layouts (rackdiag)
- Packet header documentation (packetdiag)
- Sequence diagrams (change workflows, protocol exchanges)
- Architecture documentation (C4, component, deployment)
- Database schema diagrams (ERD, DBML)
- Any diagram type supported by Kroki
When to use Draw.io:
- Interactive topology editing
- Native .drawio files for team collaboration
- Color-coded reconciliation status overlays
When to use Markmap:
- Hierarchical data (OSPF areas, BGP peers, config structure)
- Quick visual summaries from markdown
| Feature | UML MCP | Draw.io | Markmap |
|---|---|---|---|
| 最佳适用场景 | 结构化UML、协议图、架构图 | 自由格式的网络拓扑 | 层级思维导图 |
| 支持图表类型 | 27+种(类图、时序图、nwdiag、机架图、数据包图等) | 网络拓扑、流程图 | 基于Markdown的思维导图 |
| 渲染方式 | Kroki(服务端渲染) | 浏览器或CLI | 浏览器 |
| 输出格式 | SVG、PNG、PDF、JPEG | .drawio、PNG、SVG、PDF | HTML |
| 是否基于代码 | 是(PlantUML、Mermaid、D2、DOT等) | XML/Mermaid/CSV | Markdown |
| 网络专属特性 | nwdiag、rackdiag、packetdiag | 全功能拓扑编辑器 | OSPF/BGP层级展示 |
何时使用UML MCP:
- 协议状态机(BGP有限状态机、OSPF状态、STP状态)
- 基于代码生成网络拓扑图(nwdiag)
- 机架布局(rackdiag)
- 报文头文档(packetdiag)
- 序列图(变更流程、协议交互)
- 架构文档(C4、组件、部署图)
- 数据库schema图(ERD、DBML)
- 任意Kroki支持的图表类型
何时使用Draw.io:
- 交互式拓扑编辑
- 原生.drawio格式用于团队协作
- 带配色的对账状态叠加展示
何时使用Markmap:
- 层级数据(OSPF区域、BGP对等体、配置结构)
- 基于Markdown快速生成可视化摘要
Guardrails
注意事项
- All operations are read-only — generates diagrams, never modifies network state
- Public Kroki by default — diagram source code is sent to kroki.io for rendering; use a local Kroki instance () for sensitive topology data
KROKI_SERVER - No secrets in diagrams — never include IP credentials, passwords, or SNMP communities in diagram source code
- Record in GAIT — every diagram generation must be logged
- 所有操作均为只读 — 仅生成图表,绝不会修改网络状态
- 默认使用公共Kroki服务 — 图表源码会发送到kroki.io进行渲染;如果是敏感拓扑数据,请使用本地部署的Kroki实例()
KROKI_SERVER - 图表中禁止包含敏感信息 — 切勿在图表源码中写入IP凭证、密码或SNMP社区串
- 操作需记录到GAIT — 每次生成图表都必须留痕