mcpField
E
Excalidraw Mcp

Excalidraw Mcp

本地服务
github.com/maaker-ai媒体与设计412 周前更新

关于 Excalidraw Mcp

Excalidraw Mcp 是用于生成和编辑 Excalidraw 图表的 MCP 服务,适合需要将自然语言描述转为可编辑图表的用户。它提供多种图表工具、自动布局,并支持读取、修改和导出本地文件。

主要功能

  1. 01生成 25 种以上图表
  2. 02Sugiyama 层次自动布局
  3. 03支持 CJK 文本宽度计算
  4. 04读取和修改现有图表
  5. 05导出为 SVG

适用场景

  1. 01将系统描述转换为架构图
  2. 02绘制流程、时序或 ER 图
  3. 03在现有图表中添加节点和连接
  4. 04读取图表并导出 SVG

MCP 相关

该 MCP 服务向客户端提供创建、读取、修改和导出 Excalidraw 图表的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"excalidraw-mcp-maaker-ai": {
"command": "uvx",
"args": [
"maaker-excalidraw-mcp"
]
}
}
}
启动命令uvx maaker-excalidraw-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimaaker-excalidraw-mcp

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

excalidraw-mcp

PyPI Downloads License: MIT

使用 AI 生成 25 种以上精美的手绘图表——流程图、时序图、架构图、思维导图、ER 图、类图、状态图、时间线、饼图/柱状图/折线图/雷达图、看板、线框图、决策树等,并支持 Sugiyama 层次布局、CJK 支持,且 零学习门槛。

作者:Maaker.AI

展示

以下所有图片均通过单次工具调用生成,无需指定坐标,也无需手动布局。.excalidraw 源文件位于 docs/showcase/;将任意文件拖到 excalidraw.com 上即可继续编辑。

流程图(分支 + 循环 + CJK)分层架构
流程图架构图

思维导图

安装

Claude Code(推荐)
claude mcp add excalidraw -- uvx maaker-excalidraw-mcp
Claude Desktop

添加到 MCP 配置(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "excalidraw": {
      "command": "uvx",
      "args": ["maaker-excalidraw-mcp"]
    }
  }
}
opencode / Cursor / 任意 MCP 客户端
{
  "mcp": {
    "excalidraw": {
      "type": "local",
      "command": ["uvx", "maaker-excalidraw-mcp"],
      "enabled": true
    }
  }
}

(此处展示的是 opencode;Cursor 和其他客户端在其 MCP 配置格式中使用相同的 uvx maaker-excalidraw-mcp 命令。)

pip
pip install maaker-excalidraw-mcp

工具

工具描述
create_flowchart使用 Sugiyama 布局绘制流程图——支持分支、合并、循环和分组
create_architecture_diagram绘制包含连接的分层架构图
create_sequence_diagram绘制带有生命线和消息的 UML 时序图
create_class_diagram绘制带有属性、方法和关系的 UML 类图
create_state_diagram绘制包含初始状态和终止状态的 UML 状态机
create_er_diagram绘制带有基数的实体关系图
create_mindmap绘制树状思维导图,分支自动着色
create_timeline绘制时间线/甘特图,并处理事件重叠
create_pie_chart绘制带有标签和百分比的饼图
create_kanban_board绘制包含列和卡片的看板
create_network_diagram绘制包含类型化节点(服务器、DB 等)的网络拓扑图
create_quadrant_chart绘制 2x2 优先级/定位矩阵
create_user_journey绘制带有情绪指标的用户旅程图
create_wireframe绘制带有设备边框的 UI 线框图
create_org_chart绘制组织结构图(自上而下的层级结构)
create_swot_analysis绘制采用颜色编码的 SWOT 分析 2x2 矩阵
create_table绘制网格表格,列宽自动调整,行颜色交替显示
create_bar_chart绘制纵向柱状图,柱条和标签自动缩放
create_line_chart绘制支持多系列数据的折线图
create_radar_chart绘制支持多系列叠加的雷达图/蜘蛛图
create_decision_tree绘制采用菱形决策节点和矩形结果节点的决策树
import_mermaid导入 Mermaid 语法(流程图、时序图、类图、状态图)
list_diagram_types列出所有可用的图表类型
modify_diagram在现有图表中添加/移除节点和连接
read_diagram分析现有的 .excalidraw 文件
export_diagram将图表导出为 SVG 格式

快速示例

流程图

只需告诉你的 AI 助手:

“创建一个流程图:用户请求 → 负载均衡器 → API 服务器 → 数据库”

