MCPcopy
hub / github.com/plantuml/plantuml

github.com/plantuml/plantuml @v1.2026.6 sqlite

repository ↗ · DeepWiki ↗ · release v1.2026.6 ↗
26,703 symbols 106,526 edges 3,685 files 1,529 documented · 6%
README

[!TIP] 🧩 New! Render PlantUML diagrams directly inside GitHub with our official browser extension — No server. No tokens. No tracking. Zero permissions but clipboard.

Add to Chrome Add to Firefox

💬 Want native PlantUML support in GitHub? Upvote and join the discussion: Support for PlantUML diagrams

🌱 PlantUML

Generate UML diagrams from textual descriptions.

Discord server GitHub Sponsors GitHub Org's stars GitHub watchers GitHub contributors GitHub forks GitHub all releases

Release (latest by date) Release Date GitHub commits since latest release (by date) javadoc

Pre-release (latest by date) Pre-release Date GitHub last commit CI snapshot javadoc snapshot jacoco SonarQube Cloud

Dev Project Pages index Ask DeepWiki

JavaScript Demo

ℹ️ About

PlantUML is a component that allows you to create various UML diagrams through simple textual descriptions. From sequence diagrams to deployment diagrams and beyond, PlantUML provides an easy way to create visual representations of complex systems.

🗃️ Supported Diagram Types

📣 Additional Features

📖 Learn More

For a more detailed overview, visit PlantUML Official Website.

🛡 Security

See Security Policy and Security overview.

[!IMPORTANT] PlantUML is not affected by the log4j vulnerability.

🚀 Getting Started

Whether you're looking to use PlantUML as a standalone application or as a component in your own project, getting started is simple. Check out the official PlantUML setup guide for instructions on how to set up PlantUML on your system.

⚙️ Building from Source

To build PlantUML from source, you have two options:

  1. Using Gradle: ./gradlew jar
  2. Using Ant: ant

For prerequisites and detailed build instructions, see our BUILDING.md guide.

🌐 Building for the Browser (TeaVM)

PlantUML can be compiled to JavaScript with TeaVM to run entirely client-side in the browser, with no server required. To produce the JavaScript artifacts and use them in your own project:

git clone https://github.com/plantuml/plantuml.git
cd plantuml
chmod +x ./gradlew
./gradlew clean teavm -Pfast
cp ./build/generated/teavm/js/plantuml.js $YOUR_PROJECT/plantuml.js
cp ./build/generated/teavm/js/viz-global.js $YOUR_PROJECT/viz-global.js

The -Pfast flag skips the slow parts of a regular build (tests, Javadoc, JaCoCo) so you only get the TeaVM output. The viz-global.js file provides Viz.js (Graphviz) support for diagrams that rely on Dot layout.

The teavm task also copies the PlantUML stdlib bundles and a ready-to-use index.html demo into ./build/generated/teavm/js/.

For a live example of client-side rendering, see the JavaScript PlantUML Demo.

🧱 Contributing

PlantUML is an open-source project, and we welcome contributions of all kinds. Whether you're helping us fix bugs, improve the docs, or spread the word, we appreciate your support. See our contributing guide for more information on how to get started.

For comprehensive and detailed documentation on using PlantUML, refer to the official Javadoc, available here. Please note that this documentation is a work in progress and may not be complete.

🧑‍🤝‍🧑 Support and Community

📃 License

PlantUML is licensed under several licenses; you can choose the one that suits you best:

For more information, please refer to the PlantUML license FAQ to help determine which license is appropriate for your use case.

Extension points exported contracts — how you extend this code

Writer (Interface)
The base class for all objects which encode/generate a barcode image. @author dswitkin@google.com (Daniel Switkin) [15 …
src/main/java/zext/plantuml/com/google/zxing/Writer.java
ThrowingRunnable (Interface)
(no doc) [14 implementers]
src/test/java/net/sourceforge/plantuml/cli/AbstractCliTest.java
PolygonRenderer (Interface)
Interface of all Renderer Renderers who render an instance of Polygon. @author Franz-Josef Elmer [9 implementers]
src/main/java/jcckit/graphic/PolygonRenderer.java
OvalRenderer (Interface)
Interface of all Renderer Renderers who render a Oval. @author Franz-Josef Elmer [9 implementers]
src/main/java/jcckit/graphic/OvalRenderer.java
TextRenderer (Interface)
Interface of all Renderer Renderers who render an instance of Text. @author Franz-Josef Elmer [9 implementers]
src/main/java/jcckit/graphic/TextRenderer.java
RectangleRenderer (Interface)
Interface of all Renderer Renderers who render a Rectangle. @author Franz-Josef Elmer [9 implementers]
src/main/java/jcckit/graphic/RectangleRenderer.java

Core symbols most depended-on inside this repo

split
called by 22280
src/main/java/net/sourceforge/plantuml/gantt/ngm/math/Segment.java
UNSUPPORTED
called by 3647
src/main/java/smetana/core/Macro.java
get
called by 2355
src/main/java/net/sourceforge/plantuml/bpm/Navigator.java
add
called by 1632
src/main/java/net/sourceforge/plantuml/tim/Trie.java
append
called by 1441
src/main/java/net/sourceforge/plantuml/bpm/ConnectorPuzzle.java
apply
called by 1288
src/main/java/net/sourceforge/plantuml/klimt/drawing/UGraphic.java
toString
called by 1102
src/main/java/net/sourceforge/plantuml/sequencediagram/InGroupable.java
get__
called by 965
src/main/java/smetana/core/CArray.java

Shape

Method 22,756
Class 3,359
Interface 240
Enum 193
Function 155

Languages

Java99%
TypeScript1%

Modules by API surface

src/main/java/smetana/core/Macro.java176 symbols
src/main/resources/teavm/viz-global.js157 symbols
src/main/java/org/stathissideris/ascii2image/text/TextGrid.java146 symbols
src/main/java/net/sourceforge/plantuml/skin/SkinParam.java112 symbols
src/main/java/net/atmp/CucaDiagram.java87 symbols
src/main/java/net/sourceforge/plantuml/abel/Entity.java85 symbols
src/main/java/net/sourceforge/plantuml/skin/SkinParamDelegator.java82 symbols
src/main/java/net/sourceforge/plantuml/svg/parser/SvgSaxParser.java79 symbols
src/main/java/net/sourceforge/plantuml/abel/Link.java77 symbols
src/main/java/net/sourceforge/plantuml/klimt/drawing/svg/SvgGraphics.java70 symbols
src/main/java/net/sourceforge/plantuml/svek/SvekEdge.java69 symbols
src/main/java/net/sourceforge/plantuml/argon2/blake2/Blake2b.java68 symbols

Dependencies from manifests, versioned

@modelcontextprotocol/sdk1.0.0 · 1×
zod3.23.0 · 1×

For agents

$ claude mcp add plantuml \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact