Skip to main content
Glama

excalidraw-ai — Servidor MCP (interfaz de IA para Excalidraw)

La interfaz limpia y sin complicaciones para que una IA lea, observe y edite una sala de Excalidraw en vivo. En lugar de automatización del navegador (lectura de fibra + arrastrar y soltar + gotas del navegador remoto), se une a la sala como un socket-bot a través del relé de colaboración y habla directamente el protocolo de escena cifrado con AES-GCM — determinista, sin cabeza, escalable.

Estado de POC: puente central + superficie MCP stdio funcionando de extremo a extremo contra un relé excalidraw-room auto-alojado (selftest + prueba de humo MCP pasan).

Por qué un relé que controlamos

El bot se comunica con un relé. El relé alojado de Excalidraw (oss-collab.excalidraw.com) protege por origen a los bots que no son navegadores (403/400), por lo que para nuestras propias salas ejecutamos excalidraw/excalidraw-room (MIT, mismo código que producción) y apuntamos una interfaz de Excalidraw hacia él mediante VITE_APP_WS_SERVER_URL.

Related MCP server: Excalidraw MCP Server

Arquitectura

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

Herramientas

Herramienta

Qué hace

create_room

nuevo id/clave de sala para nuestro relé

join_room

unirse a una sala, leer escena, empezar a escuchar

leave_room

desconectar

get_scene

elementos del tablero + textos

get_changes

deltas de añadir/actualizar/eliminar desde la última llamada ("escuchar la sala")

add_elements

añadir elementos (transmitir en vivo)

update_elements

mover / renombrar / recolorear existentes (aumento de versión)

delete_elements

marcar como eliminados

Ejecutar

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

Conectar con Hermes (~/.hermes/config.yaml)

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

Reiniciar Hermes → las herramientas aparecen como mcp_excalidraw_ai_*.

Estructura

  • src/crypto.js — ayudantes E2E AES-GCM (Node Web Crypto)

  • src/elements.js — constructores de elementos + fusión/diferencia de escena (semántica de id+versión)

  • src/room.js — RoomClient: unión de socket, lectura, escritura, flujo de cambios

  • src/server.js — servidor MCP (stdio), registro de herramientas

  • scripts/selftest.mjs, scripts/mcp-smoke.mjs — verificación

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.
    -