Vizdown-MCP
# Clarity-beta
Clarity-beta is an MCP server that converts Markdown files into beautiful diagrams — flowcharts, mind maps, architecture diagrams, ER diagrams, Gantt charts, sequence diagrams, and more. Built with Apple HIG design language.
## Installation
```bash
git clone https://github.com/rutika196/clarity-beta.git
cd clarity-beta
python3 -m venv .venv
source .venv/bin/activate # macOS / Linux
# .venv\Scripts\activate # Windows
pip install -e .
playwright install chromium
```
## IDE Setup
### Cursor
Create or edit `.cursor/mcp.json` in your project root:
```json
{
"mcpServers": {
"clarity-beta": {
"command": "/absolute/path/to/clarity-beta/.venv/bin/python",
"args": ["-m", "src.server"],
"cwd": "/absolute/path/to/clarity-beta"
}
}
}
```
> Replace `/absolute/path/to/clarity-beta` with your actual project path.
### VS Code
Create `.vscode/mcp.json` in your project root:
```json
{
"servers": {
"clarity-beta": {
"command": "/absolute/path/to/clarity-beta/.venv/bin/python",
"args": ["-m", "src.server"],
"cwd": "/absolute/path/to/clarity-beta"
}
}
}
```
> VS Code reads MCP config from `.vscode/mcp.json` — no need to touch `settings.json`.
### IntelliJ IDEA / WebStorm / PyCharm (JetBrains)
JetBrains IDEs (2025.1+) support MCP via the **AI Assistant** plugin.
1. Go to **Settings** → **Tools** → **AI Assistant** → **MCP Servers**.
2. Click **+ Add** and fill in:
| Field | Value |
|-------|-------|
| **Name** | `clarity-beta` |
| **Command** | `/absolute/path/to/clarity-beta/.venv/bin/python` |
| **Arguments** | `-m src.server` |
| **Working Directory** | `/absolute/path/to/clarity-beta` |
Or edit the MCP config file directly at `~/.config/jetbrains/mcp.json`:
```json
{
"mcpServers": {
"clarity-beta": {
"command": "/absolute/path/to/clarity-beta/.venv/bin/python",
"args": ["-m", "src.server"],
"cwd": "/absolute/path/to/clarity-beta"
}
}
}
```
> **Windows users**: replace `.venv/bin/python` with `.venv\\Scripts\\python.exe` and use `\\` in paths.
### Claude Desktop
Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
```json
{
"mcpServers": {
"clarity-beta": {
"command": "/absolute/path/to/clarity-beta/.venv/bin/python",
"args": ["-m", "src.server"],
"cwd": "/absolute/path/to/clarity-beta"
}
}
}
```
## Usage
### As a standalone server (stdio transport)
```bash
source .venv/bin/activate
clarity-beta
# or
python -m src.server
```
### MCP Tools
#### `render_diagram`
Render the first diagram found in a Markdown file or raw text.
| Parameter | Type | Default | Description |
|----------------|--------|-----------|------------------------------------------|
| `file_path` | string | — | Path to a `.md` file |
| `raw_markdown` | string | — | Raw markdown with a diagram block |
| `output_format`| string | `"svg"` | `"svg"`, `"png"`, `"jpeg"`, or `"pdf"` |
| `theme` | string | `"light"` | `"light"` or `"dark"` |
| `look` | string | `"default"`| `"default"` or `"handDrawn"` |
| `scale` | int | `2` | Resolution multiplier for PNG/JPEG |
#### `render_all_diagrams`
Render every diagram block in a file. Same parameters plus `output_dir` to save files.
#### `list_diagrams`
List detected diagram blocks with types and line numbers, without rendering.
## Supported Diagram Types
### Via Mermaid.js (Playwright)
flowchart, sequence, class, ER, state, gantt, gitGraph, pie, timeline, quadrant, sankey, xychart, block-beta, architecture-beta, kanban, journey, C4
### Custom SVG Renderers
- **Mind maps** — balanced horizontal tree with organic Bézier connectors
- **Architecture / service diagrams** — Miro-style auto-layout with icons, step badges, groups
## Examples
See the `examples/` folder — 13 ready-to-render Markdown files:
| File | Diagram Type |
|------|-------------|
| `auth_flow.md` | Flowchart (OAuth 2.0 + MFA) |
| `api_sequence.md` | Sequence diagram |
| `order_states.md` | State diagram |
| `database_schema.md` | ER diagram |
| `class_diagram.md` | Class diagram |
| `project_roadmap.md` | Gantt chart |
| `tech_stack_pie.md` | Pie chart |
| `git_workflow.md` | Git graph |
| `company_timeline.md` | Timeline |
| `user_journey.md` | User journey |
| `system_overview.md` | Mind map (custom SVG) |
| `microservices.md` | Architecture (17 services + groups) |
| `ci_cd_pipeline.md` | Architecture (CI/CD pipeline) |
## Running Tests
```bash
python tests/test_all.py
```
## Dependencies
- `mcp[cli]` — MCP Python SDK
- `playwright` — Headless Chromium for Mermaid rendering and PNG/JPEG export
- `cairosvg` — SVG to PDF conversion
- `Pillow` — Image processing (optional, for JPEG)
TDQS
Scored across 3 tools
The three tools have overlapping purposes that could cause confusion: 'render_all_diagrams' and 'render_diagram' both render diagrams with similar parameters, differing only in whether they process all diagrams or just the first one. 'list_diagrams' is distinct for listing without rendering, but the two render tools have unclear boundaries that might lead to misselection.
All tool names follow a consistent snake_case pattern with clear verb_noun structure: 'list_diagrams', 'render_all_diagrams', and 'render_diagram'. The naming is predictable and readable throughout the set.
Three tools is a reasonable count for a diagram rendering server, allowing for listing and rendering operations. It's slightly thin but covers core functionality without being excessive for the apparent scope.
The tool set covers listing and rendering diagrams with various output options, but there are notable gaps: no tools for updating, deleting, or managing diagram content directly (e.g., editing or validating diagrams), which limits lifecycle coverage for the domain.