Figma Context MCP
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
作者提供的说明(英文原文)
Create, read, render, organize, and safely edit persistent Excalidraw diagrams with AI agents.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 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个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Figma Context MCP, Claude Real Video, Figma MCP Server
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
Let any LLM watch a video locally — and search everything it has ever watched.
The Figma MCP server brings Figma design context directly into your AI workflow.
按原文从作者的仓库复制。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).只显示了开头部分;其余内容请在仓库中阅读