UML-MCP
Supports generating Excalidraw diagrams as one of the specialized diagram types available through the server.
Enables rendering Mermaid diagrams (e.g., sequence, Gantt) via Kroki or Mermaid.ink, with support for multiple output formats.
Allows generating UML diagrams such as class, sequence, activity, use case, state, component, deployment, and object diagrams through PlantUML and Kroki rendering backends.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@UML-MCP Generate a UML class diagram for an online store with User, Order, and Product."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
UML-MCP: Diagram Generation via MCP
Generate UML and other diagrams through the Model Context Protocol.
At a glance
Topic | What you get |
Diagrams | 30+ types: UML (Class, Sequence, Activity, Use Case, State, Component, Deployment, Object), Mermaid, D2, Graphviz, TikZ, ERD, BlockDiag, BPMN, C4, and more via Kroki |
MCP tools |
|
Outputs | SVG, PNG, PDF, JPEG, base64 (availability varies by diagram type) |
Pipeline | Kroki first, then PlantUML or Mermaid.ink |
Deployment |
Source | URL |
Live MCP (HTTP) | |
Smithery catalog |
Quick Start
Choose your mode
Remote (recommended): Fast setup over HTTP MCP with Vercel serverless runtime
Local: stdio process for file output and local debugging
Remote quick start (Vercel HTTP MCP)
Configuration for the public Vercel deployment:
"uml-mcp": {
"transport": "http",
"url": "https://uml-mcp.vercel.app/mcp"
}Local quick start (stdio MCP)
git clone https://github.com/antoinebou12/uml-mcp.git && cd uml-mcp
uv sync
uv run python server.pyExample client configs:
config/cursor_config.jsonconfig/claude_desktop_config.jsonconfig/README.mdfor exact config file locationsClaude Code: install the bundled plugin from the repo marketplace (see below) or read docs/integrations/claude_code.md
Claude Code plugin
Adds the hosted HTTP MCP server plus a diagram skill (no settings.json paste). In Claude Code:
/plugin marketplace add https://github.com/antoinebou12/uml-mcp
/plugin install uml-mcp@uml-mcp-pluginsUse a local path instead of the GitHub URL if you already cloned this repo. Custom endpoints and validation: docs/integrations/claude_code.md.
Related MCP server: UML-MCP
Remote vs Local
Transport: Remote uses HTTP MCP, local uses stdio by default
Runtime: Remote runs on Vercel, local runs in your Python environment
File writes: Remote is read-only (no
output_dir), local supportsoutput_dirReturned data: Both return URL + base64; local can also save files
Environment variables: Remote is managed server-side; local reads your env config
MCP clients must call /mcp, not the site root.
Supported Diagram Types
Category | Examples |
UML (PlantUML) | Class, Sequence, Activity, Use Case, State, Component, Deployment, Object |
General | Mermaid, D2, Graphviz, ERD, BlockDiag, BPMN, C4 |
Specialized | TikZ, Excalidraw, Nomnoml, Pikchr, Structurizr, SVGBob, WaveDrom, WireViz, … |
Full list with supported formats: run python server.py --list-tools or query uml://types and uml://formats.
MCP Tools and Resources
Tools
Tool | Purpose |
| Render a diagram; omit |
| Structural validation before render; |
| Same metadata as |
| Multiple diagrams in one call (cap: |
Resources (uml://)
Resource | Description |
| Diagram types, backends, supported formats per type |
| Starter templates per type; see BPMN 2.0.2 guide for element and flow reference (docs) |
| Example diagrams per type; Mermaid documents named samples (sequence API, Gantt) alongside |
| Output formats per type |
| Type → backend → formats matrix used for validation |
| Server name, version, tools, prompts, Kroki/PlantUML URLs |
| Recommended plan-then-generate workflow |
Deployment
Vercel
This repo includes vercel.json for serverless deployment.
Connect the repo to Vercel
Use
https://<project>.vercel.app/mcpKeep
/mcpin all MCP client URLs
Smithery
Open smithery.ai/new, choose URL
Enter
https://<project>.vercel.app/mcpConfigure display name, description, and homepage
Detailed guide: docs/integrations/vercel_smithery.md
Docker
Default image serves FastAPI on port 8000 with MCP HTTP at http://127.0.0.1:8000/mcp.
# Full local stack (local Kroki + mermaid + blockdiag)
docker compose up -d
# API + MCP only (public Kroki)
docker build -t uml-mcp . && docker run -p 8000:8000 uml-mcp
# stdio MCP subprocess mode
docker run -i uml-mcp python server.py --transport stdioConfiguration (Local runtime)
These variables apply to local/self-hosted runs. Remote Vercel endpoint settings are managed server-side.
Variable | Description | Default |
| Kroki server URL |
|
| PlantUML server URL |
|
| Diagram output directory |
|
| Disable file writes |
|
| Max diagram code length |
|
| Max items per |
|
| HTTP rate limit per IP for diagram/MCP routes ( |
|
| Use local Kroki instance |
|
| Use local PlantUML instance |
|
Full options: docs/configuration.md
Architecture
Typical flow when a user asks an MCP-enabled assistant for a diagram: the assistant calls generate_uml, the server renders via Kroki, then returns URLs and optional base64 to the assistant for the user.
server.py -- MCP entry point (stdio/HTTP)
app.py -- FastAPI REST API + MCP HTTP at /mcp
api/app.py -- legacy re-export of root app (Vercel FastAPI preset uses root app.py)
mcp_core/
core/ -- config, server, CLI, utilities, diagram pipeline
tools/ -- generate_uml, validate_uml
prompts/ -- diagram generation prompts
resources/ -- uml:// resource handlers
tools/kroki/ -- Kroki, PlantUML, Mermaid, D2 clientsDevelopment
# Install dev dependencies
uv sync --all-groups
# Run tests
uv run pytest tests/ -v
# Lint
uv run ruff check . && uv run ruff format --check .
# Local CI
make ciDocumentation
Online: antoinebou12.github.io/uml-mcp
Local:
uv run mkdocs servethen open http://127.0.0.1:8000
Contributing
License
Acknowledgements
PlantUML | Kroki | Mermaid | D2
Star History
Updated daily by GitHub Actions from GitHub's timestamped stargazer API. The refresh job prefers the optional STAR_HISTORY_TOKEN repository secret and safely falls back to the per-run GITHUB_TOKEN.
Available Tools
5 toolsgenerate_umlGenerate UmlAIdempotent
Generate any UML or diagram by type (class, sequence, mermaid, d2, etc.)
Inputs: code (required), diagram_type (required), scale, theme, +2 more. Returns: object
generate_uml_batchGenerate Uml BatchAIdempotent
Generate multiple diagrams in one call. Each item is like generate_uml (diagram_type, code, output_format?, theme?, scale?). Optional shared output_dir for all items. Returns a list of per-index results or errors.
Inputs: items (required), output_dir. Returns: object
list_diagram_typesList Diagram TypesARead-onlyIdempotent
List supported diagram types with Kroki backend, description, and formats (same data as uml://types resource). Use when the client cannot read resources.
Inputs: no named parameters. Returns: object
render_diagramRender DiagramAIdempotent
Render a diagram and return it as an MCP image plus the server-side file path. Use this instead of generate_uml when the figure should appear in chat or be uploaded: the image needs no base64 copying in the conversation, and local_path is a file the wiki writer can upload directly.
Inputs: code (required), diagram_type (required), scale, theme, +1 more. Returns: result
validate_umlValidate UmlARead-onlyIdempotent
Validate a diagram by compiling it on the renderer. Runs local structure checks first, then a real Kroki compile, so valid reflects what the renderer accepts (a TikZ figure that does not compile is reported invalid). Returns errors, suggestions, compiled, and compile_ms.
Inputs: code (required), diagram_type (required), strict, output_format. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool has a mostly distinct role: listing types, single generate, batch generate, validate, and render. The main ambiguity is between generate_uml and render_diagram, but the description explicitly steers usage ('use this instead of generate_uml when the figure should appear in chat'), which resolves most misselection risk.
All names follow a snake_case verb_noun pattern (list_diagram_types, generate_uml, generate_uml_batch, validate_uml, render_diagram). Minor inconsistency: three tools use the '_uml' resource suffix while render_diagram uses '_diagram', but the convention remains readable and predictable.
Five tools is well-scoped for a diagram generation server, with each tool earning its place (discovery, single gen, batch gen, validation, image rendering). No obvious padding or redundancy.
The core lifecycle (discover types, generate, batch, validate, render to image/file) is covered with no dead ends. Minor gaps exist around managing generated artifacts (e.g., listing or cleaning up previously written output files), but agents can work around this.
Maintenance
Related MCP Connectors
Render, verify, describe, and safely edit Mermaid diagrams through MCP.
Render, validate, encode/decode PlantUML diagram-as-code; 22 diagram types. Free, no auth.
Generate cloud architecture diagrams, flowcharts, and sequence diagrams.
Immutable agent diagrams: create, edit, validate and render versioned diagrams over MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides MCP tools to validate Mermaid diagram syntax, render diagrams to SVG, and get documentation links.97 npm16MIT
- AlicenseAqualityBmaintenanceGenerates UML and other diagrams (30+ types) via the Model Context Protocol, supporting multiple output formats and deployment options.7110MIT
- AlicenseAqualityDmaintenanceGenerates GCP architecture diagrams, sequence diagrams, flow charts, and class diagrams using Python diagrams DSL via MCP.31Apache 2.0
- AlicenseAqualityDmaintenanceMCP server for rendering diagrams (Mermaid, Graphviz, PlantUML, D2) via Kroki. Provides tools to render diagrams and list available engines.218 npmMIT