Atlas / MCP servers / jgraph / Draw.io MCP Server

Draw.io MCP ServerBLOCK

mcp/jgraph/drawio-mcp

Create diagrams in chat, rendered as live interactive draw.io diagrams. 10,000+ searchable shapes.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
7 6r · 1w · 0d
Transport
stdio · streamable-http
License
Apache-2.0
Stars
5,616
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

The official draw.io MCP (Model Context Protocol) server that enables LLMs to create and open diagrams in the draw.io editor.

Four Ways to Create Diagrams

This repository offers four approaches for integrating draw.io with AI assistants. Pick the one that fits your setup:

MCP App Server

The MCP App server renders draw.io diagrams inline in AI chat interfaces using the MCP Apps protocol. Instead of opening a browser tab, diagrams appear directly in the conversation as interactive iframes.

The official hosted endpoint

Read from source at commit fa851ea12103OBSERVED · 2026-10-12
02

Exposed tools (7)

6 read · 1 write · 0 destructive.

ToolRiskDescription
get_pagereadReads one page (diagram) from a local .drawio file and returns its raw mxGraphModel
list_pagesreadLists the pages (diagrams) in a local .drawio file without loading full page content.
open_drawio_csvreadOpens the draw.io editor with a diagram generated from CSV data.
open_drawio_mermaidreadOpens the draw.io editor with a diagram generated from Mermaid.js syntax.
open_drawio_xmlreadOpens the draw.io editor with a diagram from XML content.
search_shapesreadSearch the draw.io shape library by keywords. Returns matching shapes with
set_pagewriteReplaces the content of one page (diagram) in a local .drawio file with new
03

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (5 observation(s))
Network
declared (5 observation(s))
Shell
declared (6 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (15)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
mcp-tool-server/vendor/libavoid/libavoid-node.mjs:16
${l}`;let[v,y]=[p,l];return t=new Function(...v,y)(...n),we(e,t)}for(var je=(e,t)=>{for(var r=[],n=0;n<e;n++)r.push(h[t+4*n>>2]);return r},Ot=e=>{e=e.trim();let t=e.indexOf("(");return t===-1?e:(c(e.e
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
mcp-tool-server/vendor/libavoid/libavoid-node.mjs:20
`),e=new Function(...s,i+`};
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMInventory / provenance · inv.binary · CWE-1104
mcp-tool-server/vendor/libavoid/libavoid.wasm
libavoid.wasm
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
mcp-app-server/src/index.js:12
import { resolveIconServiceUrl } from "../../shared/icon-search.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
mcp-app-server/src/shared.js:11
import { buildTagMap } from "../../shared/shape-search.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
mcp-app-server/src/shared.js:12
import { searchShapesAndIcons, DEFAULT_ICON_SERVICE_URL } from "../../shared/icon-search.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
mcp-app-server/src/shared.js:13
import { withElkLayout, isFlowchartSource } from "../../shared/mermaid-elk.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
mcp-app-server/src/shared.js:14
import { normalizeDiagram } from "../../shared/normalize-model.js";
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
mcp-tool-server/test/shape-index.test.js:58
base = "http://127.0.0.1:" + server.address().port;
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
mcp-app-server/src/worker.js:381
const bytes = Uint8Array.from(atob(faviconBase64), function(c) { return c.charCodeAt(0); });
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
mcp-app-server/package.json
@modelcontextprotocol/ext-apps, @modelcontextprotocol/sdk, express, pako, zod
Why it matters. 5 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
mcp-tool-server/package.json
@modelcontextprotocol/sdk, pako
Why it matters. 2 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
shape-search/package.json
jsdom
Why it matters. 1 dependency range(s) float
Fix. pin exact versions or ship a lockfile
INFOInventory / provenance · inv.oversize · CWE-1104
mcp-app-server/public/demo/drawio-plugin-demo.mp4
mcp-app-server/public/demo/drawio-plugin-demo.mp4
Why it matters. 4642277 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
shape-search/search-index.json
shape-search/search-index.json
Why it matters. 4776086 bytes not read

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha fa851ea12103full audit observations/trust-audit/mcp-server/jgraph__drawio-mcp.json · Report an issue / request a re-scan
04

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-12fa851ea12103BLOCKD69first audit
05

Questions

What is the @drawio/mcp MCP server?

Create diagrams in chat, rendered as live interactive draw.io diagrams. 10,000+ searchable shapes.

What tools does @drawio/mcp expose?

7 in total: 6 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is @drawio/mcp safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does @drawio/mcp need?

No credential environment variables were found in its source, so it appears to need none.

How does @drawio/mcp run?

It speaks stdio and streamable-http, so it runs as a local process your client starts.

How current is this page?

The grade is for one exact copy of the source (fa851ea12103), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement