uml.singsk.com PlantUML

Render, validate, encode/decode PlantUML diagram-as-code; 22 diagram types. Free, no auth.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
80%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~680Tokens (tool definitions)
~363 BTypical response size
Moderate attention impact (0.53% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "uml-plantuml": {
      "url": "https://uml.singsk.com/mcp"
    }
  }
}

Remote endpoints

https://uml.singsk.com/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
⚪render_diagram(text, format)

Render PlantUML source text to a diagram image. Returns a PNG image block (format "png") or the SVG markup as text (format "svg", default), plus the shareable render URL. The source is validated first: on a syntax error the result is an error object with line, column, hint and a help link so you can fix the diagram and retry.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "PlantUML source including @startuml ... @enduml (or the matching @start/@end pair)"
    },
    "format": {
      "type": "string",
      "enum": [
        "svg",
        "png"
      ],
      "default": "svg"
    }
  },
  "required": [
    "text"
  ]
}
🟢validate_diagram(text)

Check PlantUML source without rendering. Returns {ok:true, diagram_type} or {ok:false, error:{code, message, line, column, source_line, hint, diagram_type_detected, help}}. Cheap - call it in a generate -> validate -> fix loop before rendering.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string"
    }
  },
  "required": [
    "text"
  ]
}
🟡encode_source(text)

Encode PlantUML source into a URL token and ready-to-use share/render URLs (svg + png). The result carries url_ok: GET URLs only work while the token is at most 16000 characters; when url_ok is false do not share the URLs - render with render_diagram instead (it uses the POST API, no size limit up to 5 MB). Tokens use PlantUML's own 64-character alphabet ("0-9 A-Z a-z - _") over raw DEFLATE. This is NOT base64 - never encode or decode tokens with a base64 codec; use encode_source / decode_token.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string"
    }
  },
  "required": [
    "text"
  ]
}
⚪decode_token(encoded)

Recover the PlantUML source from a token or from any PlantUML render URL (the token is extracted automatically). Tokens use PlantUML's own 64-character alphabet ("0-9 A-Z a-z - _") over raw DEFLATE. This is NOT base64 - never encode or decode tokens with a base64 codec; use encode_source / decode_token.

Input Schema

{
  "type": "object",
  "properties": {
    "encoded": {
      "type": "string",
      "description": "Token or full render URL"
    }
  },
  "required": [
    "encoded"
  ]
}
🟢list_diagram_types

List the 22 supported diagram/reference types with a one-line description and the local syntax reference URL for each. Use it to pick the right @start directive.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_syntax_reference(type)

Get the syntax reference entry for one diagram type: description, a render-verified example, and the help page URL. Use it to ground diagram generation.

Input Schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "description": "Type id or label, e.g. \"sequence\", \"class\", \"mindmap\", \"gantt\", \"json\""
    }
  },
  "required": [
    "type"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools