uml-diagram

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

UML & Diagram Generation via Kroki

通过Kroki实现UML和图表生成

MCP Server

MCP Server

PropertyValue
Sourceantoinebou12/uml-mcp
Transportstdio (default) or HTTP
Tools2 (
generate_uml
,
generate_diagram_url
)
Resources8 (diagram types, templates, examples, formats, server info)
Prompts11 (class, sequence, activity, usecase, Mermaid, BPMN, etc.)
RenderingKroki (primary) with PlantUML and Mermaid.ink fallback
PropertyValue
Sourceantoinebou12/uml-mcp
Transportstdio (默认) 或 HTTP
Tools2个(
generate_uml
generate_diagram_url
Resources8种(图表类型、模板、示例、格式、服务器信息)
Prompts11个(类图、时序图、活动图、用例图、Mermaid、BPMN等)
Rendering主用Kroki,降级方案为PlantUML和Mermaid.ink

Tools

工具

generate_uml

generate_uml

Generate a diagram and optionally save to disk.
ParameterTypeDefaultDescription
diagram_type
stringrequiredDiagram type (class, sequence, mermaid, d2, graphviz, etc.)
code
stringrequiredDiagram source code
output_dir
stringnullDirectory to save file (null = no file write)
output_format
string"svg"Output format: svg, png, pdf, jpeg, txt, base64
theme
stringnullPlantUML theme directive
scale
float1.0SVG scaling factor (min 0.1)
Returns:
{ code, url, playground, local_path, content_base64, error }
生成图表并可选择保存到本地磁盘。
ParameterTypeDefaultDescription
diagram_type
string必填图表类型(class、sequence、mermaid、d2、graphviz等)
code
string必填图表源码
output_dir
stringnull文件保存目录(null = 不写入文件)
output_format
string"svg"输出格式:svg、png、pdf、jpeg、txt、base64
theme
stringnullPlantUML主题指令
scale
float1.0SVG缩放系数(最小0.1)
返回值:
{ code, url, playground, local_path, content_base64, error }

generate_diagram_url

generate_diagram_url

Get the Kroki rendering URL and optional base64 content without saving to disk.
ParameterTypeDefaultDescription
diagram_type
stringrequiredDiagram type
code
stringrequiredDiagram source code
output_format
string"svg"Output format
theme
stringnullPlantUML theme
scale
float1.0SVG scaling factor
Returns:
{ code, url, playground, content_base64, error }

获取Kroki渲染URL和可选的base64内容,不会写入磁盘。
ParameterTypeDefaultDescription
diagram_type
string必填图表类型
code
string必填图表源码
output_format
string"svg"输出格式
theme
stringnullPlantUML主题
scale
float1.0SVG缩放系数
返回值:
{ code, url, playground, content_base64, error }

Supported Diagram Types (27+)

支持的图表类型(27+种)

PlantUML-based

基于PlantUML的类型

TypeDescriptionUse Case
class
Class diagramsObject relationships, inheritance, interfaces
sequence
Sequence diagramsMessage flows between components
activity
Activity diagramsWorkflow and process flows
usecase
Use case diagramsActor-system interactions
state
State machine diagramsFSM, protocol states
component
Component diagramsSystem architecture
deployment
Deployment diagramsInfrastructure layout
object
Object diagramsInstance-level relationships
c4plantuml
C4 architectureSystem context, container, component views
plantuml
Generic PlantUMLAny PlantUML syntax
TypeDescriptionUse Case
class
类图对象关系、继承、接口
sequence
时序图组件间的消息流
activity
活动图工作流与流程流转
usecase
用例图参与者与系统的交互
state
状态机图有限状态机、协议状态
component
组件图系统架构
deployment
部署图基础设施布局
object
对象图实例级关系
c4plantuml
C4架构图系统上下文、容器、组件视图
plantuml
通用PlantUML任意PlantUML语法内容

Network & Infrastructure

网络与基础设施类

TypeDescriptionUse Case
nwdiag
Network diagramsNetwork topology, IP addressing, VLANs
rackdiag
Rack diagramsData center rack layouts
packetdiag
Packet diagramsProtocol header formats (Ethernet, IP, TCP)
blockdiag
Block diagramsSystem block diagrams
actdiag
Activity diagramsActivity flow (blockdiag family)
seqdiag
Sequence diagramsSequence flow (blockdiag family)
TypeDescriptionUse Case
nwdiag
网络图网络拓扑、IP地址规划、VLAN
rackdiag
机架图数据中心机架布局
packetdiag
数据包图协议报文头格式(以太网、IP、TCP)
blockdiag
框图系统框图
actdiag
活动图活动流转(blockdiag系列)
seqdiag
时序图时序流转(blockdiag系列)

Other Backends

其他渲染后端支持的类型

TypeDescriptionUse Case
mermaid
Mermaid diagramsFlowcharts, Gantt, sequence, pie, journey
d2
D2 declarativeModern declarative diagrams
graphviz
Graphviz DOTGraph layouts, dependency trees
erd
Entity-RelationshipDatabase schema diagrams
dbml
Database MarkupDatabase schema (DBML syntax)
bpmn
BPMN 2.0Business process modeling
structurizr
Structurizr DSLC4 model architecture
ditaa
ASCII art to diagramConvert ASCII art to polished diagrams
wavedrom
Digital timingProtocol timing diagrams, signal waveforms
wireviz
Wire/cable harnessCable and connector documentation
bytefield
Byte fieldBinary format documentation

TypeDescriptionUse Case
mermaid
Mermaid图流程图、甘特图、时序图、饼图、用户旅程图
d2
D2声明式图现代声明式图表
graphviz
Graphviz DOT图图布局、依赖树
erd
实体关系图数据库schema图
dbml
数据库标记语言图数据库schema(DBML语法)
bpmn
BPMN 2.0图业务流程建模
structurizr
Structurizr DSL图C4模型架构
ditaa
ASCII艺术转图表将ASCII艺术转换为精美的图表
wavedrom
数字时序图协议时序图、信号波形
wireviz
线缆/线束图线缆与连接器文档
bytefield
字节字段图二进制格式文档

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
→ GAIT
pyats-topology → CDP/LLDP discovery data
→ generate_uml(type="nwdiag") → network topology diagram
→ msgraph-files → upload to SharePoint
→ GAIT

2. Protocol State Machine Reference

2. 协议状态机参考

generate_uml(type="state") → BGP/OSPF/STP state machine
→ Share in Slack/Teams for team reference
→ GAIT
generate_uml(type="state") → BGP/OSPF/STP state machine
→ Share in Slack/Teams for team reference
→ GAIT

3. Change Request Visualization

3. 变更请求可视化

servicenow-change-workflow → CR details
→ generate_uml(type="sequence") → change flow diagram
→ Attach to ServiceNow CR or GAIT log
→ GAIT
servicenow-change-workflow → CR details
→ generate_uml(type="sequence") → change flow diagram
→ Attach to ServiceNow CR or GAIT log
→ GAIT

4. 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
→ GAIT
generate_uml(type="rackdiag") → rack layout
→ generate_uml(type="nwdiag") → network connections
→ Cross-reference with NetBox rack/device data
→ msgraph-files → upload to SharePoint
→ GAIT

5. Packet Format Reference

5. 报文格式参考

generate_uml(type="packetdiag") → protocol header diagram
→ rfc-lookup → verify against RFC
→ Share as reference material
→ GAIT
generate_uml(type="packetdiag") → protocol header diagram
→ rfc-lookup → verify against RFC
→ Share as reference material
→ GAIT

6. 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
→ GAIT

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
→ GAIT

Integration with Other Skills

与其他技能的集成

SkillIntegration
pyats-topologyFeed CDP/LLDP discovery data into nwdiag for topology diagrams
drawio-diagramUML MCP for standards-based UML; Draw.io for freeform network diagrams
markmap-vizMarkmap for hierarchical mind maps; UML for structured diagrams
netbox-reconcileGenerate nwdiag diagrams color-coded by reconciliation status
rfc-lookupPair packetdiag with RFC references for protocol documentation
servicenow-change-workflowSequence diagrams documenting change request flows
msgraph-filesUpload generated diagrams to SharePoint
msgraph-teamsShare diagram URLs in Teams channels
gait-session-trackingRecord all diagram generation in GAIT

SkillIntegration
pyats-topology将CDP/LLDP发现数据传入nwdiag生成拓扑图
drawio-diagramUML MCP用于生成标准UML;Draw.io用于生成自由格式的网络图
markmap-vizMarkmap用于生成层级思维导图;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

FeatureUML MCPDraw.ioMarkmap
Best forStructured UML, protocol diagrams, architectureFreeform network topologyHierarchical mind maps
Diagram types27+ (class, sequence, nwdiag, rack, packet, etc.)Network topology, flowchartsMind maps from markdown
RenderingKroki (server-side)Browser or CLIBrowser
OutputSVG, PNG, PDF, JPEG.drawio, PNG, SVG, PDFHTML
Code-basedYes (PlantUML, Mermaid, D2, DOT, etc.)XML/Mermaid/CSVMarkdown
Network-specificnwdiag, rackdiag, packetdiagFull topology editorOSPF/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

FeatureUML MCPDraw.ioMarkmap
最佳适用场景结构化UML、协议图、架构图自由格式的网络拓扑层级思维导图
支持图表类型27+种(类图、时序图、nwdiag、机架图、数据包图等)网络拓扑、流程图基于Markdown的思维导图
渲染方式Kroki(服务端渲染)浏览器或CLI浏览器
输出格式SVG、PNG、PDF、JPEG.drawio、PNG、SVG、PDFHTML
是否基于代码是(PlantUML、Mermaid、D2、DOT等)XML/Mermaid/CSVMarkdown
网络专属特性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 (
    KROKI_SERVER
    ) for sensitive topology data
  • 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 — 每次生成图表都必须留痕