Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Create, read, render, organize, and safely edit persistent Excalidraw diagrams with AI agents.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
EXCALIWOW_TOKEN, EXCALIWOW_API_URL「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"excaliwow": {
"command": "npx",
"args": [
"-y",
"@excaliwow/mcp"
],
"env": {
"EXCALIWOW_TOKEN": "your-value",
"EXCALIWOW_API_URL": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add excaliwow --env EXCALIWOW_TOKEN=your-value --env EXCALIWOW_API_URL=your-value -- npx -y @excaliwow/mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"excaliwow": {
"command": "npx",
"args": [
"-y",
"@excaliwow/mcp"
],
"env": {
"EXCALIWOW_TOKEN": "your-value",
"EXCALIWOW_API_URL": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"excaliwow": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@excaliwow/mcp"
],
"env": {
"EXCALIWOW_TOKEN": "your-value",
"EXCALIWOW_API_URL": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
EXCALIWOW_API_URL envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント excaliwow で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:EXCALIWOW_TOKEN
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.14.3)がレジストリに届いたのは3 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Agent Data Tools: Utilities
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
103 tools: JSON repair, CSV, hashes, cron, dates, units, validators. 25 free calls.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
The Excaliwow Model Context Protocol server — lets an AI agent create, read, render, manage, and edit diagrams in your Excaliwow account through the same public REST API (/api/v1) the CLI uses. It runs over stdio, so any MCP client (Claude Desktop, Claude Code, etc.) can launch it with npx.
The public excaliwow/mcp repository contains distribution metadata and documentation for this package; the hosted application source is not published there.
First mint a Personal Access Token at https://excaliwow.com/app/settings (Settings → Developer / API tokens) with `read` + `write` capabilities — enough for sixteen of the eighteen tools. Add `delete` only if you want the agent to trash and restore diagrams (see Security notes). Pass it as EXCALIWOW_TOKEN.
One command. --scope local stores the server in your own settings, so the token never lands in a file you might commit. Export the token first so the literal PAT never lands in your shell history — --env NAME="$NAME" passes the value through without typing it a second time on the command line:
export EXCALIWOW_TOKEN=excw_pat_…
claude mcp add excaliwow --scope local \ --env EXCALIWOW_TOKEN="$EXCALIWOW_TOKEN" \ -- npx -y @excaliwow/mcp
Add it to your client's config file (e.g. Claude Desktop's claude_desktop_config.json, or your client's MCP settings — see your client's MCP setup docs). The spec is unversioned, so npx -y always launches the latest release — you pick up new tools and fixes automatically, with nothing to bump:
{
"mcpServers": { "excaliwow": { "command": "npx", "args": ["-y", "@excaliwow/mcp"], "env": { "EXCALIWOW_TOKEN": "excw_pat_…" } } } }
The server reads EXCALIWOW_TOKEN per call from the environment (or, if you also use @excaliwow/cli and have run excaliwow auth login, that stored login) and never writes the token to disk itself.
"Not authenticated" / 401 / the agent's tool calls fail. The server starts even without a token (so it can list its tools), so a missing or invalid EXCALIWOW_TOKEN only surfaces when the agent first calls a tool. Starting with no token prints a one-line EXCALIWOW_TOKEN is not set warning to stderr. To check a token directly, run the health probe — it makes one authenticated read and prints a clear verdict (ok, 401 — token is invalid or expired, or could not reach when the API itself is unreachable) and exits with a matching code (0 ok, 1 missing/invalid token, 2 unreachable):
npx -y @excaliwow/mcp --health
| Flag | Effect |
|---|---|
--health | Check the token + API reachability, then exit (0 ok, 1 missing/invalid token, 2 unreachable). |
--version | Print the installed version and exit. |
--help | Print usage (flags + env vars) and exit. |
Eighteen tools, scoped to safe agent use:
| Tool | Capability | What it does | |
|---|---|---|---|
generate_diagram | write | Create a diagram from the high-level node/edge DSL (auto-laid-out); returns the editor URL. Best for quick flowcharts. | |
create_scene | write | Create a rich, hand-authored diagram from a raw Excalidraw scene — full control of layout, style, and typography. | |
read_diagram | read | Compact summary (title + per-type counts) plus a rendered PNG; opt into includeGeometry for a bounds list. | |
get_scene | read | Return a diagram's full raw scene ({ elements, appState }) for editing — read → mutate → regenerate_diagram. | |
export_diagram | read | Render to full-fidelity bytes to save (png base64, or svg as raw text) — the bytes to keep, not a vision image. | |
list_diagrams | read | Page through your diagrams (`filter: active \ | trash`). |
move_diagram | write | Move a diagram to a folder (or to root). | |
edit_diagram | write | Additively merge a DSL fragment (add nodes/edges, update node style/label). | |
regenerate_diagram | write | Replace a diagram's contents in place — from a fresh spec (re-layout) or a raw scene, same id. | |
trash_diagram | delete | Soft-delete a diagram to trash. Reversible (see restore_diagram). | |
restore_diagram | delete | Restore a trashed diagram, reopening it at its original id and URL. | |
lint_diagram | read | Check a diagram for overlaps, clipped labels, out-of-frame elements, and low-contrast text. | |
patch_elements | write | Apply element-addressable deltas (add/update/move/resize/restyle/delete) in place — the cheapest edit path. | |
generate_from_template | write | Create a diagram from a named layout template (swimlane, layered-stack, matrix, container-with-children). | |
list_icons | read | List the curated icons you can embed via an image element + icon- fileId (id + label + category). | |
list_folders | read | List the caller's folders (id + name + parentId) to resolve or discover a folderId. | |
create_folder | write | Create a folder (optionally nested under a parentId) to organize diagrams. | |
rename_diagram | write | Change only a diagram's title, leaving its contents and id/url untouched. |
read_diagram returns a summary + image, never the raw scene JSON, to keep context small. Pass includeGeometry: true to additionally get a compact, bounded { id, type, label, x, y, w, h } list (top-left x/y) so the agent can detect label/box collisions or misplaced nodes programmatically instead of eyeballing the PNG — it is derived from the scene, so it is present even when the render fails, and it is a small fixed-field summary, not the raw element dump. Pass includeScene: 'compact' instead for a bounded, element-addressable projection — a superset of the geometry fields that also carries style, text, and container/binding refs (≤17 fields/element) — the read half of the read_diagram → patch_elements surgical-edit loop. export_diagram returns the rendered bytes to save to a file — png as base64, svg as raw text — distinct from read_diagram, which returns an image block for a vision model to look at. An MCP server runs over stdio and cannot write to your repo, so a client with filesystem access (e.g. Claude Code) decodes and saves the bytes itself. Or skip the round-trip through the model and stream straight to disk with the CLI: excaliwow diagrams render -o docs/architecture.png (or .svg) — also the fallback when a render is too large to return inline.
trash_diagram / restore_diagram are a reversible pair gated on the delete capability — registered always, they return a clean insufficient_scope error (changing nothing) unless the token carries delete, so a read + write token can't trash anything. Hard-delete/purge and making a diagram publicly shareable are deliberately not agent tools — those are irreversible, so a misled agent can't destroy or expose your diagram. Purge or publish from the dashboard or the CLI.
generate_diagram takes the high-level node/edge DSL and auto-lays it out — reach for it when you just want a quick flowchart. create_scene takes a raw, hand-authored Excalidraw scene, so the agent controls every element's position, size, color, stroke, fill, typography, and connections — the path for rich, polished, custom diagrams. You author elements _tersely_ (id, type, geometry, text, colors) and the Excalidraw boilerplate is filled in for you; a fully-specified element (or a pasted .excalidraw scene) is passed through unchanged. To iterate on a rich diagram: get_scene → edit the elements → regenerate_diagram with the edited scene.
The DSL grammar + a worked example are embedded in the generate_diagram tool description, with the full reference served as an MCP resource at `excaliwow://dsl/reference`. The rich-scene authoring primer + a worked example ride in the create_scene description, with the full guide (every element type, all styling props, bindings, groups, frames, palette, and layout/beauty heuristics) at `excaliwow://scene/authoring`.
| Var | Effect |
|---|---|
EXCALIWOW_TOKEN | Required (standalone). Bearer PAT; read per call, never written to disk by this server. |
EXCALIWOW_API_URL | API origin. Default https://excaliwow.com; normally leave unset. |
Node >= 22.11.0. This is a support-policy floor, not a technical one — nothing shipped here uses a Node-22-only API (the code's newest runtime dependency is global fetch, available since Node 18); the floor tracks "current LTS" so npx -y @excaliwow/mcp runs on a Node build we actually test against, and matches @excaliwow/cli's floor. If your MCP client is stuck on an older Node and npx refuses to run this server, that refusal is intentional — upgrade Node rather than treat it as a bug.
.mcp.json, or `claude mcp add --scopeproject) puts the token into git history. Use a user- or local-scoped config (--scope local`), or reference an environment variable instead of pasting the literal token.
~/.zsh_history, ~/.bash_history, …) and briefly in the process list. export EXCALIWOW_TOKEN=… once, then pass it through with `--envEXCALIWOW_TOKEN="$EXCALIWOW_TOKEN" (or pull it from a secrets manager) instead of pasting the PAT into the claude mcp add` command itself.
read + write; a read + write PAT can neither expose your diagrams publicly nor delete them, even if the agent is misled (trash_diagram / restore_diagram simply return insufficient_scope and do nothing). Add the delete capability only if you want the agent to be able to soft-delete and restore — it's reversible, but it's still a capability to grant deliberately. Pick capabilities specifically rather than the coarse read-write preset, which additionally grants publish (and delete).冒頭だけを表示しています。続きはリポジトリで読めます