Excalidraw MCP

Gere mais de 25 tipos de diagramas (fluxograma, sequência, ER, mapa mental, arquitetura, etc.) como arquivos Excalidraw com linguagem natural. Suporte a CJK, mais de 30 cores de marcas de tecnologia, layout automático Sugiyama.

Documentação

excalidraw-mcp

PyPI Downloads License: MIT

Gere 25+ tipos de diagramas bonitos desenhados à mão com IA — fluxogramas, sequência, arquitetura, mapas mentais, ER, classes, estados, linha do tempo, gráficos de pizza/barras/linhas/radar, kanban, wireframes, árvores de decisão e muito mais — com layout hierárquico Sugiyama, suporte a CJK e curva de aprendizado zero.

Por Maaker.AI

Showcase

Cada imagem abaixo foi gerada por uma única chamada de ferramenta — sem coordenadas, sem layout manual. Os arquivos-fonte .excalidraw estão em docs/showcase/; arraste qualquer um deles para excalidraw.com para continuar editando.

Fluxograma (ramificações + ciclo + CJK)Arquitetura em camadas
FlowchartArchitecture

Mind map

Instalação

Claude Code (recomendado)

claude mcp add excalidraw -- uvx maaker-excalidraw-mcp

Claude Desktop

Adicione à sua configuração MCP (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "excalidraw": {
      "command": "uvx",
      "args": ["maaker-excalidraw-mcp"]
    }
  }
}

opencode / Cursor / qualquer cliente MCP

{
  "mcp": {
    "excalidraw": {
      "type": "local",
      "command": ["uvx", "maaker-excalidraw-mcp"],
      "enabled": true
    }
  }
}

(opencode mostrado; Cursor e outros clientes usam o mesmo comando uvx maaker-excalidraw-mcp no formato de configuração MCP deles.)

pip

pip install maaker-excalidraw-mcp

Ferramentas

FerramentaDescrição
create_flowchartFluxogramas com layout Sugiyama — ramificações, junções, ciclos, grupos
create_architecture_diagramDiagramas de arquitetura em camadas com conexões
create_sequence_diagramDiagramas de sequência UML com linhas de vida e mensagens
create_class_diagramDiagramas de classes UML com atributos, métodos, relacionamentos
create_state_diagramMáquinas de estado UML com estados inicial/final
create_er_diagramDiagramas Entidade-Relacionamento com cardinalidade
create_mindmapMapas mentais em estilo de árvore com ramificações coloridas automaticamente
create_timelineGráficos de linha do tempo/Gantt com tratamento de eventos sobrepostos
create_pie_chartGráficos de pizza com fatias rotuladas e porcentagens
create_kanban_boardQuadros Kanban com colunas e cartões
create_network_diagramTopologia de rede com nós tipados (servidor, banco de dados, etc.)
create_quadrant_chartMatrizes 2x2 de prioridade/posicionamento
create_user_journeyMapas de jornada do usuário com indicadores de emoção
create_wireframeMockups de wireframe de UI com molduras de dispositivos
create_org_chartOrganogramas (hierarquia de cima para baixo)
create_swot_analysisAnálise SWOT em matrizes 2x2 codificadas por cores
create_tableTabelas de grade com colunas de tamanho automático e cores alternadas de linhas
create_bar_chartGráficos de barras verticais com barras e rótulos de escala automática
create_line_chartGráficos de linhas com suporte a múltiplas séries
create_radar_chartGráficos de radar/teia com sobreposição de múltiplas séries
create_decision_treeÁrvores de decisão com decisões em losango e resultados retangulares
import_mermaidImportar sintaxe Mermaid (fluxograma, sequência, classe, estado)
list_diagram_typesListar todos os tipos de diagrama disponíveis
modify_diagramAdicionar/remover nós e conexões em diagramas existentes
read_diagramAnalisar arquivos .excalidraw existentes
export_diagramExportar diagramas para o formato SVG

Exemplos Rápidos

Fluxograma

Basta dizer ao seu assistente de IA:

