ExcaliDash MCP
Provides tools for viewing and editing Excalidraw drawings through a self-hosted ExcaliDash server, including listing and selecting drawings, creating new drawings, fetching structural summaries, inspecting elements, and applying batch semantic operations such as adding shapes, connectors, text, styling, alignment, and grouping.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ExcaliDash MCPList my drawings and summarize the 'Q3 roadmap' drawing."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ExcaliDash MCP
셀프호스팅한 ExcaliDash의 드로잉을 MCP 클라이언트에서 조회하고 편집하는 서버입니다. ExcaliDash v0.6 계열의 Drawing Agent API를 얇게 감싸며 stdio와 Streamable HTTP를 지원합니다. 이 저장소는 ExcaliDash 공식 프로젝트가 아닌 독립 MCP 어댑터입니다.
지원 기능
드로잉 목록 조회와 이름 검색
작업할 드로잉 선택
빈 Excalidraw 드로잉 생성
구조 요약 조회
요소와 바인딩된 자식 요소 조회
최대 50개의 시맨틱 연산을 하나의 배치로 적용
HTTP 세션별 드로잉 선택 상태 분리
열려 있는 ExcaliDash 편집 화면에 변경 사항 실시간 반영
MCP 클라이언트
│
├─ stdio ───────────────┐
│ │
└─ Streamable HTTP ─ ExcaliDash MCP ─ HTTPS/REST ─ ExcaliDash
:9003/mcp v0.6 Agent APIRelated MCP server: excalidraw-mcp
요구 사항
ExcaliDash v0.6.0-dev 이상 (Drawing Agent API 포함)
Excalidraw 엔진으로 만든 드로잉
Node.js 20 이상 또는 Docker Compose
Read drawings,Write drawings스코프를 가진 ExcaliDash 계정 API 키ExcaliDash Settings에서 활성화된 AI 기능
ExcaliDash 버전 확인
Drawing Agent API(ops, summary, elements)는 v0.6.0-dev에서 추가되었습니다. v0.5.x에는 해당 엔드포인트가 없어 이 MCP 서버가 동작하지 않습니다.
2026년 8월 기준 안정판은 v0.5.1이고 0.6.0 정식 릴리스는 아직 없습니다. :latest 이미지로 배포했다면 v0.5.x이므로 프리릴리스 태그로 올려야 합니다.
services:
backend:
image: zimengxiong/excalidash-backend:0.6.0-dev-a6969c9
frontend:
image: zimengxiong/excalidash-frontend:0.6.0-dev-a6969c90.6.0-dev-a6969c9는 특정 빌드에 고정된 태그이고, dev는 새 프리릴리스마다 내용이 바뀌는 롤링 태그입니다.
업그레이드 전에 백엔드 볼륨(SQLite DB와 secrets)을 백업하십시오. 마이그레이션 후 이미지만 되돌리는 것은 안전한 롤백이 아닙니다.
버전이 맞는지 확인하려면 API 키로 실제 Agent API를 호출해 봅니다.
curl -sS -H "Authorization: Bearer $EXCALIDASH_API_KEY" \
https://your-excalidash/api/drawings/<drawing-id>/summary응답 본문으로 원인을 구분합니다. v0.5.x와 AI 비활성화 상태는 둘 다 403이라 상태 코드만으로는 구분되지 않습니다.
응답 | 의미 |
드로잉 구조 요약 텍스트 | 정상 동작 |
| v0.5.x. Agent API가 없어 인증 단계에서 차단됨 |
| v0.6이지만 관리자가 AI 기능을 꺼 둠 |
| 드로잉 ID가 틀렸거나 소유자가 아님 |
| tldraw 드로잉. Excalidraw 드로잉으로 시도해야 함 |
API 키 발급
ExcaliDash에서 Settings → API Keys로 이동합니다. 이름을 입력하고 아래 스코프를 선택한 뒤 키를 생성합니다.
Read drawingsWrite drawings
키 전체 값은 생성 직후 한 번만 표시됩니다. Read collections, Write collections는 이 MCP 서버에서 사용하지 않습니다.
드로잉별 Agent Token은 한 드로잉에만 접근할 때 쓸 수 있습니다. 이 서버에서 목록 조회와 신규 생성을 사용하려면 계정 API 키가 필요합니다.
Docker로 실행
저장소를 받은 뒤 환경변수 파일을 만듭니다.
cp .env.example .env
chmod 600 .env.env에 ExcaliDash 주소와 API 키를 입력합니다.
EXCALIDASH_URL=http://host.docker.internal:6767
EXCALIDASH_API_KEY=발급받은-키
MCP_PORT=9003ExcaliDash도 같은 호스트의 Docker에서 실행 중이라면 컨테이너 내부의 localhost를 사용하면 안 됩니다. macOS·Windows·이 저장소의 Linux Compose 설정에서는 host.docker.internal로 호스트에 접근합니다. Tailscale이나 리버스 프록시 주소가 있다면 HTTPS URL을 직접 넣어도 됩니다.
컨테이너를 빌드하고 시작합니다.
docker compose up -d --build
docker compose ps기본 엔드포인트:
MCP: http://127.0.0.1:9003/mcp
Health: http://127.0.0.1:9003/health상태와 로그 확인:
curl --fail http://127.0.0.1:9003/health
docker compose logs -f excalidash-mcp종료:
docker compose downCompose는 포트를 loopback에만 연결하고 컨테이너를 비루트 사용자, 읽기 전용 root filesystem, capability 제거 상태로 실행합니다.
GJC에 등록
프로젝트 디렉터리에서 실행합니다.
gjc mcp add excalidash \
--project \
--force \
--type http \
--url http://127.0.0.1:9003/mcp생성되는 .gjc/mcp.json은 다음과 같습니다.
{
"mcpServers": {
"excalidash": {
"sharing": "per-session",
"type": "http",
"url": "http://127.0.0.1:9003/mcp"
}
}
}설정 파일을 지정해 GJC를 실행합니다.
gjc --mcp-config "$PWD/.gjc/mcp.json"사용 중인 GJC 실행 래퍼가 가장 가까운 .gjc/mcp.json을 자동으로 찾는다면 평소처럼 gjc만 실행하면 됩니다.
도구 이름은 다음 형식으로 노출됩니다.
mcp__excalidash_list_drawings
mcp__excalidash_select_drawing
mcp__excalidash_get_selected_drawing
mcp__excalidash_create_drawing
mcp__excalidash_get_drawing_summary
mcp__excalidash_inspect_drawing_element
mcp__excalidash_apply_drawing_ops예시 요청:
ExcaliDash 드로잉 목록을 보여줘.
"서비스 아키텍처" 드로잉을 선택하고 현재 구조를 요약해줘.
새 드로잉을 만든 뒤 API Gateway, Worker, PostgreSQL을 그리고 흐름대로 연결해줘.다른 MCP 클라이언트에 등록
Streamable HTTP를 지원하는 클라이언트에는 아래 URL을 등록합니다.
http://127.0.0.1:9003/mcp클라이언트 설정 형식이 JSON이라면 다음 형태를 사용합니다.
{
"mcpServers": {
"excalidash": {
"type": "http",
"url": "http://127.0.0.1:9003/mcp"
}
}
}stdio로 실행
Docker 없이 로컬 프로세스로 실행할 수도 있습니다.
npm ci
npm run build
EXCALIDASH_URL=https://draw.example.com \
EXCALIDASH_API_KEY=발급받은-키 \
npm startstdio 클라이언트 설정 예시:
{
"mcpServers": {
"excalidash": {
"command": "node",
"args": ["/absolute/path/to/excalidash-mcp/dist/index.js"],
"env": {
"EXCALIDASH_URL": "https://draw.example.com",
"EXCALIDASH_API_KEY": "${EXCALIDASH_API_KEY}"
}
}
}
}제공 도구
도구 | 설명 |
| 드로잉 목록을 페이지 단위로 조회하고 이름으로 검색합니다. |
| 이후 호출에서 사용할 기본 드로잉을 선택합니다. |
| 현재 MCP 세션에서 선택한 드로잉 ID를 반환합니다. |
| 빈 Excalidraw 드로잉을 만들고 기본값으로 선택합니다. |
| 이름, 버전, 요소 관계를 담은 구조 요약을 읽습니다. |
| 요소 원본 JSON과 바인딩된 자식 요소를 읽습니다. |
| 최대 50개의 편집 연산을 원자적으로 적용합니다. |
get_drawing_summary, inspect_drawing_element, apply_drawing_ops에 drawingId를 직접 전달하면 현재 선택값 대신 해당 드로잉을 사용합니다.
편집 연산
연산 | 기능 |
| 사각형, 타원, 다이아몬드, 텍스트, 프레임 생성 |
| 두 요소를 화살표 또는 선으로 연결 |
| 텍스트 변경 |
| 색상, 채우기, 선, 투명도, 글꼴 등의 스타일 변경 |
| 상대 거리 또는 절대 좌표로 이동 |
| 너비와 높이 변경 |
| 좌우·상하·가운데 정렬 |
| 가로 또는 세로 간격 분배 |
| 가로, 세로, 그리드 자동 배치 |
| 여러 요소 그룹화 |
| 요소 삭제 |
| Excalidraw 요소 배열 가져오기 |
| 지정한 스냅샷 버전으로 복원 |
배치 예시:
{
"ops": [
{
"op": "add_shape",
"ref": "api",
"shape": "rectangle",
"x": 100,
"y": 100,
"w": 240,
"h": 100,
"label": "API Gateway"
},
{
"op": "add_shape",
"ref": "db",
"shape": "rectangle",
"x": 500,
"y": 100,
"w": 240,
"h": 100,
"label": "PostgreSQL"
},
{
"op": "connect",
"fromId": "api",
"toId": "db",
"label": "query"
}
],
"clientBatchId": "architecture-001"
}같은 배치에서 만든 요소는 ref 값으로 참조합니다.
환경변수
이름 | 필수 | 기본값 | 설명 |
| 예 | 없음 | ExcaliDash 공개 URL 또는 내부 URL. |
| 예 | 없음 |
|
| 아니요 | 없음 | 이전 설정과의 호환을 위한 API 키 별칭 |
| 아니요 | 없음 | 시작할 때 선택할 기본 드로잉 ID |
| HTTP만 |
| 컨테이너 내부 HTTP 바인드 주소 |
| HTTP만 |
| 컨테이너 내부 HTTP 포트 |
| 아니요 |
| HTTP 요청 본문 최대 크기 |
| 아니요 |
| 동시에 유지할 MCP 세션 수 상한. 초과하면 |
| 아니요 |
| 유휴 세션을 정리하기까지의 시간(밀리초) |
| Compose만 |
| 호스트 loopback에 공개할 포트 |
보안
HTTP MCP 엔드포인트에는 별도 인증 계층이 없습니다. 기본 Compose처럼 반드시 127.0.0.1에만 포트를 연결하거나 인증된 내부 프록시 뒤에 두십시오. 0.0.0.0:9003:8080처럼 LAN에 직접 공개하지 마십시오.
네트워크 노출
HTTP 서버는 /mcp 요청에 Host·Origin 검증을 적용하고, 요청 본문 크기와 동시 세션 수를 제한하며, 잘못된 요청 헤더가 프로세스를 중단시키지 못하도록 요청 처리를 격리합니다.
Host 헤더 검증은 브라우저발 DNS 리바인딩만 막습니다. 직접 접속하는 공격자는 Host 값을 위조할 수 있으므로 실제 접근 통제는 loopback 바인딩이나 앞단 프록시가 담당해야 합니다.
API 키 취급
계정 API 키에는 사용자가 소유한 드로잉을 조회하고 수정할 권한이 있습니다.
.env를 Git에 커밋하지 마십시오.API 키를 로그, 이슈, 스크린샷에 남기지 마십시오.
필요한 스코프만 발급하십시오.
키가 노출되면 ExcaliDash Settings에서 폐기하고 새 키를 발급하십시오.
제한 사항
Agent API 편집은 Excalidraw 엔진만 지원합니다. tldraw 드로잉은
ENGINE_MISMATCH오류를 반환합니다.컬렉션 스코프를 받아도 현재 MCP 도구는 컬렉션 CRUD를 제공하지 않습니다.
드로잉 삭제 도구는 제공하지 않습니다.
delete연산은 드로잉 안의 요소를 삭제합니다.HTTP 세션이 종료되면 선택한 드로잉 상태도 사라집니다.
drawingId를 직접 전달하면 선택 상태에 의존하지 않습니다.
개발
npm ci
npm test
npm run build
npm run start:httpDocker 이미지 빌드:
docker build -t excalidash-mcp:local .테스트에는 HTTP 헬스체크, stdio MCP 호출, Streamable HTTP 세션 상태, ExcaliDash API 요청 형식 검증이 포함됩니다.
문제 해결
403 Forbidden
세 가지 원인이 같은 상태 코드를 씁니다. 응답 본문으로 구분합니다.
API key is not authorized for this route— ExcaliDash가 v0.5.x입니다. 버전 확인을 참고해 업그레이드합니다.AI features disabled— Settings에서 AI 기능을 켭니다.그 외 — API 키에
Read drawings,Write drawings스코프가 있는지 확인합니다.
401 Unauthorized
API 키 값이 잘못되었거나 폐기되었습니다. Settings에서 새 키를 발급합니다.
컨테이너에서 ExcaliDash에 연결할 수 없음
EXCALIDASH_URL=http://localhost:6767을 사용하지 않았는지 확인합니다. 같은 호스트의 서비스에는 http://host.docker.internal:6767을 사용합니다.
No drawing selected
list_drawings 후 select_drawing을 호출하거나 도구 인자에 drawingId를 전달합니다.
ENGINE_MISMATCH
대상 드로잉이 tldraw 엔진으로 생성되었습니다. Excalidraw 드로잉을 선택하거나 새로 만드십시오.
9003 포트를 이미 사용 중
.env에서 호스트 포트를 바꿉니다.
MCP_PORT=9010MCP 클라이언트 URL도 http://127.0.0.1:9010/mcp로 변경해야 합니다.
라이선스
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables creation, management, and export of Excalidraw drawings through natural language. Supports CRUD operations on drawings and export to SVG, PNG, and JSON formats with file-based storage.82,214The Unlicense
- Alicense-qualityCmaintenanceEnables AI agents to create and manipulate live visual diagrams on an Excalidraw canvas in real-time via MCP tools.2,21414BSD 3-Clause
- Alicense-qualityBmaintenanceEnables AI agents to collaboratively draw and annotate Excalidraw diagrams in real-time via MCP tools, synced to a browser canvas.4Apache 2.0
- Alicense-qualityDmaintenanceEnables AI agents to create, modify, and share diagrams on a live Excalidraw canvas through MCP tools, supporting shapes, text, arrows, batch operations, and export to shareable links with images.1,3598MIT
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Real-time collaborative whiteboard — AI agents and humans edit the same board live over MCP.
AI agent draws editable hand-drawn diagrams (flowchart, ER, architecture) via MCP, not static images
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/chlee1001/excalidash-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server