Zumen

io.github.meta-taro由 GitHub 帳號 meta-taro 發布v0.7.0更新於 Nov 4, 2026

AI-editable diagrams as code: draw from YAML, propose diffs a human applies, export SVG/Mermaid.

概覽

AI 產生的概覽

Zumen 讓助理以 YAML 撰寫專業圖表,提出由人確認的修改,檢查品質並匯出 SVG、PNG、Mermaid 或 draw.io。

可以做什麼
  • 了解格式與尋找範例:閱讀規格,瀏覽內建範例目錄並讀取範例原始碼
  • 尋找並讀取現有圖表:列出圖表路徑,逐字讀取其 YAML 原始碼
  • 建立與修改圖表:新增檔案,或對現有圖表提出由人套用的修改
  • 檢查與匯出:檢查可讀性、連線交叉與重疊,再匯出為 SVG、PNG、Mermaid 或 draw.io
  • 搭配已開啟的桌面視窗:查看即時連線狀態、讀取畫面上的內容、在畫面上提出修改並選取元素
  • 產生分步動畫:依步驟清單產生動畫 SVG 與編號影格
適用情境
適合讓助理依文字來源草擬或修訂結構化技術圖面,例如燈光配置圖、平面圖、配線圖或評估圖表,同時讓人保有版面修正與最終確認的控制權。
執行需求
以本機 stdio 程序執行,通常透過 npx 從 npm 套件啟動,因此需要 Node.js 以及下載套件的網路存取。未宣告需要帳號、API 金鑰或環境變數。即時連動相關工具還需要連接 zumen 桌面應用程式。
安裝前請注意
此伺服器會在本機寫入圖表檔案:zumen_create 新增檔案,zumen_propose 修改現有檔案,但與手動修改衝突的部分交由人決定。即時工具作用於已開啟的桌面視窗,並可能阻塞等待人套用或捨棄提案。匯出可能遺失部分內容,時間軸工具不附帶影片編碼器。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Zumen,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

@metataro/zumen-mcp

The MCP server for zumen — AI-editable diagrams as code. An AI agent (Claude Code and others) draws from one YAML file; a human fixes the layout; the fix survives the next regeneration.

bash
claude mcp add zumen -- npx -y @metataro/zumen-mcp

Other MCP clients: run npx -y @metataro/zumen-mcp as a stdio server.

What the agent gets: zumen_spec (read this first), zumen_examples (389 worked examples — floor plans, lighting plots, pallet patterns, rail maps…), zumen_propose (a diff a human applies — there is no tool that writes the source directly), zumen_inspect, zumen_export (SVG / PNG / Mermaid / draw.io), and a live link to the open desktop window.

This package exists so that the library package @metataro/zumen stays at three dependencies: only people who want the MCP server install the MCP SDK.

MIT.

來源:packages/zumen-mcp/README.md,提交 9645566

工具

15

zumen_about

About this tool

Call this once, first. Says what the tool is for, what it will not do, **which doors are closed** (so you do not try them), and what changed in each version.

無需輸入參數。

zumen_spec

Diagram format

Returns the format, the type and appearance words you may use, and the rules to follow. Read this before writing a diagram. Writing without it is guesswork.

無需輸入參數。

zumen_list

Find diagrams

