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 分