excalidashapi-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EXCALIDASH_URL | Yes | The public frontend URL of your ExcaliDash instance. The API client appends /api itself; do not point it at a backend service address. | |
| EXCALIDASH_API_KEY | Yes | Your ExcaliDash account API key, created with the required scopes (drawings:read, drawings:write, collections:read, collections:write). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_drawingsA | List ExcaliDash drawings available to the account API key. Use this before selecting a drawing. |
| select_drawingA | Select an Excalidraw drawing as the default target for subsequent tools in this MCP process. |
| get_selected_drawingA | Return the drawing currently selected by this MCP process. |
| create_drawingB | Create a new empty Excalidraw drawing and optionally select it as the default target. |
| get_drawing_summaryA | Read a compact structural summary of a drawing. Uses drawingId when provided, otherwise the selected drawing. |
| inspect_drawing_elementB | Inspect one element and its bound children. Uses drawingId when provided, otherwise the selected drawing. |
| apply_drawing_opsA | Atomically apply up to 50 semantic operations. Uses drawingId when provided, otherwise the selected drawing. Read the summary first. |
| rename_drawingC | Rename a drawing by ID. |
| get_drawingB | Get full scene and version. Files may be authenticated references, not embedded bytes. |
| find_elementsC | AND filters: exact id/type and case-sensitive literal text substring. Excludes deleted elements. |
| delete_drawingA | Permanently delete a drawing. This is not a move to Trash. |
| list_collectionsB | List owned and shared collections with server ownership metadata. |
| create_collectionC | Create an owned collection. |
| rename_collectionA | Rename an owned collection. Trash cannot be renamed. |
| delete_collectionA | Delete an owned collection and its shares; drawings remain unorganized. Trash cannot be deleted. |
| move_drawing_to_collectionB | Move a drawing to an existing collection, or null for unorganized. |
| add_imageB | Add PNG/JPEG bytes with optimistic version checking. No URL fetch or S3 credentials. Conflicts are not retried. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Most tools target distinct actions and resources (drawings, collections, elements, images), and selection behavior is documented. However, get_drawing, get_drawing_summary, and get_selected_drawing require careful reading to distinguish, and find_elements versus inspect_drawing_element could overlap for some queries.
All names are snake_case and follow a predictable verb_noun pattern such as list_drawings, create_drawing, rename_collection, and delete_collection. Minor naming variation like add_image is still readable and does not break the convention.
At 17 tools, the set is slightly above the ideal 3-15 range but justified by drawing lifecycle, selection state, collection management, structural inspection, and image support. It is not excessive for the apparent domain.
The surface covers drawing CRUD, selection, summary/inspection, atomic operations, element search, collection CRUD/move, and image addition. Minor gaps remain around explicit duplication/export or detailed collection inspection, but core lifecycle coverage is solid.