Excalidraw MCP connector
Bearer TokenDesignCollaborationProductivityExcalidraw+ is a collaborative whiteboard and diagramming platform. The Excalidraw MCP server lets AI agents manage scenes, collections, workspaces...
Excalidraw MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Make your first call
Section titled “Make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'excalidrawmcp'const identifier = 'user_123'// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'excalidrawmcp_get_workspace',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "excalidrawmcp"identifier = "user_123"# Make your first callresult = actions.execute_tool(tool_input={},tool_name="excalidrawmcp_get_workspace",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Update workspace user, workspace, scene — Modify workspace-level properties for a specific user such as their name, picture, or role
- Screenshot take — Render a scene, or a specific frame, as a PNG image so you can visually inspect the current Excalidraw content
- Search scene content — Search a scene’s shapes and text without loading the full scene content
- User remove workspace — Remove a user from the workspace
- Read excalidraw format — Returns the Excalidraw element format reference with agent-facing rules for constructing valid diagram payloads
- List workspace users, scenes, logs — Retrieve a paginated list of all members in the current workspace
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
excalidrawmcp_create_collection#Create a new collection in the workspace to organize scenes.1 param
Create a new collection in the workspace to organize scenes.
namestringrequiredName of the new collection.excalidrawmcp_create_collection_scene#Create a new scene within a specific collection.3 params
Create a new scene within a specific collection.
collectionIdstringrequiredThe unique identifier of the collection in which to create the scene.namestringrequiredName of the new scene.pinnedbooleanrequiredWhether to pin the scene to the top of the scene list.excalidrawmcp_create_email_invite#Create a workspace invite for a specific email address.2 params
Create a workspace invite for a specific email address.
emailstringrequiredEmail address to invite to the workspace.rolestringrequiredRole to assign to the invited user.excalidrawmcp_create_invite_link#Create a reusable workspace invite link with optional usage and domain restrictions.3 params
Create a reusable workspace invite link with optional usage and domain restrictions.
rolestringrequiredRole to assign to users who accept the invite link.maxUsesstringoptionalMaximum number of times the link can be used. Use 'unlimited' for no limit.restrictedDomainsarrayoptionalList of email domains allowed to use this invite link.excalidrawmcp_create_scene#Create a new scene in the workspace within a specified collection.3 params
Create a new scene in the workspace within a specified collection.
collectionIdstringrequiredID of the collection to place the new scene in.namestringrequiredName for the new scene.pinnedbooleanrequiredWhether to pin the scene to the top of the scene list.excalidrawmcp_delete_collection#Soft-delete a collection by moving it to trash. Scenes within the collection are not deleted.1 param
Soft-delete a collection by moving it to trash. Scenes within the collection are not deleted.
collectionIdstringrequiredThe unique identifier of the collection to delete.excalidrawmcp_delete_invite#Cancel and delete a pending workspace invitation.1 param
Cancel and delete a pending workspace invitation.
inviteIdstringrequiredThe unique identifier of the workspace invitation to cancel and delete.excalidrawmcp_edit_scene_content#Add, update, and delete scene elements using valid Excalidraw element format. Before first use, call read_excalidraw_format. Do not include ids in add. Use tempId for same-request references. Bind arrows explicitly with startBinding/endBinding.4 params
Add, update, and delete scene elements using valid Excalidraw element format. Before first use, call read_excalidraw_format. Do not include ids in add. Use tempId for same-request references. Bind arrows explicitly with startBinding/endBinding.
sceneIdstringrequiredID of the scene to edit.addstringoptionalJSON array string of new Excalidraw element skeletons to add. Do not include 'id'. Use tempId for same-request references.deletearrayoptionalArray of element IDs to remove from the scene.updatestringoptionalJSON array string of element patches; each patch must include 'id' and the properties to change.excalidrawmcp_get_collection#Retrieve detailed information about a specific collection by its ID.1 param
Retrieve detailed information about a specific collection by its ID.
collectionIdstringrequiredThe unique identifier of the collection to retrieve.excalidrawmcp_get_invite#Retrieve details for a specific workspace invitation by its ID.1 param
Retrieve details for a specific workspace invitation by its ID.
inviteIdstringrequiredThe unique identifier of the workspace invitation to retrieve.excalidrawmcp_get_scene#Retrieve metadata for a specific scene by its ID.1 param
Retrieve metadata for a specific scene by its ID.
sceneIdstringrequiredThe unique identifier of the scene to retrieve.excalidrawmcp_get_scene_content#Retrieve the complete content of a scene including all drawing elements and files. Use search_scene_content first if you only need to locate specific elements.1 param
Retrieve the complete content of a scene including all drawing elements and files. Use search_scene_content first if you only need to locate specific elements.
sceneIdstringrequiredThe unique identifier of the scene whose full content to retrieve.excalidrawmcp_get_workspace#Retrieve workspace configuration and metadata for the current workspace.0 params
Retrieve workspace configuration and metadata for the current workspace.
excalidrawmcp_get_workspace_user#Retrieve details for a specific workspace member by their user ID.1 param
Retrieve details for a specific workspace member by their user ID.
userIdstringrequiredThe unique identifier of the workspace user to retrieve.excalidrawmcp_list_collection_scenes#Retrieve a paginated list of all scenes that belong to a specific collection.3 params
Retrieve a paginated list of all scenes that belong to a specific collection.
collectionIdstringrequiredThe unique identifier of the collection whose scenes to list.limitintegeroptionalMaximum number of scenes to return per page (1-100).offsetintegeroptionalNumber of items to skip before starting to collect results.excalidrawmcp_list_collections#Retrieve a paginated list of all collections in the workspace.2 params
Retrieve a paginated list of all collections in the workspace.
limitintegeroptionalMaximum number of collections to return per page (1-100).offsetintegeroptionalNumber of items to skip before starting to collect results.excalidrawmcp_list_invites#Retrieve a paginated list of pending workspace invitations.2 params
Retrieve a paginated list of pending workspace invitations.
limitintegeroptionalMaximum number of invitations to return per page (1-100).offsetintegeroptionalNumber of items to skip before starting to collect results.excalidrawmcp_list_logs#Retrieve a paginated list of workspace activity and audit logs with filtering by user, action, operation, and date range.9 params
Retrieve a paginated list of workspace activity and audit logs with filtering by user, action, operation, and date range.
actionstringoptionalFilter logs by a specific action type.cursorstringoptionalSequence number for cursor-based pagination.dateFromstringoptionalISO 8601 date filter start (inclusive).dateTostringoptionalISO 8601 date filter end (inclusive).limitintegeroptionalMaximum number of log entries to return per page (1-100).offsetintegeroptionalNumber of items to skip before starting to collect results.operationstringoptionalFilter logs by operation type (create, read, update, or delete).pagestringoptionalPage number for offset-based pagination.userstringoptionalFilter logs by a specific user ID.excalidrawmcp_list_scenes#Retrieve a paginated list of all scenes in the workspace with their metadata.3 params
Retrieve a paginated list of all scenes in the workspace with their metadata.
collectionIdstringoptionalFilter scenes by a specific collection ID.limitintegeroptionalMaximum number of scenes to return per page (1-100).offsetintegeroptionalNumber of items to skip before starting to collect results.excalidrawmcp_list_workspace_users#Retrieve a paginated list of all members in the current workspace.2 params
Retrieve a paginated list of all members in the current workspace.
limitintegeroptionalMaximum number of workspace users to return per page (1-100).offsetintegeroptionalNumber of items to skip before starting to collect results.excalidrawmcp_read_excalidraw_format#Returns the Excalidraw element format reference with agent-facing rules for constructing valid diagram payloads. Call this before edit_scene_content if unfamiliar with the format.0 params
Returns the Excalidraw element format reference with agent-facing rules for constructing valid diagram payloads. Call this before edit_scene_content if unfamiliar with the format.
excalidrawmcp_remove_workspace_user#Remove a user from the workspace. This does not delete their Excalidraw+ account.1 param
Remove a user from the workspace. This does not delete their Excalidraw+ account.
userIdstringrequiredThe unique identifier of the workspace user to remove.excalidrawmcp_search_scene_content#Search a scene's shapes and text without loading the full scene content. Returns matching Excalidraw element nodes filtered by type, frame, and text query.7 params
Search a scene's shapes and text without loading the full scene content. Returns matching Excalidraw element nodes filtered by type, frame, and text query.
sceneIdstringrequiredID of the scene to search within.frameIdstringoptionalLimit search to elements inside this frame.includeDeletedbooleanoptionalWhether to include soft-deleted elements in results.limitintegeroptionalMaximum number of matching elements to return (1-100, default 25).matchModestringoptionalHow the query string is matched against element text.querystringoptionalText query to match against shape labels and text content.typesarrayoptionalElement types to filter by.excalidrawmcp_take_screenshot#Render a scene, or a specific frame, as a PNG image so you can visually inspect the current Excalidraw content. Use this after editing scene content to verify layout and visual correctness.4 params
Render a scene, or a specific frame, as a PNG image so you can visually inspect the current Excalidraw content. Use this after editing scene content to verify layout and visual correctness.
sceneIdstringrequiredID of the scene to render.frameIdstringoptionalOptional frame ID to render. If omitted, the full scene is rendered.maxWidthintegeroptionalMaximum output PNG width in pixels. Screenshots are capped at 1920x1080.paddingintegeroptionalPadding around the rendered scene or frame in scene pixels. Default: 20.excalidrawmcp_update_collection#Update the name of an existing collection.2 params
Update the name of an existing collection.
collectionIdstringrequiredThe unique identifier of the collection to update.namestringrequiredNew name for the collection.excalidrawmcp_update_invite#Modify the settings of an existing workspace invitation such as the email, role, or max uses.4 params
Modify the settings of an existing workspace invitation such as the email, role, or max uses.
inviteIdstringrequiredThe unique identifier of the workspace invitation to update.emailstringoptionalUpdated email address for the invitation.maxUsesintegeroptionalMaximum number of times this invite link can be used.rolestringoptionalThe workspace role to assign to the invitee upon acceptance.excalidrawmcp_update_scene#Update metadata fields of an existing scene such as its name, pinned status, or collection.4 params
Update metadata fields of an existing scene such as its name, pinned status, or collection.
sceneIdstringrequiredThe unique identifier of the scene to update.collectionIdstringoptionalNew collection ID to move the scene to.namestringoptionalNew name for the scene.pinnedbooleanoptionalWhether the scene should be pinned to the top of the scene list.excalidrawmcp_update_workspace#Modify workspace-level settings such as name and picture.2 params
Modify workspace-level settings such as name and picture.
namestringoptionalNew name for the workspace.picturestringoptionalURI for the workspace picture, or null to remove the current picture.excalidrawmcp_update_workspace_user#Modify workspace-level properties for a specific user such as their name, picture, or role.4 params
Modify workspace-level properties for a specific user such as their name, picture, or role.
userIdstringrequiredThe unique identifier of the workspace user to update.namestringoptionalUpdated display name for the user.picturestringoptionalURI for the user's picture, or null to remove the current picture.rolestringoptionalThe workspace role to assign to the user.