mcpbeat Sign in

PLMHub boards MCP Server

answering

PLMHub boards is answering right now. Last checked 8 min ago. It exposes 5 tools.

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

Uptime history 10 days of history
10 days agonow
100.0%
Uptime 24h
91 of 91 checks
5
Tools
read from the server
194 ms
Response time
average over 24h
open, no key
Access
streamable-http

Nothing serious here today

Today is the operative word: we check PLMHub boards every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 8 min ago.

run in your terminal
claude mcp add boards --transport http https://plmhub.eu/mcp
Settings → Connectors → Add custom connector, then paste this address
https://plmhub.eu/mcp
~/.codex/config.toml
[mcp_servers.boards]
url = "https://plmhub.eu/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "boards": {
      "url": "https://plmhub.eu/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "boards": {
      "type": "http",
      "url": "https://plmhub.eu/mcp"
    }
  }
}

Available tools 5

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

board
read_board
Read a board: its kind and current content (the Markdown or HTML text, or the doodle's elements with their ids, roles, boxes and styles).
write_board
Replace 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.
draw
draw
Draw 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) fill, stroke, backgroundColor (CSS colors) · strokeWidth · opacity 0..1 · angle (degrees) · radius (corner radius; or rx, ry) · borderStyle "solid" | "dashed" | "dotted" | "dashdot" or strokeDashArray [numbers] · shadow "none" | "soft" | "medium" | "hard", {color, blur, offsetX, offsetY} or null · gradient {"type": "linear" | "radial", "stops": [{"offset": 0, "color": "#6366f1"}, {"offset": 1, "color": "#ec4899"}], "coords"?: 0..1 units} (replaces fill) · flipX, flipY, skewX, skewY · text, fontSize, fontFamily, fontWeight, fontStyle ("italic"), textAlign, underline, linethrough, lineHeight, charSpacing, padding · name (layer name), visible, locked (true/false). ### Structure - `{"op": "group", "ids": [2 or more], "name"?, "groupId"?}` returns the group id. `{"op": "ungroup", "group": groupId}` or `{"op": "ungroup", "ids": [...]}`. - `{"op": "wrap", "ids": [...], "direction"?, "justify"?, "align"?, "gap"?, "padding"?, "frameId"?}` puts the elements in a new auto-layout frame and returns its id. `{"op": "unwrap", "id": frameId}` removes the frame and keeps its children. - `{"op": "reparent", "ids": [...], "frame": frameId}` moves elements into a frame; `"frame": null` takes them out. - `{"op": "layout", "id": frameId, "mode"?: "block" | "flex", "direction"?: "row" | "col", "justify"?: "start" | "center" | "end" | "between", "align"?: "start" | "center" | "end" | "stretch", "gap"? = 16, "padding"? = 16, "wMode"?, "hMode"?: "hug" | "fixed", "w"?, "h"?}` A flex frame lines its children up (row = left to right, col = top to bottom) and hugs them, or keeps the fixed w/h. A block frame leaves children where they are. - `{"op": "size", "id", "w"?, "h"?: "fixed" | "hug" | "fill", "minW"?, "maxW"?, "minH"?, "maxH"?}` how a child of a flex frame sizes; fill shares the frame's spare room; null clears a min/max. ### Board - `{"op": "bg", "color": "#f8fafc"}` or `{"op": "bg", "src": imageUrl}` (an image behind everything). - `{"op": "board", "w"?, "h"?, "autoH"?: true, "padding"?, "minH"?, "maxH"?}` autoH grows the board to fit its content plus padding, within minH..maxH. Errors name the failing op (`ops[2] (move): ...`): 400 for a bad field, 404 for an unknown id, 409 for an id already in use. Fix that op and send the batch again.
edit
edit_text
Change 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)
open
open_board
Open a new, empty board and get its link. Give the link to the user: they watch your work there and download it.

Endpoints

URLTransportStateLatencyChecked
https://plmhub.eu/mcp streamable-http answering 167 ms 8 min ago

Alternatives to PLMHub boards

same job, measured the same way
Flett
by flett

A shared whiteboard: draw diagrams, docs, slides, charts and maps on boards people edit live.

answering
Marble
by marble

Read, write, organise and share Markdown notes in Marble, the collaborative Markdown editor.

answering
Pastefield
by pastefield

Give Claude a whiteboard: notes, links, images and diagrams on a board you both see and edit.

answering
Rapier - Markdown Editor & Art
by jackskip22

Markdown editor for writing, notes, editable diagrams, drawing and painting with your AI assistant.

6 tools answering
Drawdy
by drawdy

Free whiteboard where people and AI draw together: read cloud boards, draw diagrams, build slides.

answering
RenderMark
by jmsaavedra

Markdown to styled HTML, PDF, DOCX, and slides with themes, diagrams, and math.

60 installs/wk local only
SilverBullet
by wicahma

List, read, write, append, delete and search markdown pages in a SilverBullet space.

43 installs/wk local only
Web Search
by keenable

Live web search and clean-markdown page fetch over the Keenable web index.

119 installs/wk 2 tools answering

PLMHub boards — questions

Answers built from our own checks of this server.

What can PLMHub boards do?
It exposes 5 tools, read directly from the server on our last check. Among them: draw, edit_text, open_board, read_board, write_board. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is PLMHub boards working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 194 ms. The bar chart above shows every period we have measured.
How do I connect PLMHub boards?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does PLMHub boards need an API key?
No. PLMHub boards completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 5 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is PLMHub boards?
It answers our handshake in 194 ms on average, which is faster than 72% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.