mcpField
E
excalidraw

excalidraw

ローカル
github.com/debu-sinhaメディア・デザイン438 週間前に更新

excalidraw について

excalidrawは、AIクライアントでExcalidraw図を作成・編集できるMCPサーバーです。図のインライン表示と任意のライブキャンバス同期に加え、認証、入力検証、レート制限を備えています。

主な機能

  1. 01図形要素の作成と編集
  2. 02Mermaid図をExcalidrawに変換
  3. 03アニメーション付きSVGでインライン表示
  4. 04シーンをSVGまたはPNGでエクスポート
  5. 05キャンバスサーバー経由でクライアントを同期
  6. 06認証とリクエスト制限

活用シーン

  1. 01チャットからアーキテクチャ図を作成
  2. 02キャンバス上の要素を編集・配置
  3. 03共有ライブキャンバスで共同作業
  4. 04図を他の用途向けにエクスポート

MCP 対応

図の作成、編集、検索、グループ化、エクスポート、リソース取得のツールをMCPクライアントに公開します。stdioに対応し、任意のキャンバスサーバーと接続してリアルタイム同期できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"debu-sinha-excalidraw": {
"command": "npx",
"args": [
"-y",
"excalidraw-mcp-server"
]
}
}
}
起動コマンドnpx -y excalidraw-mcp-server

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmexcalidraw-mcp-server1.0.2

ツール

14

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
xnumberはい
yanyはい
textstringいいえ
typeenumはいrectangle | ellipse | diamond | arrow | text | line | freedraw
anglenumberいいえ
widthnumberいいえ
heightanyいいえ
lockedbooleanいいえ
pointsarrayいいえ
opacitynumberいいえ
fontSizenumberいいえ
groupIdsarrayいいえ
roughnessnumberいいえ
fontFamilyintegerいいえ
strokeColoranyいいえ
strokeWidthnumberいいえ
backgroundColorstringいいえ

詳細

excalidraw-mcp-server

セキュリティ強化、インライン図のレンダリング、リアルタイムキャンバス同期に対応した、唯一の Excalidraw MCP サーバーです。

CI npm npm downloads License: MIT Node

デモ:WebSocket 同期を通じて、リアルタイムでアーキテクチャ図が要素ごとに描画される様子

できること

AI に図の描画を頼むと、チャット内にそのまま表示されます。この MCP サーバーは、API 認証、レート制限、すべての操作に対する入力検証を備えた、Excalidraw 形式の描画ツール一式を Claude Desktop、ChatGPT、VS Code、Cursor に提供します。

v2.0 ではMCP Apps に対応しました。図はインタラクティブな SVG ウィジェットとしてインラインでストリーミング表示され、描画アニメーションも利用できます。また、ワンクリックで図を excalidraw.com にエクスポートできます。

2 つのモード、設定不要

スタンドアロンモード(デフォルト)――インストールするだけですぐに使えます。サーバーはインプロセスの要素ストアで動作します。キャンバスサーバー、API キー、セットアップは不要です。MCP クライアントがツールを呼び出すと、図がインラインでレンダリングされます。

接続モード――オプションのキャンバスサーバーを起動すると、ブラウザーとリアルタイムで同期できます。複数のクライアントが、認証済みの WebSocket 接続を通じて同じキャンバス上で共同作業できます。ファイルへの永続化により、再起動後も状態が保持されます。

サーバーは使用するモードを自動検出します。キャンバスサーバーに接続できる場合は接続し、そうでない場合はスタンドアロンモードにフォールバックします。

アーキテクチャ

アーキテクチャ:MCP クライアントは stdio 経由でサーバーに接続します。サーバーはインプロセスストアとインラインウィジェットを使用するスタンドアロンモード、またはキャンバスサーバー、WebSocket ブラウザーフロントエンド、ファイル永続化を使用する接続モードで動作します

excalidraw-mcp-server で作成した図です――Excalidraw で編集

