Generates PlantUML diagrams including capability landscapes, business scenarios, and sequence diagrams, with tools for encoding/decoding PlantUML syntax and rendering shareable diagram URLs.
PlantUML MCP Server
Flexible Model Context Protocol (MCP) server that turns PlantUML snippets into shareable diagrams.
All capabilities are exposed over HTTP, Server-Sent Events (SSE), and STDIO, so you can plug the server into Claude Desktop, Flowise, or any other MCP-compatible runtime.
Key Features
๐งฐ Tools:
generate_plantuml_diagram,generate_capability_landscape,generate_business_scenario,encode_plantuml,decode_plantuml๐งพ Prompts:
plantuml_error_handling,capability_landscape_input_format,archimate_diagram_input_format,business_scenario_input_format๐ Static resources:
resource://plantuml/server-guide,resource://plantuml/archimate-mapping๐ Optional Bearer authentication via
MCP_API_KEYโ๏ธ Optional shared storage export (
GENERATED_FILES_DIR+PUBLIC_FILE_BASE_URL)
Requirements
Node.js 18+
npm 9+
Use npx plantuml-mcp-server or node dist/plantuml-mcp-server.js once built.
Transport Modes
Mode | When to use | How to start |
HTTP (default) | Direct REST-style integration, reverse proxies, health checks |
|
SSE | Claude Desktop / Flowise over the network with push updates |
|
STDIO | Local CLI tools (npx, Claude Code CLI, Flowise managed process) |
|
HTTP transport
POST /mcpto initialize and send JSON-RPC payloads.GET /mcpandDELETE /mcpkeep the streamable session alive.GET /healthzis available for readiness probes.Sample client settings:
client_config_http.json.
SSE transport
Clients connect to
/sse(GET) for events and POST JSON messages to/messages.Sample config for Claude Desktop / Flowise:
client_config_sse.json.
STDIO transport
Ideal for local experiments,
mcpCLI, or Flowise nodes that spawn the binary.Example setups live in
client_config_stdio.json.
Sample Client Configurations
client_config_http.jsonโ streamable HTTP (default/mcp)client_config_sse.jsonโ SSE + dedicatedmessagesUrlclient_config_stdio.jsonโ STDIO examples fornpxand Flowise-managed processes
Drop these files into your MCP-aware client or copy the snippets as needed. Update hostnames, ports, and API keys to match your deployment.
Environment Variables
Variable | Default | Purpose |
|
|
|
|
| Upstream PlantUML renderer |
|
|
|
|
| Bind address + port (HTTP/SSE) |
|
| HTTP JSON-RPC endpoint |
|
| Return JSON body when true (for debugging) |
|
| SSE stream endpoint |
|
| Message ingestion endpoint |
| unset | Enables Bearer auth when provided |
|
| Where rendered diagrams are persisted |
|
| Base URL returned to clients for persisted diagrams |
| unset | When |
Tools, Prompts & Resources
Tools are automatically registered through
tools/list. They perform validation, optional auto-fixes, and return structured metadata (success, URLs, markdown snippets, encoded diagram data, and validation errors).Prompts guide the model through PlantUML error handling and provide a ready-made capability landscape template.
Resource templates expose onboarding content (
resource://plantuml/server-guide) so clients can self-discover usage instructions.
Docker Image
The provided Dockerfile builds the TypeScript sources and produces a minimal runtime image:
Override environment variables (PLANTUML_SERVER_URL, MCP_API_KEY, etc.) as needed.
Testing & Tooling
npm run buildโ compile TypeScriptnpm startโ run using the default HTTP transportnpm run start:sse/npm run start:stdioโ convenience scriptsnpm run test:business-scenarioโ snapshot test that convertstest_files/generate_sequence_diagram/payload.jsoninto PlantUML and compares it toexpected.pumlmake test-mcpโ smoke-test commands through themcpCLI
Need Help?
Verify connectivity with
curl http://<host>:<port>/healthzConfirm auth headers match
MCP_API_KEY(Bearer token) if enabledUse the MCP Inspector or Flowise node logs to trace JSON-RPC payloads
The server ships with everything required to operate over HTTP, SSE, and STDIO. Plug in the transport that matches your environment and start generating diagrams!