Skip to main content

PLMHub boards

eu.plmhub/boardsVersion 1.0.0

Draw diagrams, build HTML pages and write Markdown in a live editor the user sees.

Status

Responds269 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 14:30 UTC
Latency
269 ms
Remotes responding
1 of 1
Sign-in
No sign-in
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 22:14 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://plmhub.eu/mcpResponds269 ms
No sign-in

Claude Code

claude mcp add --transport http boards https://plmhub.eu/mcp

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: boards
Remote MCP server URL: https://plmhub.eu/mcp

Cursor

{
  "mcpServers": {
    "boards": {
      "url": "https://plmhub.eu/mcp"
    }
  }
}

VS Code

code --add-mcp '{"name":"boards","type":"http","url":"https://plmhub.eu/mcp"}'

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

5 tools

Tools of PLMHub boards
Read-only
Idempotent
Open world
drawDraw on a doodle board. The user sees each call appear live in the editor. ## Doodle ops A doodle is a board (default 1280 x 720 px, origin top-left, y grows down). Send ops as `{"ops": [...]}`; they apply in order, all or nothing. The answer lists the ids each op created, in order. Address elements by id; read the board for the ids it already has. **Positions:** x, y is the CENTER of a shape or text, the top-left of a comment, the midpoint of a line. Omit them to place at the board's center. Later elements draw on top. ### Create - `{"op": "add", "role": "text" | "box" | "button" | "input" | "card" | "ellipse" | "line" | "image" | "comment" | "draw" | "triangle" | "diamond" | "star" | "frame", "x", "y", "w"?, "h"?, "id"?, ...style}` Defaults (w x h): text 160 wide, box 180x110, card 240x150 (radius 12), button 150x46, input 220x44, ellipse 140x90, line 180 long, triangle 120x110, diamond/star 120x120, image 320x200 (needs "src": URL or data: URL), frame 360x240, draw needs "path". Pass your own "id" to address the element without reading back (it must be unused). Buttons and inputs are plain shapes: give them text with `label`. - `{"op": "draw", "path": "M 10 10 L 90 90", "stroke"?, "strokeWidth"?}` freehand; path coordinates are board coordinates. - `{"op": "comment", "text", "x"?, "y"?, "w"?}` a sticky note for the human. - `{"op": "label", "id": shapeId, "text", "fontSize"? = 16, "fill"?, "labelId"?}` text centered inside a shape that follows it when the shape moves. Empty text removes it. - `{"op": "duplicate", "id", "newId"?, "dx"? = 20, "dy"? = 20}` ### Change - `{"op": "update", "id", ...style}` (fields below; "x"/"y"/"w"/"h" set position and size) - `{"op": "move", "id", "dx", "dy"}` or `{"op": "move", "id", "x", "y"}`; moving a frame moves its children too. - `{"op": "reorder", "id", "to": "front" | "back" | "forward" | "backward"}` - `{"op": "delete", "id"}` · `{"op": "clear"}` removes everything. ### Style fields (add and update) filNot declaredNot declaredNot declaredNot declared
edit_textChange part of an HTML or Markdown board without resending all of it. Ops (applied in order, all or nothing): - {"op": "write", "text": "..."} (replace everything) - {"op": "append", "text": "..."} - {"op": "replace", "find": "...", "replace": "..."} (find must occur exactly once)Not declaredNot declaredNot declaredNot declared
open_boardOpen a new, empty board and get its link. Give the link to the user: they watch your work there and download it.Not declaredNot declaredNot declaredNot declared
read_boardRead a board: its kind and current content (the Markdown or HTML text, or the doodle's elements with their ids, roles, boxes and styles).Not declaredYesNot declaredNot declared
write_boardReplace everything on an HTML or Markdown board. HTML: one complete document with inline CSS and JS. Markdown: GitHub-flavored. For a doodle, use `draw` instead.Not declaredNot declaredNot declaredNot declared

Details

Registry status
Active
Published
Oct 23, 2026
Updated
Oct 23, 2026
Repository
Not given
Categories
Uncategorized
GDPR
Not declared

Are you the operator? Claim this listing