機能

MCP Apps(v2.0)

  • Claude Desktop、ChatGPT、VS Code でのインライン図レンダリング
  • 要素の到着に合わせて描画アニメーションを表示する SVG ストリーミング
  • ワンクリックで excalidraw.com にエクスポート
  • read_me ツールによる要素リファレンスチートシート

16 個の MCP ツール

  • 要素の作成、更新、削除、検索(長方形、楕円、ひし形、矢印、テキスト、線、フリードロー)
  • 一度に最大 100 個の要素を一括作成
  • グループ化、グループ解除、整列、分布、ロック、ロック解除
  • Mermaid 図への変換
  • SVG と PNG へのエクスポート

セキュリティ

  • 定時間比較による API キー認証
  • オリジン制限付き CORS(ワイルドカードなし)
  • トークンとオリジンの検証による WebSocket 認証
  • 標準および厳格なレート制限ティア
  • .strict() をすべてのエンドポイントに適用した、上限付き Zod スキーマ
  • CSP を含む Helmet.js セキュリティヘッダー

インフラストラクチャ

  • ブラウザークライアント間のリアルタイム WebSocket 同期
  • オプションのアトミック書き込みによるファイル永続化
  • 構造化された pino 監査ログ

インストール

npm install -g excalidraw-mcp-server

または、直接実行します。

npx excalidraw-mcp-server

クイックスタート

スタンドアロン(ほとんどのユーザーにおすすめ)

MCP クライアントでサーバーを指定するだけです。キャンバスサーバーは不要です。

{
  "mcpServers": {
    "excalidraw": {
      "command": "npx",
      "args": ["excalidraw-mcp-server"]
    }
  }
}

続いて、AI に次のように頼みます。「ロードバランサー、3 台のアプリサーバー、データベースを示すアーキテクチャ図を描いて」

接続モード(ブラウザーとのリアルタイム同期)
# Generate an API key
node scripts/generate-api-key.cjs

# Start the canvas server
EXCALIDRAW_API_KEY=<your-key> npm run canvas

# Open http://localhost:3000 to see the live canvas

同じ API キーを使って、MCP クライアントでサーバーを指定します。

{
  "mcpServers": {
    "excalidraw": {
      "command": "npx",
      "args": ["excalidraw-mcp-server"],
      "env": {
        "EXCALIDRAW_API_KEY": "<your-key>",
        "CANVAS_SERVER_URL": "http://127.0.0.1:3000"
      }
    }
  }
}

MCP ツール

ツール説明
create_viewストリーミングアニメーション付きのインライン SVG ウィジェットとして要素を描画します(MCP Apps)
read_me要素のリファレンス早見表(種類、色、サイズ設定のヒント)を取得します
create_element単一の要素(長方形、楕円、ひし形、矢印、テキスト、線、フリーハンド描画)を作成します
update_elementID を指定して既存の要素を更新します
delete_elementID を指定して要素を削除します
query_elements種類、ロック状態、またはグループ ID で要素を検索します
get_resourceシーンの状態、すべての要素、テーマ、またはライブラリを取得します
batch_create_elements1 回の呼び出しで最大 100 個の要素を作成します
group_elements複数の要素をグループ化します
ungroup_elements要素をグループから解除します
align_elements要素を整列します(左、中央、右、上、中央、下)
distribute_elements要素を均等に配置します(水平または垂直)
lock_elements要素をロックして変更を防止します
unlock_elements要素のロックを解除します
create_from_mermaidMermaid ダイアグラムを Excalidraw の要素に変換します
export_sceneキャンバスを SVG または PNG としてエクスポートします

セキュリティ比較

機能一般的な MCP サーバーexcalidraw-mcp-server
認証なしAPI キー(一定時間比較)
CORS* ワイルドカードオリジン許可リスト
WebSocket 認証なしトークン + オリジン検証
レート制限なし標準 + 厳格なティア
入力検証最小限.strict() を使用した制約付き Zod
セキュリティヘッダーなしHelmet.js + CSP
リクエストサイズ制限なし本文 512KB、WebSocket 1MB
監査ログなし構造化された pino ログ