Returns the paths of diagrams (*.zumen.yaml) underneath. **Look at what already exists first** — if the diagram is already there, edit it rather than creating a new one (changing ids detaches a person's edits). Only paths come back; read the contents with zumen_read.

輸入參數dir必填

zumen_examples

Browse the bundled examples

**Returns the catalogue of the 189 examples bundled with this tool, and their sources.** **Look here first when deciding what to draw.** zumen_spec only tells you how to write a file — the value of zumen is not the syntax but how the drawings that professionals actually use are put together: a periodontal chart, a plywood cutting diagram, a stage lighting plot, a used-car appraisal chart, a timber joint, tactile paving. Each one-liner states **what that drawing must get right**, not its title. With no arguments you get the categories and counts. Narrow with query (Japanese or English). Pass name to get **that example’s YAML source**, so you can copy how it is written. You can also query by feature (views, hatch, chain, openings…) — the syntax is in zumen_spec, but a **working example** only exists here. **Do not churn out generic network diagrams and flowcharts** — adding what existing tools already do proves nothing.

輸入參數namequery

zumen_read

Read a diagram

Returns the source (*.zumen.yaml) verbatim. **Always read before changing it** — rewriting without knowing the contents drops the pins a person added and any keys you do not recognise. Pass changes through zumen_propose; there is no tool that writes a file directly.

輸入參數path必填

zumen_pins

What a person decided by hand

Returns the positions, sizes, labels and appearance a person set. Read only; there is no way to write here. Leave it alone and change the structure instead.

輸入參數path必填

zumen_inspect

Inspect a diagram

Returns readability, element counts, edge crossings, box overlaps, group escapes, size, and the autonomy figure. Always look at this after writing. tooTangled only means there are more crossings than edges, which is **not a defect in itself**: of the 333 examples, the 19 where it is true are keyline grids, a spider web, gear pitch circles and measuring graticules — in all 19 the crossing lines *are* the drawing. When it is true, judge for yourself whether the drawing is made of overlapping lines or merely knotted. Any edge id in hiddenLabels has a label that did not fit and is not drawn — shorten it or use fewer edges. **Always check kind**: for a placement drawing positionsInSource is true, meaning you write the positions yourself (nodes[].at as { x, y }) and the machine will not re-arrange them. You can also set sizes with nodes[].size ({ w, h }, which works for structure diagrams too) — without it every room comes out the same size. Never write pins — those belong to the person. If tooSmallToProject is true the text is too small to read when projected. **If tooSmallToPrint is false, the drawing is simply one to be printed rather than projected** (transit maps, appraisal charts, lighting plots and stowage plans land here — 36 of the 95 examples do). **Only when both are true is there really something to fix.** Do NOT fix it by enlarging the text (that grows the diagram and lowers the ratio further). **Try wrap: true first** — if the diagram is just one long row, wrapping brings it back (a chain of 8 goes from 13.9 to 2.2). If that is not enough, ask the person whether the diagram can be split. Any id in crowdedNames has a name that did not fit its box and had nowhere free outside it, so it is drawn overlapping something. Make the box bigger or shorten technology. It is NOT dropped — a room losing its name is worse than an overlap. Any id in adriftNames is a wide box whose name did not fit and is drawn outside it — in a table that leaves the row looking empty. Any

輸入參數pathsource

zumen_create

Create a new diagram

Creates a new diagram. Fails if the file already exists (this is not an overwrite path). Nothing is written unless it conforms to the format. To change an existing diagram, use zumen_propose.

輸入參數path必填source必填

zumen_propose

Apply a proposal to the source of truth

Applies a proposal to an existing diagram. The pins in your proposal are not read, so hand edits survive. Anything that disagrees with a hand edit is not applied and comes back as a conflict. Conflicts are decided by a person, not by you.

輸入參數path必填source必填

zumen_export

Export

Exports to svg (to show), **png (to look at yourself)**, mermaid (readable tomorrow) or drawio (editable tomorrow). Each exporter states what it could not carry. **png comes back as the picture itself** — always look at one before calling a drawing done (the numeric checks only tell you whether it is readable). It needs Chrome, and says so when Chrome is missing.

輸入參數kind必填paththemeintentsourceembedFont

zumen_timelapse

Film the drawing growing

Writes one animated SVG plus numbered SVGs (all padded to the same paper) from a list of steps. No screen recording, so it works remotely. **No encoder is bundled** — the returned recipe shows how to make an mp4 with the tools you already have.

輸入參數out必填holdpathsthemesources

zumen_live_status

Is the app connected?

Reports whether the desktop app is on the other end of the live link and what it is showing. **Check this before using any zumen_live_* tool.** If nothing is connected, use zumen_propose (which writes the file) instead. screens = 0 means no human is looking at this screen.

無需輸入參數。

zumen_live_read

Read what the screen is showing

**Reads the screen, not the disk.** Edits the person just made but has not saved live here; zumen_read would not see them. Read this before changing anything.

無需輸入參數。

zumen_live_propose

Put a proposal on the screen

Puts a proposal **on the screen only**. It does not enter the source of truth; nothing happens until the person presses "apply". **You have no way to press it.** With wait, this blocks until the person answers (applied = they took it / discarded = they rejected it / timeout = they have not looked yet / gone = the screen went away). **timeout does not mean rejected.** A proposal that fails validation is never shown.

輸入參數notepathwaitsource必填

zumen_live_point

Point at an element

Selects that element on screen. **Selecting only; the diagram does not change.** Use it instead of describing in words which thing you mean.

輸入參數ids必填note

版本歷史

2
  1. v0.7.0最新Nov 4, 2026
  2. v0.6.1Oct 13, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分