"Crie um fluxograma: Solicitação do Usuário → Balanceador de Carga → Servidor de API → Banco de Dados"

A IA chamará create_flowchart com dados estruturados, e você receberá um arquivo .excalidraw com:

  • Layout hierárquico Sugiyama — tratamento adequado de ramificações, junções, ciclos e subgrafos desconectados
  • Tamanhos de caixa calculados automaticamente com base no conteúdo do texto
  • Texto perfeitamente centralizado (incluindo caracteres chineses/CJK)
  • Roteamento inteligente de setas com vinculação adequada de bordas
  • Estilo desenhado à mão que fica ótimo em documentos e apresentações
  • 4 direções: LR (esquerda-para-direita), RL, TB (cima-para-baixo), BT

Diagrama de Arquitetura

"Crie um diagrama de arquitetura com camadas Frontend (React, Next.js), Backend (API Server, Auth Service) e Database (PostgreSQL, Redis)"

Gera um diagrama em camadas com componentes organizados por nível, dimensionamento automático e conexões entre camadas.

Ler e Modificar

"Leia o diagrama em ./my-system.excalidraw e adicione um nó 'Cache' conectado ao API Server"

Funciona com arquivos .excalidraw existentes — leia a estrutura deles, adicione/remova nós, adicione conexões.

Por que excalidraw-mcp?

vs MCP Oficial do Excalidraw (excalidraw/excalidraw-mcp)

RecursoMCP Oficialexcalidraw-mcp
AbordagemJSON bruto — a IA posiciona manualmente cada elementoEntrada estruturada — diga o que você quer, receba um diagrama
LayoutA IA calcula coordenadasLayout automático hierárquico Sugiyama
Ramificações/JunçõesA IA precisa descobrir o posicionamentoAutomático — tratado pelo mecanismo de layout
Texto CJKSem estimativa de larguraCálculo preciso de largura para CJK/script misto
Centralização de textoA IA precisa calcular deslocamentos x/yCentralização automática em contêineres
Vinculação de setasA IA precisa gerenciar vinculaçõesVinculação automática fixedPoint + orbit
Arquivos locaisNão consegue ler/gravar arquivos locaisSuporte completo para ler, modificar e salvar
DistribuiçãoURL remota / .mcpbuvx / pip (Python padrão)
Uso de tokensPrecisa de chamada read_me para aprender o formatoConhecimento do formato integrado

vs ferramentas baseadas em Mermaid

  • Layout livre: Não limitado pelas restrições de sintaxe do Mermaid
  • Estilo desenhado à mão: Visual nativo do Excalidraw, não blocos de código renderizados
  • Saída editável: Arraste o arquivo .excalidraw para excalidraw.com para continuar editando

Referência de Ferramentas

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

Cores: azul, verde, roxo, amarelo, vermelho, cinza, laranja, rosa

Formas: retângulo (padrão), losango (decisões), elipse (início/fim)

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

Detalhes Técnicos

Layout Hierárquico Sugiyama

Usa a biblioteca grandalf para layout adequado de grafos direcionados:

  • Atribuição de camadas: Nós posicionados em camadas com base na topologia do grafo
  • Minimização de cruzamentos: Otimização de múltiplas passagens para reduzir cruzamentos de arestas
  • Atribuição de coordenadas: Posicionamento equilibrado dentro das camadas
  • Tratamento de ciclos: Detecção de arestas de feedback para grafos cíclicos
  • Subgrafos desconectados: Posicionamento automático lado a lado

Estimativa de Largura CJK

Cálculo preciso de largura de texto para texto misto chinês/inglês:

Tipo de CaractereLargura (em fontSize=20)
Caracteres CJK~22px por caractere
Letras/dígitos ASCII~11px por caractere
Espaços~5px

Vinculação de Setas

Usa a vinculação moderna fixedPoint + orbit do Excalidraw (não o formato obsoleto focus/gap):

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

As setas se conectam automaticamente na borda correta com base nas posições relativas.

Desenvolvimento

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

Licença

MIT