設定

すべての設定は環境変数で行います。.env.example を .env にコピーし、必要に応じて調整してください。

変数デフォルト説明
STANDALONE_MODEtrueプロセス内ストアを使用します(キャンバスサーバーは不要)
CANVAS_HOST127.0.0.1キャンバスサーバーのバインドアドレス
CANVAS_PORT3000キャンバスサーバーのポート
EXCALIDRAW_API_KEY自動生成認証用 API キー(32 文字以上)
CORS_ALLOWED_ORIGINShttp://localhost:3000,http://127.0.0.1:3000カンマ区切りのオリジン許可リスト
RATE_LIMIT_WINDOW_MS60000ミリ秒単位のレート制限ウィンドウ
RATE_LIMIT_MAX_REQUESTS100ウィンドウあたりの最大リクエスト数(標準ティア)
PERSISTENCE_ENABLEDfalseファイルベースの永続化を有効にします
PERSISTENCE_DIR./data永続ストレージのディレクトリ
CANVAS_SERVER_URLhttp://127.0.0.1:3000MCP サーバーがキャンバスに接続する際に使用する URL
LOG_LEVELinfoログレベル:debug、info、warn、error
AUDIT_LOG_ENABLEDtrue監査ログを有効にします
MAX_ELEMENTS10000キャンバス上の要素の最大数
MAX_BATCH_SIZE100一括作成あたりの要素の最大数

MCP クライアントの設定

Claude Desktop

claude_desktop_config.json に追加します:

{
  "mcpServers": {
    "excalidraw": {
      "command": "npx",
      "args": ["excalidraw-mcp-server"]
    }
  }
}
Cursor

プロジェクトのルートにある .cursor/mcp.json に追加します:

{
  "mcpServers": {
    "excalidraw": {
      "command": "npx",
      "args": ["excalidraw-mcp-server"]
    }
  }
}
VS Code

MCP 設定に追加します:

{
  "mcpServers": {
    "excalidraw": {
      "command": "npx",
      "args": ["excalidraw-mcp-server"]
    }
  }
}

接続モードでは、上記の設定に "env": { "EXCALIDRAW_API_KEY": "<key>", "CANVAS_SERVER_URL": "http://127.0.0.1:3000" } を追加します。<key> を node scripts/generate-api-key.cjs で生成したキーに置き換えてください。

開発

# Install dependencies
npm ci

# Run in development mode (watch + Vite dev server)
npm run dev

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

# Lint
npm run lint

# Type check
npm run type-check

# Build (server + widget + frontend)
npm run build

プロジェクト構成

src/
  mcp/              MCP server (stdio transport)
    tools/          16 tool implementations
    apps/           MCP Apps wiring, standalone store, cheatsheet
    schemas/        Zod schemas and input limits
    canvas-client.ts  HTTP client for canvas server
    index.ts        MCP server entry point
  canvas/           Canvas server (Express + WebSocket)
    middleware/      Auth, CORS, rate limiting, audit, security headers
    routes/         REST API routes + SVG export
    ws/             WebSocket handler and protocol
    store/          Element storage (memory + file)
    index.ts        Canvas server entry point
  shared/           Shared config, types, logging
widget/             MCP Apps inline widget (Vite + singlefile build)
frontend/           Excalidraw React frontend (browser)
test/               Unit and integration tests (290 tests)

v1.x からの移行

設定不要でアップグレードできます。元の 14 個のツールはすべて同じように動作し、create_view と read_me が追加されています。キャンバスサーバーは任意になりました(スタンドアロンモードが自動的に有効になります)。

npm install -g excalidraw-mcp-server@2

既存の MCP クライアント設定(stdio トランスポート、ツール名)は、変更せずに引き続き使用できます。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。