validate_diagram
Validate an ArcDiagramData document. Returns coded diagnostics — consume by `code`, apply one `supportedFixes` entry, re-validate. `ok` is false while any error-severity diagnostic remains.
diagram必填severityio.github.hudsonkit由 GitHub 账号 hudsonkit 发布v0.14.1更新于 Oct 29, 2026
Author, validate, lay out, render, and diff architecture diagrams as code.
Arc 让助手以代码方式编写、校验、自动布局、渲染和对比架构图,可导出 SVG、PNG、HTML、ASCII 或动画。
Gives AI agents the full Arc toolchain over the Model Context Protocol — author, validate, lay out, render, and diff architecture diagrams from any MCP client.
No install needed — the server runs over stdio:
Requires Node.js 22 or newer. No account, API key, or environment configuration is required. PNG export needs a local Chrome/Chromium installation; animation export also needs ffmpeg.
Claude Code:
Devin:
Any MCP client (JSON config):
Start the Arc studio with bun run dev, then call open_live_diagram with
{ diagram, title?, agent?: { harness, name? } }. Open the returned liveUrl once.
The view starts idle. Before doing diagram work, call begin_live_diagram_work
with { sessionId, summary, scope? } and retain its workId. Publish complete
revisions with update_live_diagram({ sessionId, diagram, message? }); keep node
IDs stable so the viewer can follow each move. In your cleanup/finally path,
call finish_live_diagram_work({ sessionId, workId, message? }) when the declared
work ends. This leaves the same view idle and reusable. Use end_live_diagram
with { sessionId, message? } only when the entire diagram session is complete.
Scope defaults to { type: "canvas" }. Use { type: "nodes", nodeIds: ["api"] }
for existing boxes, or { type: "region", x: 400, y: 80, width: 200, height: 160 }
for the area where new boxes will appear. A scope accepts 1–200 unique existing
node IDs, each at most 200 characters. Region coordinates must be finite and
within ±100000; width and height must be positive and at most 100000. Summaries
are trimmed, 1–500 characters, and cannot contain control characters. Concurrent
begin calls and stale finish IDs are rejected without replacing active work.
The live view belongs to the Hudson Kit Arc studio. ARC_EDITOR_URL selects the
studio base URL; open_live_diagram also accepts baseUrl for an individual view,
including a deployment prefix such as /arc. The MCP client name/version comes
from its initialize handshake. The displayed connection ID is generated by the
server; it does not claim to be the client's conversation ID.
The optional agent object declares a harness label and, if useful, an agent
name for this view. For example, agent: { harness: "Codex", name: "Reviewer" }
adds actor.harness and actor.displayName. These are caller-declared labels,
not verified identities. They never replace the actual MCP actor.name,
actor.version, or connection actor.id, and do not carry over to other views.
Both labels are trimmed, limited to 1–80 characters, and reject control characters.
The local scripts/liveDiagram.control.ts driver accepts ARC_AGENT_HARNESS
and optional ARC_AGENT_NAME to send these labels. Neither has a default;
ARC_AGENT_NAME requires ARC_AGENT_HARNESS.
The driver accepts JSON lines such as {"type":"begin","summary":"Inspect API","scope":{"type":"nodes","nodeIds":["api"]}},
then {"type":"finish","workId":"<returned ID>","message":"API checked"}.
Its status command reports local session metadata. quit closes the relay;
it does not claim that unfinished work succeeded.
In stdio mode the first live view starts a loopback HTTP relay on a free port.
Keep the MCP process running and open the view on the same computer. The browser
may request local-network or loopback-network access when a hosted HTTPS studio
connects to that relay. Allow that permission for the studio. Loopback addresses
are treated specially by browser mixed-content rules; arbitrary HTTP LAN or
remote relay URLs do not get the same guarantee. Browser support, enterprise
policy, and the studio's CSP can still prevent the connection. An all-local
studio (bun run dev, ARC_EDITOR_URL=http://localhost:5188) avoids the public
website-to-loopback permission boundary. For a remote relay used from an HTTPS
studio, serve the relay over HTTPS. See the
Local Network Access specification
and Chrome's permission guidance.
HTTP mode serves the stream beside /mcp, so a configured remote relay can be
used from another computer. The URL fragment carries a read capability for one
diagram; anyone given the full URL can read it. Only its owning MCP connection
can update it. Browser requests must come from that view's configured studio
origin. The HTTP server enforces ARC_MCP_TOKEN on every MCP request when set,
and requires it when binding outside loopback.
Each stream sends the latest full snapshot immediately, including after a
reconnect. Invalid updates preserve the previous state. Only explicit work is
working; edits outside a declared work item stay idle. Valid updates during
work preserve its scope and renew a five-minute lease. Finishing marks the work
complete and the session idle. Disconnect or lease expiry marks work interrupted;
ending the entire session completes any active work. A later standalone edit
clears previous work metadata. These calls describe declared diagram work, not
unobserved harness thinking. Unfinished diagrams remain
available while their owning MCP connection stays open. Completed diagrams
expire one hour after completion; unfinished diagrams expire one hour after
their owner disconnects. Stopping the MCP process discards ordinary in-memory live sessions.
Save/export a diagram from the studio when it needs to outlive that process.
Live tools require a matching MCP build and studio build. During development,
build this checkout with bun run build:mcp and configure the client to run
node /absolute/path/to/arc/packages/mcp/dist/arc-mcp.mjs; run its studio with
bun run dev. Listing a tool here does not mean an older published package or
the currently deployed Hudson Kit website already includes it.
The private preview adds a durable review to the same Hudson Kit canvas. Follow the private preview setup to build matching studio and MCP artifacts and serve them from one private address.
Open with open_architecture_review({diagram,title,question,repository?,agent?}).
Repository metadata is {name,url?,revision?}. The result includes a private
author resumeToken as well as the normal sessionId and read-only viewer URL.
Use the existing begin/update/finish/end tools for declared work and diagrams.
Save evidence through update_architecture_review with summary, findings,
decisions, and openQuestions; omitted fields stay unchanged, and supplied
arrays replace the full previous list.
Findings are {id,title,detail,severity,nodeIds?,sources}, with severity
info|low|medium|high. Sources are {path,line?,revision?,url?}. The studio
shows those references alongside the canvas, and its Save review action
downloads {schemaVersion:1,baseline,snapshot,revisions} without secrets.
Source claims are author-supplied evidence, not verified by Arc itself.
Reviews persist before publishing each revision. Keep ARC_REVIEW_DIR and the
private server address stable to reopen the same saved viewer link after a
restart. Use resume_architecture_review({sessionId,resumeToken,agent?}) after losing
the author connection. Optional agent: {harness,name?} supplies caller-declared
display labels alongside the new connection's actual MCP identity. Omit it to
use only that connection identity. It cannot displace a live author. Completed
reviews stay read-only and keep their final author and history unchanged. revoke_architecture_review_share({sessionId}) invalidates the
old viewer capability. Saved reviews are not removed by the ordinary live view's
one-hour expiry.
For a terminal author, scripts/review.control.ts keeps one HTTP MCP connection
open and accepts JSON lines of {id?,name,arguments}. Set ARC_MCP_URL and, if
configured, ARC_MCP_TOKEN in its environment. EOF disconnects the author;
finish/end calls must be explicit. Keep its output private because opening a
review returns author and viewer capabilities.
The published bin runs over stdio, which is all a local client needs. To serve Arc to clients on other machines, run the Streamable HTTP server from a checkout of the repo:
Arc doesn't run a public MCP endpoint. If you need a hosted one, open an issue at github.com/hudsonkit/arc.
Arc's registry identity is io.github.hudsonkit/arc. The install metadata lives
in server.json, and the npm package declares the same
mcpName so the registry can verify ownership.
Maintainers can run the Publish to npm GitHub Actions workflow with package
scope mcp for an MCP-only patch release, or all for a coordinated release.
The workflow sets both versions before building, verifies the packed server,
publishes npm, then publishes the registry metadata using GitHub OIDC. A dry run
validates and packs without publishing. GitHub's curated MCP catalog requires
initial onboarding
after publication to the official MCP Registry.
@hudsonkit/arc — React renderer, visual studio, arc CLI, ASCII renderer@hudsonkit/arc-viewer — native Mermaid sequence diagrams + Mermaid import@hudsonkit/arc-iso — isometric renderer for vanilla JS and the browserStudio + docs: hudsonkit.com/arc · Source: github.com/hudsonkit/arc
来源:packages/mcp/README.md,提交 24ea394
Validate an ArcDiagramData document. Returns coded diagnostics — consume by `code`, apply one `supportedFixes` entry, re-validate. `ok` is false while any error-severity diagnostic remains.
diagram必填severityStructural diff of two Arc diagrams. Returns a DiagramDelta — added/removed/moved/changed nodes, connector adds/removes/changes (keyed by connector id or from→to), connectorStyles and groups deltas, layoutChanged. Feed it to <ArcDiagram data={head} delta={delta} /> for a diff render.
base必填head必填Run Arc auto-layout on a diagram. Pass a full diagram or minimal input (nodeData + connectors + connectorStyles).
input必填Render an Arc diagram as monospace ASCII/Unicode box art.
charsetdiagram必填maxWidthRender an Arc diagram as deterministic SVG markup using the package export path.
modethemediagram必填paddingflowTimeincludeGridanimateFlowsbackgroundColorRender an Arc diagram as a PNG via an installed Chrome/Chromium binary. Returns MCP image content plus render metadata. Set ARC_CHROME if Chrome is not on PATH.
modescalethemediagram必填paddingflowTimeincludeGridbackgroundColorRender diagram flows as a GIF or MP4 artifact. Uses deterministic frame captures through Chrome plus ffmpeg; requires an `output` path because video payloads are too large for MCP text.
fpsmodescalethemeformatoutput必填diagram必填paddingdurationincludeGridbackgroundColorRender an Arc diagram as a React component snippet, iframe embed, or standalone HTML page.
modethemetitlewidthformatheightbaseUrldiagram必填paddingdataNamesessionIdincludeGrid另有 3 个Convert a valid Arc diagram JSON into a TypeScript module that exports ArcDiagramData.
diagram必填exportNameBuild URLs to open a diagram in the Arc studio. Returns a hash-based editor URL and showcase link.
viewbaseUrldiagram必填sessionId已满足适用检查项的 90%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
npx -y @hudsonkit/arc-mcp# or: bunx @hudsonkit/arc-mcpclaude mcp add --scope project arc -- npx -y @hudsonkit/arc-mcpdevin mcp add arc -- npx -y @hudsonkit/arc-mcp{ "mcpServers": { "arc": { "command": "npx", "args": ["-y", "@hudsonkit/arc-mcp"] } }}git clone https://github.com/hudsonkit/arc && cd arcbun installARC_MCP_HOST=127.0.0.1 ARC_MCP_PORT=5190 bun run mcp:http# MCP endpoint: http://127.0.0.1:5190/mcp · health: /health