← all servers

excalidraw-mcp-server

v1.0.0 · 11 tools · source

[ tools: 11 ][ checks: 11 ][ latency: 5ms ]
69/100(D)
npx -y excalidraw-mcp

check breakdown

Tools exposedServer exposed 11 tools.
• create_element
• update_element
• delete_element
• query_elements
• get_resource
• group_elements
• ungroup_elements
• align_elements
• distribute_elements
• lock_elements
• unlock_elements
Input schemas validAll tools have a valid JSON-Schema input definition.
!Input schema quality51 schema-quality issue(s) across 11 tool(s).
create_element.type: parameter has no description
create_element.x: parameter has no description
create_element.y: parameter has no description
create_element.width: parameter has no description
create_element.height: parameter has no description
create_element.backgroundColor: parameter has no description
create_element.strokeColor: parameter has no description
create_element.strokeWidth: parameter has no description
create_element.roughness: parameter has no description
create_element.opacity: parameter has no description
create_element.text: parameter has no description
create_element.fontSize: parameter has no description
create_element.fontFamily: parameter has no description
create_element: inputSchema.additionalProperties is not set to false (extra args pass through silently)
update_element.id: parameter has no description
update_element.type: parameter has no description
update_element.x: parameter has no description
update_element.y: parameter has no description
update_element.width: parameter has no description
update_element.height: parameter has no description
update_element.backgroundColor: parameter has no description
update_element.strokeColor: parameter has no description
update_element.strokeWidth: parameter has no description
update_element.roughness: parameter has no description
update_element.opacity: parameter has no description
update_element.text: parameter has no description
update_element.fontSize: parameter has no description
update_element.fontFamily: parameter has no description
update_element: inputSchema.additionalProperties is not set to false (extra args pass through silently)
delete_element.id: parameter has no description
delete_element: inputSchema.additionalProperties is not set to false (extra args pass through silently)
query_elements: no "required" array (which params are mandatory?)
query_elements.type: parameter has no description
query_elements.filter: parameter has no description
query_elements: inputSchema.additionalProperties is not set to false (extra args pass through silently)
get_resource.resource: parameter has no description
get_resource: inputSchema.additionalProperties is not set to false (extra args pass through silently)
group_elements.elementIds: parameter has no description
group_elements: inputSchema.additionalProperties is not set to false (extra args pass through silently)
ungroup_elements.groupId: parameter has no description
ungroup_elements: inputSchema.additionalProperties is not set to false (extra args pass through silently)
align_elements.elementIds: parameter has no description
align_elements.alignment: parameter has no description
align_elements: inputSchema.additionalProperties is not set to false (extra args pass through silently)
distribute_elements.elementIds: parameter has no description
distribute_elements.direction: parameter has no description
distribute_elements: inputSchema.additionalProperties is not set to false (extra args pass through silently)
lock_elements.elementIds: parameter has no description
lock_elements: inputSchema.additionalProperties is not set to false (extra args pass through silently)
unlock_elements.elementIds: parameter has no description
unlock_elements: inputSchema.additionalProperties is not set to false (extra args pass through silently)
Declare `required` for every schema that has properties, so agents know which params are mandatory.
Give every property a `description` and a concrete `type` (avoid bare `{}` placeholders).
Set `additionalProperties: false` on the top-level inputSchema so models can't silently pass extra, unvalidated arguments.
!Output schemasNo tools declare an outputSchema.
Optional: declare outputSchema for tools with structured results so agents can validate/parse output reliably.
Duplicate tool namesAll tool names are unique.
Tool namingAll tool names use spec-legal characters.
!Descriptions49 description issue(s) found.
create_element: description adds nothing beyond the tool name ("Create a new Excalidraw element")
create_element.type: parameter has no description
create_element.x: parameter has no description
create_element.y: parameter has no description
create_element.width: parameter has no description
create_element.height: parameter has no description
create_element.backgroundColor: parameter has no description
create_element.strokeColor: parameter has no description
create_element.strokeWidth: parameter has no description
create_element.roughness: parameter has no description
create_element.opacity: parameter has no description
create_element.text: parameter has no description
create_element.fontSize: parameter has no description
create_element.fontFamily: parameter has no description
update_element: description adds nothing beyond the tool name ("Update an existing Excalidraw element")
update_element.id: parameter has no description
update_element.type: parameter has no description
update_element.x: parameter has no description
update_element.y: parameter has no description
update_element.width: parameter has no description
update_element.height: parameter has no description
update_element.backgroundColor: parameter has no description
update_element.strokeColor: parameter has no description
update_element.strokeWidth: parameter has no description
update_element.roughness: parameter has no description
update_element.opacity: parameter has no description
update_element.text: parameter has no description
update_element.fontSize: parameter has no description
update_element.fontFamily: parameter has no description
delete_element: description adds nothing beyond the tool name ("Delete an Excalidraw element")
delete_element.id: parameter has no description
query_elements.type: parameter has no description
query_elements.filter: parameter has no description
get_resource: description adds nothing beyond the tool name ("Get an Excalidraw resource")
get_resource.resource: parameter has no description
group_elements: description adds nothing beyond the tool name ("Group multiple elements together")
group_elements.elementIds: parameter has no description
ungroup_elements: description adds nothing beyond the tool name ("Ungroup a group of elements")
ungroup_elements.groupId: parameter has no description
align_elements: description adds nothing beyond the tool name ("Align elements to a specific position")
align_elements.elementIds: parameter has no description
align_elements.alignment: parameter has no description
distribute_elements: description adds nothing beyond the tool name ("Distribute elements evenly")
distribute_elements.elementIds: parameter has no description
distribute_elements.direction: parameter has no description
lock_elements: description adds nothing beyond the tool name ("Lock elements to prevent modification")
lock_elements.elementIds: parameter has no description
unlock_elements: description adds nothing beyond the tool name ("Unlock elements to allow modification")
unlock_elements.elementIds: parameter has no description
Descriptions are the model's only guide to when/how to call a tool — treat them as prompt engineering.
Describe every tool and every parameter, including units, formats, and constraints.
Each tool's description should say something the name doesn't, and should be unique to that tool.
!Tool annotationsAnnotation coverage 0% (0/55 hint fields set).
• create_element: no annotations at all
• update_element: no annotations at all
• delete_element: no annotations at all
• query_elements: no annotations at all
• get_resource: no annotations at all
• group_elements: no annotations at all
• ungroup_elements: no annotations at all
• align_elements: no annotations at all
• distribute_elements: no annotations at all
• lock_elements: no annotations at all
• unlock_elements: no annotations at all
Add annotations: title, readOnlyHint, destructiveHint, idempotentHint, openWorldHint.
These let clients gate risky calls and give agents/users a friendly display name — optional but valuable.
!Tool titles11 of 11 tool(s) have no title.
• create_element: no top-level title (or annotations.title)
• update_element: no top-level title (or annotations.title)
• delete_element: no top-level title (or annotations.title)
• query_elements: no top-level title (or annotations.title)
• get_resource: no top-level title (or annotations.title)
• group_elements: no top-level title (or annotations.title)
• ungroup_elements: no top-level title (or annotations.title)
• align_elements: no top-level title (or annotations.title)
• distribute_elements: no top-level title (or annotations.title)
• lock_elements: no top-level title (or annotations.title)
• unlock_elements: no top-level title (or annotations.title)
Declare a top-level `title` on each tool — it gives clients a friendly display name distinct from the machine-readable `name`.
`annotations.title` (the older location) is also accepted, but the top-level `title` field is now the spec-preferred place for it.
!Server instructionsNo top-level instructions declared.
Declare instructions to guide agents on when/how to use this server.
Return a non-empty `instructions` string in your InitializeResult — most SDKs let you set this alongside serverInfo.
Handshake + list latencytools/list responded in 5ms.

add the badge

Paste into your README:

[![scoremcp](https://scoremcp.dev/badge/excalidraw-mcp)](https://scoremcp.dev/servers/excalidraw-mcp)
[ scoremcp v0.4.0 ] [ 35 servers indexed ] [ static · side-effect-free ]