A Model Context Protocol (MCP) server that provides PlantUML diagram generation capabilities for Claude Desktop and Claude Code.
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
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.
# Using default PlantUML server
claude mcp add plantuml --scope user --env PLANTUML_SERVER_URL=https://www.plantuml.com/plantuml -- npx plantuml-mcp-serverAdd 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.
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
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=*> add c4 diagram for this project in readme 'C4 diagram for plantuml-mcp-server' section
> add sequence diagram in readme in architecture section
> show me basic oauth2 flow png, open it in browser
- Node.js 22.12.0 or later
- npm
# Clone and setup
git clone https://github.com/mzagar/plantuml-mcp-server.git
cd plantuml-mcp-server
make setup# Show all available commands
make help
# Build and run all tests
make clean build test-allTest 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-mcpcIf 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-mcpcThe 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.
| 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 |
MIT License - see LICENSE file for details.