# io.github.debu-sinha/excalidraw

> Security-hardened Excalidraw MCP server with auth, rate limiting, and 14 tools

- name: io.github.debu-sinha/excalidraw
- version: 1.0.2
- connection class: L0 (run_local_package)
- trust: 76/100
- quality: –/100 (not scored)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.debu-sinha%2Fexcalidraw
- tools: https://api.protogrid.dev/v1/servers/io.github.debu-sinha%2Fexcalidraw/tools

**Runs on your machine: something must execute the package.** Only local packages are published (npm, PyPI, OCI, …). The registry never executes them, so tools are unknown until you run it.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "excalidraw": {
      "command": "npx",
      "args": [
        "-y",
        "excalidraw-mcp-server@1.0.2"
      ]
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: n/a
- freshness: 45
- provenance: 80
- drivers: +repository +namespace-matches-repo ~liveness-unmeasured -stale-254d
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality –/100 (not scored)

Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.

### protocol: n/a (weight 25)

- n/a `protocol.modern`, `protocol.stateless`, `protocol.transport`, `protocol.list_ttl`: no remote answered a protocol handshake (not probed yet, unreachable, or local-only)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: n/a (weight 30)

- n/a `tools.descriptions`, `tools.description_length`, `tools.schemas`, `tools.annotations`, `tools.directory_hints`, `tools.token_cost`, `tools.api_dump`: tool list unknown (behind auth, not probed, or empty)

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool list unknown

### dependencies: 33 (weight 15)

- fail `deps.known_vulns`: 8 advisories to act on (malicious, or rated high or critical with a fix available): GHSA-r5fr-rjxr-66jc in lodash-es@4.17.21 (indirect, fixed in 4.18.0), GHSA-28wg-ghj8-5hjv in nanoid@3.3.3 (indirect, fixed in 3.3.16), GHSA-2v37-7h3g-55p8 in nanoid@3.3.3 (indirect, fixed in 3.3.18), ...; 35 more of lower severity or without a fix
- fail `deps.mcp_sdk_version`: @modelcontextprotocol/sdk 1.30.1 has 1 known advisory (GHSA-6qxp-vccf-f47h); update @modelcontextprotocol/sdk to 1.31.0 or later
- pass `deps.resolvable`: excalidraw-mcp-server@1.0.2 resolved: 457 packages

- tools: unknown
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.debu-sinha/excalidraw.svg)](https://protogrid.dev/servers/io.github.debu-sinha/excalidraw)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Dependencies

- npm excalidraw-mcp-server@1.0.2: resolved, 456 dependencies, MCP SDK @modelcontextprotocol/sdk 1.30.1
  - GHSA-6qxp-vccf-f47h (high) in `` @modelcontextprotocol/sdk@1.30.1 ``, direct, fixed in `` 1.31.0 ``, advisory summary: "MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server" https://osv.dev/vulnerability/GHSA-6qxp-vccf-f47h
  - GHSA-r5fr-rjxr-66jc (high) in `` lodash-es@4.17.21 ``, indirect, fixed in `` 4.18.0 ``, advisory summary: "lodash vulnerable to Code Injection via \`\_.template\` imports key names" https://osv.dev/vulnerability/GHSA-r5fr-rjxr-66jc
  - GHSA-28wg-ghj8-5hjv (high) in `` nanoid@3.3.3 ``, indirect, fixed in `` 3.3.16 ``, advisory summary: "nanoid: non-secure generators can loop indefinitely with negative size" https://osv.dev/vulnerability/GHSA-28wg-ghj8-5hjv
  - GHSA-28wg-ghj8-5hjv (high) in `` nanoid@4.0.2 ``, indirect, fixed in `` 5.1.16 ``, advisory summary: "nanoid: non-secure generators can loop indefinitely with negative size" https://osv.dev/vulnerability/GHSA-28wg-ghj8-5hjv
  - GHSA-2v37-7h3g-55p8 (high) in `` nanoid@3.3.3 ``, indirect, fixed in `` 3.3.18 ``, advisory summary: "nanoid: custom generators can loop indefinitely when size is zero" https://osv.dev/vulnerability/GHSA-2v37-7h3g-55p8
  - GHSA-2v37-7h3g-55p8 (high) in `` nanoid@4.0.2 ``, indirect, fixed in `` 5.1.6 ``, advisory summary: "nanoid: custom generators can loop indefinitely when size is zero" https://osv.dev/vulnerability/GHSA-2v37-7h3g-55p8
  - GHSA-xwg4-73v4-xw9w (high) in `` nanoid@3.3.3 ``, indirect, fixed in `` 3.3.12 ``, advisory summary: "nanoid: Integer Overflow or Wraparound" https://osv.dev/vulnerability/GHSA-xwg4-73v4-xw9w
  - GHSA-xwg4-73v4-xw9w (high) in `` nanoid@4.0.2 ``, indirect, fixed in `` 5.1.11 ``, advisory summary: "nanoid: Integer Overflow or Wraparound" https://osv.dev/vulnerability/GHSA-xwg4-73v4-xw9w
  - GHSA-68fv-2mgg-jv7q (high) in `` source-map-js@1.2.1 ``, indirect, fixed in `` 1.2.2 ``, advisory summary: "source-map-js allows event-loop denial of service through indexed source-map section offsets" https://osv.dev/vulnerability/GHSA-68fv-2mgg-jv7q
  - GHSA-vfj7-8cjw-p6xm (high) in `` braces@3.0.3 ``, indirect, no fix yet, advisory summary: "braces vulnerable to stack-exhaustion denial of service through deeply nested patterns" https://osv.dev/vulnerability/GHSA-vfj7-8cjw-p6xm
  - GHSA-39q2-94rc-95cp (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.4.0 ``, advisory summary: "DOMPurify's ADD\_TAGS function form bypasses FORBID\_TAGS due to short-circuit evaluation" https://osv.dev/vulnerability/GHSA-39q2-94rc-95cp
  - GHSA-55q2-fjhq-7xh7 (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.4.13 ``, advisory summary: "DOMPurify: IN\_PLACE hook removal leaves a detached subtree executable, causing XSS" https://osv.dev/vulnerability/GHSA-55q2-fjhq-7xh7
  - GHSA-76mc-f452-cxcm (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.4.7 ``, advisory summary: "DOMPurify: Hook mutation of \`data.allowedTags\` / \`data.allowedAttributes\` permanently pollutes \`DEFAULT\_ALLOWED\_TAGS\` / \`DEFAULT\_ALLOWED\_ATTR\`" https://osv.dev/vulnerability/GHSA-76mc-f452-cxcm
  - GHSA-cj63-jhhr-wcxv (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.3.2 ``, advisory summary: "DOMPurify USE\_PROFILES prototype pollution allows event handlers" https://osv.dev/vulnerability/GHSA-cj63-jhhr-wcxv
  - GHSA-cjmm-f4jc-qw8r (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.3.2 ``, advisory summary: "DOMPurify ADD\_ATTR predicate skips URI validation" https://osv.dev/vulnerability/GHSA-cjmm-f4jc-qw8r
  - GHSA-cmwh-pvxp-8882 (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.4.11 ``, advisory summary: "DOMPurify: Permanent \`ALLOWED\_ATTR\` pollution via \`setConfig()\` bypassing the hook clone-guard (incomplete fix of the 3.4.7 hook-pollution patch)" https://osv.dev/vulnerability/GHSA-cmwh-pvxp-8882
  - GHSA-crv5-9vww-q3g8 (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.4.0 ``, advisory summary: "DOMPurify has a SAFE\_FOR\_TEMPLATES bypass in RETURN\_DOM mode" https://osv.dev/vulnerability/GHSA-crv5-9vww-q3g8
  - GHSA-h7mw-gpvr-xq4m (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.4.0 ``, advisory summary: "DOMPurify: FORBID\_TAGS bypassed by function-based ADD\_TAGS predicate (asymmetry with FORBID\_ATTR fix)" https://osv.dev/vulnerability/GHSA-h7mw-gpvr-xq4m
  - GHSA-h8r8-wccr-v5f2 (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.3.2 ``, advisory summary: "DOMPurify is vulnerable to mutation-XSS via Re-Contextualization" https://osv.dev/vulnerability/GHSA-h8r8-wccr-v5f2
  - GHSA-hpcv-96wg-7vj8 (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.4.6 ``, advisory summary: "DOMPurify: Cross-realm IN\_PLACE sanitization leaves executable markup intact via realm-bound \`instanceof\` checks" https://osv.dev/vulnerability/GHSA-hpcv-96wg-7vj8
  - GHSA-r47g-fvhr-h676 (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.4.6 ``, advisory summary: "DOMPurify: IN\_PLACE mode preserves attributes of a clobbered root element, allowing XSS via attacker-controlled root DOM" https://osv.dev/vulnerability/GHSA-r47g-fvhr-h676
  - GHSA-rp9w-3fw7-7cwq (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.4.7 ``, advisory summary: "DOMPurify IN\_PLACE Sanitization Bypass via Attached Shadow Root Inside \<template\>.content" https://osv.dev/vulnerability/GHSA-rp9w-3fw7-7cwq
  - GHSA-v2wj-7wpq-c8vv (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.3.2 ``, advisory summary: "DOMPurify contains a Cross-site Scripting vulnerability" https://osv.dev/vulnerability/GHSA-v2wj-7wpq-c8vv
  - GHSA-v8jm-5vwx-cfxm (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.2.7 ``, advisory summary: "DOMPurify contains a Cross-site Scripting vulnerability" https://osv.dev/vulnerability/GHSA-v8jm-5vwx-cfxm
  - GHSA-v9jr-rg53-9pgp (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.4.0 ``, advisory summary: "DOMPurify: Prototype Pollution to XSS Bypass via CUSTOM\_ELEMENT\_HANDLING Fallback" https://osv.dev/vulnerability/GHSA-v9jr-rg53-9pgp
  - GHSA-vhxf-7vqr-mrjg (moderate) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.2.4 ``, advisory summary: "DOMPurify allows Cross-site Scripting (XSS)" https://osv.dev/vulnerability/GHSA-vhxf-7vqr-mrjg
  - GHSA-f23m-r3pf-42rh (moderate) in `` lodash-es@4.17.21 ``, indirect, fixed in `` 4.18.0 ``, advisory summary: "lodash vulnerable to Prototype Pollution via array path bypass in \`\_.unset\` and \`\_.omit\`" https://osv.dev/vulnerability/GHSA-f23m-r3pf-42rh
  - GHSA-xxjr-mmjv-4gpg (moderate) in `` lodash-es@4.17.21 ``, indirect, fixed in `` 4.17.23 ``, advisory summary: "Lodash has Prototype Pollution Vulnerability in \`\_.unset\` and \`\_.omit\` functions" https://osv.dev/vulnerability/GHSA-xxjr-mmjv-4gpg
  - GHSA-2v8p-3f2j-5mp7 (moderate) in `` mermaid@10.9.4 ``, indirect, fixed in `` 10.9.8 ``, advisory summary: "Mermaid XY Charts are vulnerable to an infinite loop DoS" https://osv.dev/vulnerability/GHSA-2v8p-3f2j-5mp7
  - GHSA-6m6c-36f7-fhxh (moderate) in `` mermaid@10.9.4 ``, indirect, fixed in `` 10.9.6 ``, advisory summary: "Mermaid Gantt Charts are vulnerable to an Infinite Loop DoS" https://osv.dev/vulnerability/GHSA-6m6c-36f7-fhxh
  - GHSA-6x64-9x62-f2gx (moderate) in `` mermaid@10.9.4 ``, indirect, fixed in `` 10.9.8 ``, advisory summary: "Mermaid allows CSS injection applying to sibling elements of the diagram" https://osv.dev/vulnerability/GHSA-6x64-9x62-f2gx
  - GHSA-87f9-hvmw-gh4p (moderate) in `` mermaid@10.9.4 ``, indirect, fixed in `` 10.9.6 ``, advisory summary: "Mermaid: Improper sanitization of configuration leads to CSS injection" https://osv.dev/vulnerability/GHSA-87f9-hvmw-gh4p
  - GHSA-ghcm-xqfw-q4vr (moderate) in `` mermaid@10.9.4 ``, indirect, fixed in `` 10.9.6 ``, advisory summary: "Mermaid: Improper sanitization of \`classDef\` in state diagrams leads to HTML injection" https://osv.dev/vulnerability/GHSA-ghcm-xqfw-q4vr
  - GHSA-xcj9-5m2h-648r (moderate) in `` mermaid@10.9.4 ``, indirect, fixed in `` 10.9.6 ``, advisory summary: "Mermaid: Improper sanitization of \`classDefs\` in diagrams leads to CSS injection" https://osv.dev/vulnerability/GHSA-xcj9-5m2h-648r
  - GHSA-mwcw-c2x4-8c55 (moderate) in `` nanoid@3.3.3 ``, indirect, fixed in `` 3.3.8 ``, advisory summary: "Predictable results in nanoid generation when given non-integer values" https://osv.dev/vulnerability/GHSA-mwcw-c2x4-8c55
  - GHSA-mwcw-c2x4-8c55 (moderate) in `` nanoid@4.0.2 ``, indirect, fixed in `` 5.0.9 ``, advisory summary: "Predictable results in nanoid generation when given non-integer values" https://osv.dev/vulnerability/GHSA-mwcw-c2x4-8c55
  - GHSA-w5hq-g745-h8pq (moderate) in `` uuid@9.0.1 ``, indirect, fixed in `` 11.1.1 ``, advisory summary: "uuid: Missing buffer bounds check in v3/v5/v6 when buf is provided" https://osv.dev/vulnerability/GHSA-w5hq-g745-h8pq
  - GHSA-6688-9rhm-gjv2 (low) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.4.16 ``, advisory summary: "DOMPurify: IN\_PLACE returns a force-removed rawtext root whose text carries attacker markup — pure HTML reparse executes" https://osv.dev/vulnerability/GHSA-6688-9rhm-gjv2
  - GHSA-c2j3-45gr-mqc4 (low) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.4.12 ``, advisory summary: "DOMPurify: \`CUSTOM\_ELEMENT\_HANDLING\` bypasses \`afterSanitizeElements\` for allowed custom elements." https://osv.dev/vulnerability/GHSA-c2j3-45gr-mqc4
  - GHSA-gvmj-g25r-r7wr (low) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.4.8 ``, advisory summary: "DOMPurify: SAFE\_FOR\_TEMPLATES bypass - template expressions survive sanitization inside \<template\> content when using DOM output modes" https://osv.dev/vulnerability/GHSA-gvmj-g25r-r7wr
  - GHSA-vxr8-fq34-vvx9 (low) in `` dompurify@3.1.6 ``, indirect, fixed in `` 3.4.9 ``, advisory summary: "DOMPurify: Trusted Types policy survives \`clearConfig()\` and can poison later \`RETURN\_TRUSTED\_TYPE\` output" https://osv.dev/vulnerability/GHSA-vxr8-fq34-vvx9
  - GHSA-238p-pmpm-9mq7 (low) in `` katex@0.16.47 ``, indirect, fixed in `` 0.18.2 ``, advisory summary: "KaTeX: Existing prototype pollution can bypass trust restrictions" https://osv.dev/vulnerability/GHSA-238p-pmpm-9mq7
  - GHSA-c4c3-pg64-4m4v (low) in `` mermaid@10.9.4 ``, indirect, fixed in `` 10.9.8 ``, advisory summary: "Mermaid configuration APIs allow prototype pollution" https://osv.dev/vulnerability/GHSA-c4c3-pg64-4m4v
  - GHSA-x4vx-rjvf-j5p4 (low) in `` dompurify@3.1.6 ``, indirect, no fix yet, advisory summary: "DOMPurify: \`IN\_PLACE\` mode trusts attacker-controlled \`nodeName\` on live non-form nodes, allowing script retention and XSS via attacker-supplied DOM objects" https://osv.dev/vulnerability/GHSA-x4vx-rjvf-j5p4

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

_none_

## Packages

- npm excalidraw-mcp-server@1.0.2

## Tools (0)

_none observed_