AI 会调用 create_flowchart 并传入结构化数据,随后你会获得一个 .excalidraw 文件,其中包含:

  • Sugiyama 层次布局 — 妥善处理分支、合并、循环和不连通的子图
  • 根据文本内容自动计算方框大小
  • 文本完美居中(包括中文/CJK 字符)
  • 智能箭头布线,并正确绑定边缘
  • 手绘风格,在文档和演示文稿中效果出色
  • 4 种方向:LR(从左到右)、RL(从右到左)、TB(从上到下)、BT(从下到上)
架构图

“创建一个架构图,包含前端(React、Next.js)、后端(API 服务器、身份验证服务)和数据库(PostgreSQL、Redis)层”

生成按层级组织组件的分层图表,并自动调整大小、连接各层。

读取和修改

“读取 ./my-system.excalidraw 中的图表,并添加一个与 API 服务器连接的 ‘Cache’ 节点”

支持处理现有的 .excalidraw 文件 — 读取其结构、添加/删除节点、添加连接。

为什么选择 excalidraw-mcp?

与官方 Excalidraw MCP(excalidraw/excalidraw-mcp)对比
功能官方 MCPexcalidraw-mcp
方式原始 JSON — AI 手动放置每个元素结构化输入 — 描述需求,即可生成图表
布局AI 计算坐标Sugiyama 层次自动布局
分支/合并AI 必须自行确定位置自动处理 — 由布局引擎完成
CJK 文本不估算宽度准确计算 CJK/混合文字宽度
文本居中AI 必须计算 x/y 偏移量在容器中自动居中
箭头绑定AI 必须管理绑定自动进行 fixedPoint + orbit 绑定
本地文件无法读取/写入本地文件完整支持读取、修改和保存
分发方式远程 URL / .mcpbuvx / pip(标准 Python)
Token 用量需要调用 read_me 才能了解格式内置格式知识
与基于 Mermaid 的工具对比
  • 自由布局:不受 Mermaid 语法限制
  • 手绘风格:原生 Excalidraw 风格,而非渲染后的代码块
  • 可编辑输出:将 .excalidraw 文件拖到 excalidraw.com 继续编辑

工具参考

create_flowchart
Input:
  nodes: [{label: "Step 1", color?: "blue", shape?: "rectangle"}]
  edges: [{from: "Step 1", to: "Step 2", label?: "next"}]
  direction?: "LR" | "RL" | "TB" | "BT"  (default: "LR")
  title?: "My Flowchart"
  output_path?: "/path/to/output.excalidraw"

Output: Path to generated .excalidraw file

颜色:蓝色、绿色、紫色、黄色、红色、灰色、橙色、粉色

形状:rectangle(默认)、diamond(决策)、ellipse(开始/结束)

create_architecture_diagram
Input:
  layers: [{
    name: "Frontend",
    color?: "blue",
    components: [{label: "React"}, {label: "Next.js"}]
  }]
  connections?: [{from: "React", to: "API Server"}]
  output_path?: "/path/to/output.excalidraw"

Output: Path to generated .excalidraw file
modify_diagram
Input:
  file_path: "/path/to/existing.excalidraw"
  add_nodes?: [{label: "New Node", color?: "green", x?: 100, y?: 100}]
  remove_labels?: ["Old Node"]
  add_connections?: [{from: "A", to: "B"}]
  output_path?: "/path/to/output.excalidraw"

Output: Path to modified file
read_diagram
Input:
  file_path: "/path/to/diagram.excalidraw"

Output: Structured description (shapes, connections, colors)
export_diagram
Input:
  file_path: "/path/to/diagram.excalidraw"
  format: "svg"

Output: Path to exported SVG file

技术细节

Sugiyama 层次布局

使用 grandalf 库实现规范的有向图布局:

  • 层分配:根据图的拓扑结构将节点放置到各层
  • 交叉最小化:通过多轮优化减少边交叉
  • 坐标分配:在各层中平衡节点位置
  • 循环处理:检测循环图中的反馈边
  • 不连通子图:自动并排放置
CJK 宽度估算

准确计算中英文混合文本的宽度:

字符类型宽度(fontSize=20 时)
CJK 字符每个字符约 22px
ASCII 字母/数字每个字符约 11px
空格约 5px
箭头绑定

使用 Excalidraw 的现代 fixedPoint + orbit 绑定方式(而非已弃用的 focus/gap 格式):

{
  "startBinding": {
    "elementId": "box1",
    "fixedPoint": [1.0, 0.5001],
    "mode": "orbit"
  }
}

箭头会根据相对位置自动连接到正确的边缘。

开发

git clone https://github.com/maaker-ai/excalidraw-mcp.git
cd excalidraw-mcp
uv sync --dev
uv run pytest

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。