software-design-mermaid-mcp
by wzh4464
README.md
<div align="center">
# ๐จ Mermaid Visual Editor for Claude
**Stop describing diagrams. Start designing them.**
Turn Claude into a visual software design partner with a drag-and-drop Mermaid editor that opens right in your browser.
[](https://github.com/wzh4464/software-design-mermaid-mcp/actions/workflows/test.yml)
[](LICENSE)
[](https://modelcontextprotocol.io)
[](#)
[](#)
[Getting Started](#-getting-started) ยท [Features](#-features) ยท [How It Works](#-how-it-works) ยท [Contributing](#-contributing)
</div>
---
<div align="center">

*Claude generates the diagram, you refine it visually โ drag nodes, edit labels, draw connections, then submit back for the next iteration*
</div>
---
## The Problem
When designing software with Claude, you're stuck in a text-only loop:
```
You: "Add a cache layer between the API and database"
Claude: *regenerates entire Mermaid diagram from scratch*
You: "No, move the cache node to the left..."
Claude: *guesses what you mean, regenerates again*
```
**It's like directing a painter blindfolded.**
## The Solution
This MCP server gives Claude a **visual canvas**. When Claude generates a diagram, it pops open a browser-based editor where you can:
- **Drag nodes** exactly where you want them
- **Edit labels** inline with a double-click
- **Draw connections** between any nodes
- **Rearrange everything** and submit back to Claude
Claude sees your visual changes and continues the conversation with full context. **Design together, visually.**
> **What is MCP?** [Model Context Protocol](https://modelcontextprotocol.io) lets AI assistants use external tools. This server gives Claude the ability to open a visual diagram editor โ no plugins or extensions needed.
---
## โก Getting Started
### Claude Code (recommended)
```bash
git clone https://github.com/wzh4464/software-design-mermaid-mcp.git
cd software-design-mermaid-mcp
npm install && npm run build
claude mcp add software-design-mermaid node $(pwd)/dist/server/index.js
```
Then just ask Claude:
```
> Design a microservice architecture for a todo app
```
Your browser opens automatically with the visual editor. Edit, submit, iterate. โจ
<details>
<summary><b>VS Code + Claude Extension</b></summary>
Add to your VS Code `settings.json`:
```jsonc
{
"claude.mcpServers": {
"software-design-mermaid": {
"command": "node",
"args": ["/absolute/path/to/software-design-mermaid-mcp/dist/server/index.js"]
}
}
}
```
</details>
<details>
<summary><b>Claude Desktop</b></summary>
Add to `claude_desktop_config.json`:
```jsonc
{
"mcpServers": {
"software-design-mermaid": {
"command": "node",
"args": ["/absolute/path/to/software-design-mermaid-mcp/dist/server/index.js"]
}
}
}
```
</details>
<details>
<summary><b>Cursor</b></summary>
Add to your Cursor MCP settings (`.cursor/mcp.json`):
```jsonc
{
"mcpServers": {
"software-design-mermaid": {
"command": "node",
"args": ["/absolute/path/to/software-design-mermaid-mcp/dist/server/index.js"]
}
}
}
```
</details>
<details>
<summary><b>Windsurf / Cline / Other MCP Clients</b></summary>
Any MCP-compatible client can use this server. The configuration pattern is the same:
- **Command**: `node`
- **Args**: `["/absolute/path/to/software-design-mermaid-mcp/dist/server/index.js"]`
- **Transport**: stdio
Refer to your client's documentation for the exact config file location.
</details>
---
## โจ Features
| | Feature | Description |
|---|---------|-------------|
| ๐ฑ๏ธ | **Drag-and-Drop Canvas** | Full React Flow editor with zoom, pan, minimap, grid snapping |
| ๐ท | **5 Shapes ร 3 Edge Types** | Rectangle, rounded, diamond, circle, stadium + arrow, dotted, thick |
| ๐ฆ | **Subgraphs & Auto-Layout** | Group nodes into nested subgraphs; dagre auto-arranges (TD/LR/BT/RL) |
| ๐ | **Live Mermaid Preview** | See Mermaid code update in real-time as you edit |
| ๐ | **Multi-Round Iteration** | Edit โ Submit โ Claude refines โ Edit again. **True visual collaboration.** |
| โช | **Undo / Redo** | Full history with Ctrl+Z / Ctrl+Y |
| โ๏ธ | **Zero Config** | Auto-finds an open port and launches your browser |
<details>
<summary><b>See: Horizontal layout with subgraphs</b></summary>

</details>
---
## ๐งฉ How It Works
```
Claude MCP Server Browser Editor
โ โ โ
โโโ show_diagram() โโโโโโโ>โ โ
โ โโโ starts HTTP server โโโโโ>โ
โ โโโ opens browser โโโโโโโโโโ>โ
โ<โโ { url, success } โโโโโโ โ
โ โ โ
โ โ<โโ polls /api/diagram โโโโโโ
โ โโโ returns diagram โโโโโโโโ>โ
โ โ โ
โ โ user drags nodes, โ
โ โ edits labels, โ
โ โ draws connections โ
โ โ โ
โ โ<โโ POST /api/submission โโโโ
โโโ get_diagram_feedback()>โ โ
โ<โโ updated mermaid code โโ โ
โ โ โ
โโโ show_diagram() โโโโโโโ>โ (Claude sends new version)โ
โ ...iterate... โ โ
```
### MCP Tools
| Tool | What it does |
|------|-------------|
| `show_diagram` | Opens the visual editor with a Mermaid flowchart |
| `get_diagram_feedback` | Gets the user's visual edits back as Mermaid code |
| `close_diagram` | Closes the editor session |
---
## ๐๏ธ Architecture
TypeScript monorepo with npm workspaces:
```
software-design-mermaid-mcp/
โโโ shared/ # Mermaid parser & serializer (bidirectional)
โโโ src/ # MCP server (stdio) + HTTP server (REST API)
โโโ editor/ # React Flow visual editor
โโโ dist/ # Pre-built artifacts
```
- **Parser**: Full Mermaid flowchart syntax โ structured `FlowDiagram` objects
- **Serializer**: `FlowDiagram` โ valid Mermaid code (round-trip safe)
- **Editor**: React 19 + React Flow 12 with custom node/edge renderers
---
## ๐งโ๐ป Development
```bash
npm install # Install all workspace dependencies
npm test # Run all tests (42 tests, 4 suites)
npm run build # Build shared โ server โ editor
npm run dev:editor # Editor dev mode with hot reload
```
---
## ๐ค Contributing
Contributions welcome! Some ideas to get started:
- ๐ **Sequence diagram support** โ extend beyond flowcharts
- ๐จ **Theme customization** โ dark/light modes, color schemes
- ๐ธ **Export options** โ PNG, SVG, PDF export from the editor
- ๐ฅ **Collaborative editing** โ multiple users on the same diagram
- ๐ถ **More node shapes** โ hexagon, parallelogram, trapezoid
Please open an issue first to discuss what you'd like to change.
---
## ๐ License
[MIT](LICENSE) โ use it however you want.
---
<div align="center">
**If this saves you time designing software, consider giving it a โญ**
Made with [React Flow](https://reactflow.dev) ยท [MCP SDK](https://modelcontextprotocol.io) ยท [dagre](https://github.com/dagrejs/dagre)
</div>
This server cannot be deployed
Maintenance
ActivityNo data
ResponsivenessNo issues