plantuml-mcp

PlantUML's own Java MCP server for checking, explaining and rendering PlantUML diagrams to SVG

Official · PlantUML Java Local · stdio, Streamable HTTP DesignDeveloper tools

20 popularity score ★ 8

Connect your client

Local (once it is running)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add --transport http plantuml http://localhost:8080/mcp
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "plantuml": {
      "url": "http://localhost:8080/mcp"
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "plantuml": {
      "type": "http",
      "url": "http://localhost:8080/mcp"
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.plantuml]
url = "http://localhost:8080/mcp"
Gemini CLITerminal
gemini mcp add --scope user --transport http plantuml http://localhost:8080/mcp
Local (from source)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

FirstTerminal
git clone https://github.com/plantuml/plantuml-mcp.git
cd plantuml-mcp
./gradlew bootJar
Claude CodeTerminal
claude mcp add plantuml -- java -jar '<ABSOLUTE_PATH_TO_CLONE>/build/libs/plantuml-mcp-1.0.0.jar'
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "plantuml": {
      "command": "java",
      "args": [
        "-jar",
        "<ABSOLUTE_PATH_TO_CLONE>/build/libs/plantuml-mcp-1.0.0.jar"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "plantuml": {
      "command": "java",
      "args": [
        "-jar",
        "<ABSOLUTE_PATH_TO_CLONE>/build/libs/plantuml-mcp-1.0.0.jar"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "plantuml": {
      "type": "stdio",
      "command": "java",
      "args": [
        "-jar",
        "<ABSOLUTE_PATH_TO_CLONE>/build/libs/plantuml-mcp-1.0.0.jar"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.plantuml]
command = "java"
args = ["-jar", "<ABSOLUTE_PATH_TO_CLONE>/build/libs/plantuml-mcp-1.0.0.jar"]
Gemini CLITerminal
gemini mcp add --scope user plantuml java -- -jar '<ABSOLUTE_PATH_TO_CLONE>/build/libs/plantuml-mcp-1.0.0.jar'

What it does

plantuml-mcp is the PlantUML project's Java server built on Spring Boot and Spring AI. It bundles the PlantUML library and hands an assistant a few tools that work on diagram source passed in as text: report the bundled PlantUML version, check one diagram for syntax errors without drawing it, render one diagram, and walk through how each line of a diagram is parsed. Results come back as JSON with the diagram type, line count, warnings and, on failure, the line number and message of the error, so an assistant can fix its own PlantUML before showing it.

It runs over stdio by default, launched by the client as a subprocess, or as a Streamable HTTP web app on port 8080 at /mcp when started with --spring.profiles.active=http. There is no published package or image: you build the JAR from the repository with the bundled Gradle wrapper.

The README still describes an MVP with only plantuml_version, but the tool class on the main branch (PlantUmlTools.java) registers four tools: plantuml_version, check_syntax, diagram_render and diagram_explain. The README of the sibling @plantuml/mcp-js package points to this server for PNG and PDF output, yet the render tool's own parameter description in that same class says only SVG is supported right now.

What it needs

RuntimeJava 21+

Java 21 or later to build and run (the build can target 17 with -PjavaVersion=17). A clone of the repository built with ./gradlew bootJar, since no JAR, package or container image is published. An MCP client that launches a command over stdio, or one that speaks Streamable HTTP for the HTTP mode (started separately with --spring.profiles.active=http).

Limits

Renders to SVG only at present, per the format parameter in PlantUmlTools.java, despite the mcp-js README pointing here for PNG/PDF. Each tool takes a single diagram (one @start/@end block). Its makers label it an early MVP; the README lists only plantuml_version and has not caught up with the three newer tools. No tagged releases: you build whatever is on main. In HTTP mode the port is fixed at 8080 in application-http.yml unless you edit it. Logs go to plantuml-mcp.log in the client's working directory, and a harmless 'Empty or null pattern' warning may appear at startup.

Who it suits

Suits developers who already have a Java 21 runtime and want an assistant to validate and render PlantUML diagrams locally with the official engine, with no account or network service involved. It only processes text it is given, so it is low-reach. Pick the @plantuml/mcp-js server, which we also hold, if you want no Java and an npx install instead of building a JAR from source; both currently render SVG. Look elsewhere if you need PNG or PDF output or a packaged release.

Tools 4

plantuml_version
Reports the version of the PlantUML library bundled in the server
check_syntax
Validates one diagram's source without rendering and reports the error line and message if it fails
diagram_render
Draws one diagram in the requested format (SVG only for now) and returns the output with any warnings
diagram_explain
Lists, line by line, how PlantUML interprets the source of one diagram

Similar servers