generate_uml
Generate any UML or diagram by type (class, sequence, mermaid, d2, etc.)
Turn diagram source into a rendered file — class, sequence, mermaid, d2 and the rest — and catch the syntax errors before the render round trip.
LABSCO SUMMARY
validate_uml checks the type, format, code length and basic syntax locally and returns suggestions, so the ordinary mistakes surface without a Kroki call. generate_uml_batch takes a list with one shared output directory and reports results per index, which is the shape you want when a rename means regenerating every diagram in a document.
A Kroki-backed diagram renderer with four tools: list the supported types, validate source locally, render one diagram, or render a batch in a single call.
uv on your PATH, which resolves the Python runtime through UV_PYTHON. Rendering goes out to Kroki; validation runs locally.
Build from source — git clone https://github.com/antoinebou12/uml-mcp.git && cd uml-mcp
USE CASES
Check which types the server supports and what formats each can render to, then generate the diagram with a theme, scale and output directory.
Validate the edited sources locally first, then render them as one batch into a shared output directory and read the per-index results to see which ones failed.
Run the local check to get the errors and suggestions without a round trip, correct the source, and render once it passes.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
generate_umlGenerate any UML or diagram by type (class, sequence, mermaid, d2, etc.)
generate_uml_batchGenerate 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.
list_diagram_typesList supported diagram types with Kroki backend, description, and formats (same data as uml://types resource). Use when the client cannot read resources.
validate_umlValidate diagram type, format, code length, and basic syntax locally before render (no Kroki call). Returns errors and suggestions.
BEFORE YOU INSTALL
4 tools when we connected.
CONTEXT COST
Rated by the size of the 4 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
You clone this one yourself.
git clone https://github.com/antoinebou12/uml-mcp.git && cd uml-mcp
uv sync
uv run python server.pyhttps://uml-mcp.vercel.app/mcpAdd this hosted endpoint to your MCP client.
{
"mcpServers": {
"uml-mcp": {
"url": "https://uml-mcp.vercel.app/mcp"
}
}
}After uv sync in your clone, point Claude Desktop at the Python inside the clone's .venv, with absolute paths.
{
"mcpServers": {
"uml-mcp": {
"command": "<YOUR_PATH_TO_UML_MCP>/.venv/bin/python",
"args": [
"-u",
"<YOUR_PATH_TO_UML_MCP>/server.py"
],
"env": {
"MCP_OUTPUT_DIR": "<YOUR_PATH_TO_UML_MCP>/output"
}
}
}
}/plugin marketplace add https://github.com/antoinebou12/uml-mcp
/plugin install uml-mcp@uml-mcp-pluginsnpm install -g @smithery/cli@latest
smithery auth login
smithery mcp add antoinebou12/uml --client cursordocker build -t uml-mcp .
docker run -p 8000:8000 uml-mcp