UML & Diagram Generation via Kroki
MCP Server
| Property |
Value |
| Source |
antoinebou12/uml-mcp |
| Transport |
stdio (default) or HTTP |
| Tools |
2 (generate_uml, generate_diagram_url) |
| 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 |
Tools
generate_uml
Generate a diagram and optionally save to disk.
| Parameter |
Type |
Default |
Description |
diagram_type |
string |
required |
Diagram type (class, sequence, mermaid, d2, graphviz, etc.) |
code |
string |
required |
Diagram source code |
output_dir |
string |
null |
Directory to save file (null = no file write) |
output_format |
string |
"svg" |
Output format: svg, png, pdf, jpeg, txt, base64 |
theme |
string |
null |
PlantUML theme directive |
scale |
float |
1.0 |
SVG scaling factor (min 0.1) |
Returns: { code, url, playground, local_path, content_base64, error }
generate_diagram_url
Get the Kroki rendering URL and optional base64 content without saving to disk.
| Parameter |
Type |
Default |
Description |
diagram_type |
string |
required |
Diagram type |
code |
string |
required |
Diagram source code |
output_format |
string |
"svg" |
Output format |
theme |
string |
null |
PlantUML theme |
scale |
float |
1.0 |
SVG scaling factor |
Returns: { code, url, playground, content_base64, error }
Supported Diagram Types (27+)
PlantUML-based
| Type |
Description |
Use Case |
class |
Class diagrams |
Object relationships, inheritance, interfaces |
sequence |
Sequence diagrams |
Message flows between components |
activity |
Activity diagrams |
Workflow and process flows |
usecase |
Use case diagrams |
Actor-system interactions |
state |
State machine diagrams |
FSM, protocol states |
component |
Component diagrams |
System architecture |
deployment |
Deployment diagrams |
Infrastructure layout |
object |
Object diagrams |
Instance-level relationships |
c4plantuml |
C4 architecture |
System context, container, component views |
plantuml |
Generic PlantUML |
Any PlantUML syntax |
Network & Infrastructure
| Type |
Description |
Use Case |
nwdiag |
Network diagrams |
Network topology, IP addressing, VLANs |
rackdiag |
Rack diagrams |
Data center rack layouts |
packetdiag |
Packet diagrams |
Protocol header formats (Ethernet, IP, TCP) |
blockdiag |
Block diagrams |
System block diagrams |
actdiag |
Activity diagrams |
Activity flow (blockdiag family) |
seqdiag |
Sequence diagrams |
Sequence flow (blockdiag family) |
Other Backends
| Type |
Description |
Use Case |
mermaid |
Mermaid diagrams |
Flowcharts, Gantt, sequence, pie, journey |
d2 |
D2 declarative |
Modern declarative diagrams |
graphviz |
Graphviz DOT |
Graph layouts, dependency trees |
erd |
Entity-Relationship |
Database schema diagrams |
dbml |
Database Markup |
Database schema (DBML syntax) |
bpmn |
BPMN 2.0 |
Business process modeling |
structurizr |
Structurizr DSL |
C4 model architecture |
ditaa |
ASCII art to diagram |
Convert ASCII art to polished diagrams |
wavedrom |
Digital timing |
Protocol timing diagrams, signal waveforms |
wireviz |
Wire/cable harness |
Cable and connector documentation |
bytefield |
Byte field |
Binary format documentation |
Network Engineering Examples
Network Topology (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"
)
Rack Diagram (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"
)
Packet Header (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"
)
BGP State Machine (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"
)
OSPF Area Design (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"
)
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"
)
C4 Architecture (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"
)
Workflows
1. Network Topology Documentation
pyats-topology → CDP/LLDP discovery data
→ generate_uml(type="nwdiag") → network topology diagram
→ msgraph-files → upload to SharePoint
→ GAIT
2. Protocol State Machine Reference
generate_uml(type="state") → BGP/OSPF/STP state machine
→ Share in Slack/Teams for team reference
→ GAIT
3. Change Request Visualization
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
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
generate_uml(type="packetdiag") → protocol header diagram
→ rfc-lookup → verify against RFC
→ Share as reference material
→ GAIT
6. Architecture Documentation
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
| 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 |
Comparison: 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
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
1---
2name: uml-diagram
3description: "UML and diagram generation via Kroki — class, sequence, activity, state, component, deployment, network, ER, C4, Mermaid, D2, Graphviz, BPMN, 27+ types. Use when generating a network diagram, creating a sequence diagram, drawing a rack layout, visualizing a protocol state machine, or producing architecture documentation."
4license: Apache-2.0
5user-invocable: true
6metadata:
7 { "openclaw": { "requires": { "bins": ["python3"], "env": [] } } }
8---
9
10# UML & Diagram Generation via Kroki
11
12## MCP Server
13
14| Property | Value |
15|----------|-------|
16| **Source** | [antoinebou12/uml-mcp](https://github.com/antoinebou12/uml-mcp) |
17| **Transport** | stdio (default) or HTTP |
18| **Tools** | 2 (`generate_uml`, `generate_diagram_url`) |
19| **Resources** | 8 (diagram types, templates, examples, formats, server info) |
20| **Prompts** | 11 (class, sequence, activity, usecase, Mermaid, BPMN, etc.) |
21| **Rendering** | Kroki (primary) with PlantUML and Mermaid.ink fallback |
22
23## Tools
24
25### `generate_uml`
26
27Generate a diagram and optionally save to disk.
28
29| Parameter | Type | Default | Description |
30|-----------|------|---------|-------------|
31| `diagram_type` | string | required | Diagram type (class, sequence, mermaid, d2, graphviz, etc.) |
32| `code` | string | required | Diagram source code |
33| `output_dir` | string | null | Directory to save file (null = no file write) |
34| `output_format` | string | "svg" | Output format: svg, png, pdf, jpeg, txt, base64 |
35| `theme` | string | null | PlantUML theme directive |
36| `scale` | float | 1.0 | SVG scaling factor (min 0.1) |
37
38**Returns:** `{ code, url, playground, local_path, content_base64, error }`
39
40### `generate_diagram_url`
41
42Get the Kroki rendering URL and optional base64 content without saving to disk.
43
44| Parameter | Type | Default | Description |
45|-----------|------|---------|-------------|
46| `diagram_type` | string | required | Diagram type |
47| `code` | string | required | Diagram source code |
48| `output_format` | string | "svg" | Output format |
49| `theme` | string | null | PlantUML theme |
50| `scale` | float | 1.0 | SVG scaling factor |
51
52**Returns:** `{ code, url, playground, content_base64, error }`
53
54---
55
56## Supported Diagram Types (27+)
57
58### PlantUML-based
59
60| Type | Description | Use Case |
61|------|-------------|----------|
62| `class` | Class diagrams | Object relationships, inheritance, interfaces |
63| `sequence` | Sequence diagrams | Message flows between components |
64| `activity` | Activity diagrams | Workflow and process flows |
65| `usecase` | Use case diagrams | Actor-system interactions |
66| `state` | State machine diagrams | FSM, protocol states |
67| `component` | Component diagrams | System architecture |
68| `deployment` | Deployment diagrams | Infrastructure layout |
69| `object` | Object diagrams | Instance-level relationships |
70| `c4plantuml` | C4 architecture | System context, container, component views |
71| `plantuml` | Generic PlantUML | Any PlantUML syntax |
72
73### Network & Infrastructure
74
75| Type | Description | Use Case |
76|------|-------------|----------|
77| `nwdiag` | Network diagrams | Network topology, IP addressing, VLANs |
78| `rackdiag` | Rack diagrams | Data center rack layouts |
79| `packetdiag` | Packet diagrams | Protocol header formats (Ethernet, IP, TCP) |
80| `blockdiag` | Block diagrams | System block diagrams |
81| `actdiag` | Activity diagrams | Activity flow (blockdiag family) |
82| `seqdiag` | Sequence diagrams | Sequence flow (blockdiag family) |
83
84### Other Backends
85
86| Type | Description | Use Case |
87|------|-------------|----------|
88| `mermaid` | Mermaid diagrams | Flowcharts, Gantt, sequence, pie, journey |
89| `d2` | D2 declarative | Modern declarative diagrams |
90| `graphviz` | Graphviz DOT | Graph layouts, dependency trees |
91| `erd` | Entity-Relationship | Database schema diagrams |
92| `dbml` | Database Markup | Database schema (DBML syntax) |
93| `bpmn` | BPMN 2.0 | Business process modeling |
94| `structurizr` | Structurizr DSL | C4 model architecture |
95| `ditaa` | ASCII art to diagram | Convert ASCII art to polished diagrams |
96| `wavedrom` | Digital timing | Protocol timing diagrams, signal waveforms |
97| `wireviz` | Wire/cable harness | Cable and connector documentation |
98| `bytefield` | Byte field | Binary format documentation |
99
100---
101
102## Network Engineering Examples
103
104### Network Topology (nwdiag)
105
106```
107generate_uml(
108 diagram_type="nwdiag",
109 code="""
110nwdiag {
111 network dmz {
112 address = "210.x.x.x/24"
113 web01 [address = "210.x.x.1"];
114 web02 [address = "210.x.x.2"];
115 }
116 network internal {
117 address = "172.x.x.x/24"
118 web01 [address = "172.x.x.1"];
119 web02 [address = "172.x.x.2"];
120 db01;
121 }
122}
123""",
124 output_format="svg"
125)
126```
127
128### Rack Diagram (rackdiag)
129
130```
131generate_uml(
132 diagram_type="rackdiag",
133 code="""
134rackdiag {
135 16U;
136 1: UPS;
137 2: UPS;
138 3: Patch Panel;
139 4: Catalyst 9300;
140 5: Catalyst 9300;
141 6: Nexus 9000;
142 7: Nexus 9000;
143 8: ASR 1001-X;
144 9: ASR 1001-X;
145 10: BIG-IP i5800;
146 11: BIG-IP i5800;
147 12: UCS C220;
148 13: UCS C220;
149 14: UCS C220;
150 15: UCS C220;
151 16: Cable Management;
152}
153""",
154 output_format="png"
155)
156```
157
158### Packet Header (packetdiag)
159
160```
161generate_uml(
162 diagram_type="packetdiag",
163 code="""
164packetdiag {
165 colwidth = 32
166 node_height = 72
167 0-3: Version
168 4-7: IHL
169 8-15: DSCP / ECN
170 16-31: Total Length
171 32-47: Identification
172 48-50: Flags
173 51-63: Fragment Offset
174 64-71: TTL
175 72-79: Protocol
176 80-95: Header Checksum
177 96-127: Source Address
178 128-159: Destination Address
179}
180""",
181 output_format="svg"
182)
183```
184
185### BGP State Machine (state)
186
187```
188generate_uml(
189 diagram_type="state",
190 code="""
191@startuml
192[*] --> Idle
193Idle --> Connect : Start
194Connect --> OpenSent : TCP established
195Connect --> Active : TCP failed
196Active --> OpenSent : TCP established
197Active --> Connect : ConnectRetry timer
198OpenSent --> OpenConfirm : OPEN received (valid)
199OpenSent --> Idle : OPEN received (error)
200OpenConfirm --> Established : KEEPALIVE received
201OpenConfirm --> Idle : Hold timer expired
202Established --> Idle : NOTIFICATION / Hold expired
203Established : Process UPDATE messages
204@enduml
205""",
206 output_format="svg"
207)
208```
209
210### OSPF Area Design (class)
211
212```
213generate_uml(
214 diagram_type="class",
215 code="""
216@startuml
217package "Area 0 - Backbone" {
218 class "Core-1" as C1 { router-id: 1.1.1.1 }
219 class "Core-2" as C2 { router-id: 2.2.2.2 }
220 C1 -- C2 : 10G P2P
221}
222package "Area 1 - Campus" {
223 class "Dist-1" as D1 { router-id: 3.3.3.3 }
224 class "Dist-2" as D2 { router-id: 4.4.4.4 }
225}
226package "Area 2 - DC" {
227 class "Spine-1" as S1 { router-id: 5.5.5.5 }
228 class "Spine-2" as S2 { router-id: 6.6.6.6 }
229}
230C1 -- D1 : ABR
231C2 -- D2 : ABR
232C1 -- S1 : ABR
233C2 -- S2 : ABR
234@enduml
235""",
236 output_format="svg"
237)
238```
239
240### Sequence: Change Request Flow
241
242```
243generate_uml(
244 diagram_type="sequence",
245 code="""
246@startuml
247actor Engineer
248participant NetClaw
249participant ServiceNow
250participant Device
251participant GAIT
252
253Engineer -> NetClaw : "Add Loopback99"
254NetClaw -> ServiceNow : Create Change Request
255ServiceNow --> NetClaw : CR-12345 (New)
256NetClaw -> ServiceNow : Wait for approval
257ServiceNow --> NetClaw : CR-12345 (Implement)
258NetClaw -> Device : Capture baseline
259Device --> NetClaw : Running config
260NetClaw -> Device : Apply config
261Device --> NetClaw : Config applied
262NetClaw -> Device : Verify change
263Device --> NetClaw : Loopback99 up/up
264NetClaw -> ServiceNow : Close CR-12345
265NetClaw -> GAIT : Record full audit trail
266NetClaw --> Engineer : Done. Verified.
267@enduml
268""",
269 output_format="svg"
270)
271```
272
273### C4 Architecture (structurizr)
274
275```
276generate_uml(
277 diagram_type="structurizr",
278 code="""
279workspace {
280 model {
281 engineer = person "Network Engineer"
282 netclaw = softwareSystem "NetClaw" {
283 openclaw = container "OpenClaw Agent"
284 pyats = container "pyATS MCP"
285 gait = container "GAIT MCP"
286 }
287 network = softwareSystem "Network Devices"
288 servicenow = softwareSystem "ServiceNow"
289
290 engineer -> openclaw "Chat"
291 openclaw -> pyats "MCP (stdio)"
292 openclaw -> gait "MCP (stdio)"
293 pyats -> network "SSH/NETCONF"
294 openclaw -> servicenow "REST API"
295 }
296 views {
297 container netclaw {
298 include *
299 autoLayout
300 }
301 }
302}
303""",
304 output_format="svg"
305)
306```
307
308---
309
310## Workflows
311
312### 1. Network Topology Documentation
313```
314pyats-topology → CDP/LLDP discovery data
315→ generate_uml(type="nwdiag") → network topology diagram
316→ msgraph-files → upload to SharePoint
317→ GAIT
318```
319
320### 2. Protocol State Machine Reference
321```
322generate_uml(type="state") → BGP/OSPF/STP state machine
323→ Share in Slack/Teams for team reference
324→ GAIT
325```
326
327### 3. Change Request Visualization
328```
329servicenow-change-workflow → CR details
330→ generate_uml(type="sequence") → change flow diagram
331→ Attach to ServiceNow CR or GAIT log
332→ GAIT
333```
334
335### 4. Data Center Rack Documentation
336```
337generate_uml(type="rackdiag") → rack layout
338→ generate_uml(type="nwdiag") → network connections
339→ Cross-reference with NetBox rack/device data
340→ msgraph-files → upload to SharePoint
341→ GAIT
342```
343
344### 5. Packet Format Reference
345```
346generate_uml(type="packetdiag") → protocol header diagram
347→ rfc-lookup → verify against RFC
348→ Share as reference material
349→ GAIT
350```
351
352### 6. Architecture Documentation
353```
354generate_uml(type="structurizr" or "c4plantuml") → C4 architecture views
355→ generate_uml(type="deployment") → deployment diagram
356→ generate_uml(type="component") → component breakdown
357→ msgraph-files → upload to SharePoint
358→ GAIT
359```
360
361---
362
363## Integration with Other Skills
364
365| Skill | Integration |
366|-------|-------------|
367| **pyats-topology** | Feed CDP/LLDP discovery data into nwdiag for topology diagrams |
368| **drawio-diagram** | UML MCP for standards-based UML; Draw.io for freeform network diagrams |
369| **markmap-viz** | Markmap for hierarchical mind maps; UML for structured diagrams |
370| **netbox-reconcile** | Generate nwdiag diagrams color-coded by reconciliation status |
371| **rfc-lookup** | Pair packetdiag with RFC references for protocol documentation |
372| **servicenow-change-workflow** | Sequence diagrams documenting change request flows |
373| **msgraph-files** | Upload generated diagrams to SharePoint |
374| **msgraph-teams** | Share diagram URLs in Teams channels |
375| **gait-session-tracking** | Record all diagram generation in GAIT |
376
377---
378
379## Comparison: UML MCP vs Draw.io vs Markmap
380
381| Feature | UML MCP | Draw.io | Markmap |
382|---------|---------|---------|---------|
383| **Best for** | Structured UML, protocol diagrams, architecture | Freeform network topology | Hierarchical mind maps |
384| **Diagram types** | 27+ (class, sequence, nwdiag, rack, packet, etc.) | Network topology, flowcharts | Mind maps from markdown |
385| **Rendering** | Kroki (server-side) | Browser or CLI | Browser |
386| **Output** | SVG, PNG, PDF, JPEG | .drawio, PNG, SVG, PDF | HTML |
387| **Code-based** | Yes (PlantUML, Mermaid, D2, DOT, etc.) | XML/Mermaid/CSV | Markdown |
388| **Network-specific** | nwdiag, rackdiag, packetdiag | Full topology editor | OSPF/BGP hierarchies |
389
390**When to use UML MCP:**
391- Protocol state machines (BGP FSM, OSPF states, STP states)
392- Network topology diagrams from code (nwdiag)
393- Rack layouts (rackdiag)
394- Packet header documentation (packetdiag)
395- Sequence diagrams (change workflows, protocol exchanges)
396- Architecture documentation (C4, component, deployment)
397- Database schema diagrams (ERD, DBML)
398- Any diagram type supported by Kroki
399
400**When to use Draw.io:**
401- Interactive topology editing
402- Native .drawio files for team collaboration
403- Color-coded reconciliation status overlays
404
405**When to use Markmap:**
406- Hierarchical data (OSPF areas, BGP peers, config structure)
407- Quick visual summaries from markdown
408
409---
410
411## Guardrails
412
413- **All operations are read-only** — generates diagrams, never modifies network state
414- **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
415- **No secrets in diagrams** — never include IP credentials, passwords, or SNMP communities in diagram source code
416- **Record in GAIT** — every diagram generation must be logged