Skip to main content
Glama

excalidraw-ai — MCP server (AI интерфейс к Excalidraw)

Чистый, ненавязчивый интерфейс для AI, чтобы читать, наблюдать и редактировать живую комнату Excalidraw. Вместо автоматизации браузера (fiber-read + drag-drop + remote browser drops), он подключается к комнате как socket-bot через коллаборационный ретранслятор и напрямую говорит на AES-GCM-зашифрованном протоколе сцены — детерминированный, безголовый, масштабируемый.

Статус POC: ядро моста + MCP stdio поверхность работают end-to-end против самостоятельно размещенного ретранслятора excalidraw-room (selftest + MCP smoke pass).

Почему ретранслятор, который мы контролируем

Бот общается с ретранслятором. Хостируемый ретранслятор Excalidraw (oss-collab.excalidraw.com) защищает от не-браузерных ботов (403/400), поэтому для наших собственных комнат мы запускаем excalidraw/excalidraw-room (MIT, тот же код, что и в продакшене) и направляем на него интерфейс Excalidraw через VITE_APP_WS_SERVER_URL.

Related MCP server: Excalidraw MCP Server

Архитектура

Excalidraw UI (fork) ──socket.io──▶ relay (excalidraw-room) ◀──socket-bot── excalidraw-ai (MCP)
   (humans)                           self-hosted                 (the AI's interface)

Инструменты

Tool

Что делает

create_room

новый id/ключ комнаты для нашего ретранслятора

join_room

присоединиться к комнате, прочитать сцену, начать прослушивание

leave_room

отключиться

get_scene

элементы доски + тексты

get_changes

дельты добавления/обновления/удаления с последнего вызова ("слышать комнату")

add_elements

добавить элементы (транслировать в реальном времени)

update_elements

переместить / переименовать / перекрасить существующие (увеличение версии)

delete_elements

отметить как удаленные

Запуск

npm install
# relay (one terminal):
cd /tmp/excalidraw-room && PORT=3002 node dist/index.js
# self-test the bridge core:
npm run selftest
# MCP smoke (stdio handshake + join + get_scene):
npm run mcp-smoke
# start the MCP server (stdio) — wire into Hermes/Copilot/Claude:
node src/server.js

Подключение к Hermes (~/.hermes/config.yaml)

mcp_servers:
  excalidraw_ai:
    command: "node"
    args: ["/root/workspace/mcclawd-org/excalidraw-ai/src/server.js"]

Перезапустите Hermes → инструменты появятся как mcp_excalidraw_ai_*.

Структура

  • src/crypto.js — AES-GCM E2E помощники (Node Web Crypto)

  • src/elements.js — построители элементов + слияние/различие сцены (семантика id+версия)

  • src/room.js — RoomClient: сокетное подключение, чтение, запись, поток изменений

  • src/server.js — MCP server (stdio), регистрация инструментов

  • scripts/selftest.mjs, scripts/mcp-smoke.mjs — проверка

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to programmatically control a live Excalidraw canvas through element-level CRUD operations and real-time synchronization. It allows agents to iteratively build, inspect, and refine diagrams while providing visual feedback via screenshots and scene descriptions.
    3,166 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to programmatically control a live Excalidraw canvas with element-level CRUD operations and real-time synchronization. It supports iterative diagramming through scene descriptions, screenshots, and advanced layout tools for collaborative AI-human workflows.
    3,166 npm
    2
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Standalone backend for a self-hosted Excalidraw fork with per-board access control, providing an MCP remote endpoint that lets AI agents draw on real collaboration boards as specific users.
    -