D2 Server
FreeNot checkedEnables rendering, validation, formatting, and inspection of D2 diagrams via the Model Context Protocol, using WASM for rendering without requiring the d2 binar
About
Enables rendering, validation, formatting, and inspection of D2 diagrams via the Model Context Protocol, using WASM for rendering without requiring the d2 binary.
README
An MCP (Model Context Protocol) server for the D2 diagram language. Lets LLMs render, validate, and format D2 diagrams without requiring the d2 binary — rendering is powered by the @terrastruct/d2 WASM package.
Tools
| Tool | Description | Requires d2 binary? |
|---|---|---|
d2_render |
Compile and render D2 source to SVG | No |
d2_inspect |
Parse D2 and return a structured text summary of shapes/connections (fast preview, no rendering) | No |
d2_validate |
Check D2 syntax and return errors | No |
d2_format |
Canonically format D2 source code | Yes |
d2_list_themes |
List all available themes with IDs | No |
d2_list_layouts |
List available layout engines | No |
Install the D2 Skill
The repo ships a d2 agent skill that teaches LLMs how to write effective D2 diagrams (syntax, styling, patterns, when to use which layout engine, and how to save output).
Install it via skills.sh:
npx skills add itsjool/d2-mcp
This drops skills/d2/SKILL.md into your agent's skills directory so it's automatically available in any session.
Requirements
- Node.js 18+
d2binary only required ford2_format— install from d2lang.com or setD2_PATHenv var
Install
npm install
npm run build
Usage with Claude Code
Via npx (no install required):
{
"mcpServers": {
"d2": {
"command": "npx",
"args": ["-y", "github:itsjool/d2-mcp"]
}
}
}
Via local build:
{
"mcpServers": {
"d2": {
"command": "node",
"args": ["/path/to/d2-mcp/dist/index.js"]
}
}
}
Then start Claude Code with:
claude --mcp-config /path/to/mcp.json
Development
npm run dev # watch mode with tsx
npm run build # compile TypeScript to dist/
npm start # run compiled server
Notes
- ELK layout is significantly slower than dagre in WASM; prefer dagre unless you specifically need ancestor-to-descendant connections or container sizing
License
MIT
Install D2 Server in Claude Desktop, Claude Code & Cursor
unyly install d2-mcp-serverInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add d2-mcp-server -- npx -y github:ItsJooL/d2-mcpFAQ
Is D2 Server MCP free?
Yes, D2 Server MCP is free — one-click install via Unyly at no cost.
Does D2 Server need an API key?
No, D2 Server runs without API keys or environment variables.
Is D2 Server hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install D2 Server in Claude Desktop, Claude Code or Cursor?
Open D2 Server on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare D2 Server with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
