Excalidraw MCP Server

Excalidraw MCP 服务器:用于 LLM 集成的强大绘图 API

全面的模型上下文协议 (MCP) 服务器,可实现与 Excalidraw 图表和绘图的无缝交互。该服务器通过结构化、开发人员友好的 API,为 LLM(大型语言模型)提供创建、修改、查询和操作 Excalidraw 绘图的功能。

特征

  • 完整的 Excalidraw 元素控制
    创建、更新、删除和查询任何 Excalidraw 元素(矩形、椭圆、菱形、文本、箭头等),包括支持:
    • 位置( xy
    • 尺寸( widthheight
    • 样式( backgroundColorstrokeColorstrokeWidthroughnessopacity
    • 文本( textfontSizefontFamily
    • 线几何( points
    • 锁定( locked标志)
  • 高级元素操作
    对元素进行分组、取消分组、对齐、分布、锁定和解锁。
  • 场景和应用状态管理
    • 跟踪和修改场景级状态: themeviewBackgroundColorviewport (滚动和缩放)、 selectedElementsgroups
    • 检索所有元素或单个场景属性的库。
  • 保存场景
    将当前场景(元素 + appState)导出到磁盘上的.excalidraw文件。
  • 资源管理
    访问和修改场景信息、元素库、主题和原始元素数据。
  • 轻松集成
    与 Claude Desktop、Cursor 以及任何其他支持 MCP 的 LLM 平台兼容。
  • Docker 支持
    简单的容器化部署,实现零依赖安装。

API 工具参考

元素创建和修改

create_element

创建一个新的 Excalidraw 元素。

  • 输入
    { "type": "<element type>", "x": <number>, "y": <number>, "width": <number, optional>, "height": <number, optional>, "points": [{"x":<number>,"y":<number>}…], "backgroundColor": "<hex>", "strokeColor": "<hex>", "strokeWidth": <number>, "roughness": <number>, "opacity": <0–1>, "text": "<string>", "fontSize": <number>, "fontFamily": "<string>", "locked": <boolean> }
  • 输出
    { "id": "<generated‑id>", "type": "<element type>", "created": true }

update_element

更新现有元素的属性。

  • 输入
    { "id": "<element id>", }
  • 输出
    { "id": "<element id>", "updated": true, "version": <new‑version‑number> }

delete_element

从场景中移除一个元素。

  • 输入
    { "id": "<element id>" }
  • 输出
    { "id": "<element id>", "deleted": true }

query_elements

列出与可选过滤器匹配的元素。

  • 输入
    { "type": "<element type>", "filter": { "<prop>": <value> } }
  • 输出
    [ { /* element objects */ } … ]

资源管理

get_resource

检索场景或库信息。

  • 输入
    { "resource": "scene"|"library"|"theme"|"elements" }
  • 输出
    • 场景{ theme, viewport: {x,y,zoom}, selectedElements: […] }
    • /元素{ elements: [ … ] }
    • 主题{ theme: "light"|"dark" }

元素组织

group_elements / ungroup_elements

对元素集合进行分组或取消分组。

  • 输入
    { "elementIds": ["id1","id2",…] } { "groupId": "<group id>" }
  • 输出
    { "groupId": "<new‑id>", "elementIds": […], "ungrouped": true? }

align_elements

将多个元素对齐到指定的边缘或中心。

  • 输入
    { "elementIds": […], "alignment": "left"|"center"|"right"|"top"|"middle"|"bottom" }
  • 输出
    { aligned: true, elementIds: […], alignment: "<alignment>" }

distribute_elements

水平或垂直均匀分布元素。

  • 输入
    { "elementIds": […], "direction": "horizontal"|"vertical" }
  • 输出
    { distributed: true, elementIds: […], direction: "<direction>" }

lock_elements / unlock_elements

防止或允许编辑元素。

  • 输入
    { "elementIds": [… ] }
  • 输出
    { locked: true|false, elementIds: […] }

场景管理

save_scene

将当前场景(元素 + appState)导出到.excalidraw文件。

  • 输入
    { "filename": "<optional, must end with .excalidraw>" }
  • 输出
    Scene saved successfully to <filename>或出现错误消息。

集成示例

克劳德桌面

"mcpServers": { "excalidraw": { "command": "node", "args": ["src/index.js"], "env": { "LOG_LEVEL": "info", "DEBUG": "false" } } }

光标

创建.cursor/mcp.json

{ "mcpServers": { "excalidraw": { "command": "node", "args": ["/absolute/path/to/mcp_excalidraw/src/index.js"], "env": { "LOG_LEVEL": "info", "DEBUG": "false" } } } }

Docker

docker run -i --rm mcp/excalidraw

或者在 MCP 配置中:

"mcpServers": { "excalidraw": { "command": "docker", "args": ["run", "-i", "--rm", "mcp/excalidraw"], "env": { "LOG_LEVEL": "info", "DEBUG": "false" } } }

安装指南

# Install dependencies npm install # Run development server npm start

Docker

docker build -t mcp/excalidraw . docker run -i --rm mcp/excalidraw

配置选项

通过.env或容器中的环境变量设置:

  • LOG_LEVEL — 日志级别(默认值: "info"
  • DEBUG — 调试模式( "true" / "false" ,默认值: "false"
  • DEFAULT_THEME — 默认 UI 主题 ( "light" / "dark" ,默认值: "light" )

使用示例

创建并锁定矩形

{"type":"rectangle","x":50,"y":50,"width":100,"height":80,"backgroundColor":"#f3f3f3","strokeColor":"#333","locked":true} { "id":"abc123","type":"rectangle","created":true } {"elementIds":["abc123"]}

将场景保存到文件

{"filename":"my_drawing.excalidraw"} "Scene saved successfully to my_drawing.excalidraw"
-
security - not tested
-
license - not tested
-
quality - not tested

模型上下文协议服务器使 LLM 能够通过结构化 API 创建、修改和操作 Excalidraw 图表,支持元素创建、样式、组织和场景管理。

  1. Features
    1. API Tools Reference
      1. Element Creation and Modification
      2. Resource Management
      3. Element Organization
      4. Scene Management
    2. Integration Examples
      1. Claude Desktop
      2. Cursor
      3. Docker
    3. Installation Guide
      1. Docker
    4. Configuration Options
      1. Usage Examples
        1. Create & Lock a Rectangle
        2. Save Scene to File
      ID: 48kc5xrrrc