About Plantuml Mcp Server
Plantuml Mcp Server is an MCP server for generating and sharing PlantUML diagrams, aimed at Claude Desktop and Claude Code. It also encodes and decodes diagram text and provides a prompt for handling syntax errors.
Key features
- 01Generate diagrams with SVG or PNG URLs
- 02Save SVG and PNG files locally
- 03Encode and decode PlantUML text
- 04Provide syntax-error handling prompt
Use cases
- 01Create sequence, class, and architecture diagrams
- 02Share diagram source through encoded URLs
- 03Validate and correct common PlantUML syntax issues
MCP support
The server exposes diagram generation, encoding, and decoding tools, plus the plantuml_error_handling prompt to MCP clients such as Claude Desktop and Claude Code.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
3Saved tool list · updated 3w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| plantuml_code | string | Yes | PlantUML diagram code. Will be automatically validated for syntax errors before generating the diagram URL. |
| format | enum | No | Output image format (SVG or PNG)svg | png |
| output_path | string | No | Optional. Path to save diagram locally. Automatically creates all necessary parent directories. Restricted to current working directory by default. Set PLANTUML_ALLOWED_DIRS env var (colon-separated paths, or "*" for unrestricted) to allow additional directories. Only .svg and .png extensions permitted. |
Details
From the project READMEPlantUML MCP Server
A Model Context Protocol (MCP) server that provides PlantUML diagram generation capabilities for Claude Desktop and Claude Code.
Available Tools
generate_plantuml_diagram- Generate diagrams and get embeddable URLs (SVG/PNG), optionally save locallyencode_plantuml- Encode PlantUML code for URL sharingdecode_plantuml- Decode PlantUML from encoded strings
Available Prompts
plantuml_error_handling- Guidelines for handling PlantUML syntax errors and implementing auto-fix workflows
This prompt provides Claude instances with comprehensive instructions on how to:
- Detect PlantUML syntax errors using native server validation
- Implement intelligent auto-fix workflows for common syntax issues
- Parse structured error responses and apply appropriate corrections
- Handle validation failures gracefully with retry logic
The prompt enables Claude to automatically detect and fix common PlantUML errors like missing tags, invalid arrow syntax, typos in keywords, and missing quotes, making PlantUML diagram generation more reliable and user-friendly.
Quick Setup
For Claude Code
# Using default PlantUML server
claude mcp add plantuml --scope user --env PLANTUML_SERVER_URL=https://www.plantuml.com/plantuml -- npx plantuml-mcp-server
For Claude Desktop
Add this to your Claude Desktop MCP configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"plantuml": {
"command": "npx",
"args": ["plantuml-mcp-server"],
"env": {
"PLANTUML_SERVER_URL": "https://www.plantuml.com/plantuml"
}
}
}
}
To use your own PlantUML server, change the PLANTUML_SERVER_URL environment variable.
Then restart Claude Desktop/Code to activate the MCP server.
What You Can Do
After setup, you can ask Claude to:
- Generate PlantUML diagrams and get embeddable SVG/PNG URLs
- Create sequence diagrams, class diagrams, architecture diagrams
- Use advanced PlantUML features like
!includedirectives and external libraries - Encode/decode PlantUML for URL sharing
- Save diagrams locally with secure path restrictions
Saving Diagrams Locally
The generate_plantuml_diagram tool supports saving diagrams to local files via the output_path parameter.
Security: By default, files can only be saved within the current working directory. Only .svg and .png extensions are allowed.
To allow additional directories, set the PLANTUML_ALLOWED_DIRS environment variable:
# Allow specific directories (colon-separated)
PLANTUML_ALLOWED_DIRS=/home/user/diagrams:/tmp/output
# Allow any directory (use with caution)
PLANTUML_ALLOWED_DIRS=*
Examples
C4 diagram for plantuml-mcp-server
> add c4 diagram for this project in readme 'C4 diagram for plantuml-mcp-server' section
Sequence diagram for plantuml-mcp-server
> add sequence diagram in readme in architecture section
OAuth2 Authorization Code Flow Diagram
> show me basic oauth2 flow png, open it in browser
Development Setup
Prerequisites
- Node.js 22.12.0 or later
- npm
Local Installation
# Clone and setup
git clone https://github.com/mzagar/plantuml-mcp-server.git
cd plantuml-mcp-server
make setup
Development Commands
# Show all available commands
make help
# Build and run all tests
make clean build test-all
Local MCP Smoke Test
Test the compiled server in this checkout through mcpc:
Requires Node.js 22.12.0 or later, npm, Make, and network access.
# Install project dependencies, then build and test the local server
npm ci --ignore-scripts --no-audit --no-fund --engine-strict
make test-mcpc
If mcpc is missing from PATH, the target installs the official Apify CLI with npm install --global --no-audit --no-fund @apify/mcpc. It reuses an existing installation without upgrading it and checks mcpc --version before testing. The smoke test has been verified with mcpc 0.6.0.
This is a global CLI installation, not a project dependency. It requires permission to write to the npm global prefix. The target never uses sudo. If installation fails or the CLI is still not on PATH, the test stops with instructions. You can also install it manually with npm install -g @apify/mcpc.
make test-mcp is an alias. make test-all runs the unit/type checks and this MCP test, including the CLI installation check. Running node scripts/test-mcpc.mjs directly does not install the CLI.
The test verifies all three tools, the prompt, Unicode roundtrip, diagram URLs, SVG/PNG files, C4 rendering, syntax errors, and output-path restrictions.
It always renders synthetic diagrams through https://www.plantuml.com/plantuml, so network access is required. It does not use a published npm server or an existing user session.
The runner creates its own temporary config, private MCPC_HOME_DIR, working directory, and output directory. Its @local session is isolated from user sessions and closed after success, failure, or interruption. It retains images and results.json in the artifact directory printed by the command.
Success ends with PASS local mcpc smoke test and exit code 0. Missing prerequisites, network errors, failed assertions, or cleanup failures return a nonzero exit code.
For a trusted corporate CA, run:
NODE_EXTRA_CA_CERTS=/absolute/path/to/trusted-ca.pem make test-mcpc
The runner forwards this setting to the server. Do not disable TLS validation. If cleanup fails, use its printed private home: MCPC_HOME_DIR="<artifact-directory>/mcpc" mcpc close @local. Do not close sessions in your default mcpc home.
Agent instructions are in AGENTS.md.
Environment Variables
| Variable | Description | Default |
|---|---|---|
PLANTUML_SERVER_URL | PlantUML server URL | https://www.plantuml.com/plantuml |
PLANTUML_ALLOWED_DIRS | Additional directories for output_path (colon-separated, or * for any) | CWD only |
License
MIT License - see LICENSE file for details.
MCP Registry Listings
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.