mcp-drawdb Server

Interact with drawdb database diagrams in the browser. Open https://drawdb.icen.ai/editor before using.

Documentation

mcp-drawdb

中文文档

MCP server for drawdb — lets AI assistants (Claude Code, Cursor, etc.) directly read and modify database diagrams in your browser.

How It Works

Claude Code  ──stdio──►  npx mcp-drawdb  ──ws──►  Relay (embedded)  ◄──ws──  Browser (drawdb)
  • npx mcp-drawdb starts a WebSocket relay server internally (auto port 23432–23442), then connects as a client. If a relay is already running, it reuses it.
  • drawdb in the browser auto-scans ports 23432–23442 to find the relay, exposes diagram state to tools
  • The relay routes messages between Claude Code and the browser

No separate relay process needed — everything runs inside the MCP bridge.

Quick Start

1. Configure Claude Code

Add to your claude_desktop_config.json or .claude/settings.json:

{
  "mcpServers": {
    "drawdb": {
      "command": "npx",
      "args": ["mcp-drawdb"]
    }
  }
}

2. Open drawdb.icen.ai

Open drawdb.icen.ai in your browser. You'll see a green MCP dot in the header when connected.

Gray dot? The relay may be on a different port. The browser auto-scans 23432–23442, so just wait a moment. You can also click the MCP dot to manually set the WebSocket URL.

3. Done

Claude Code can now read and modify your diagrams. Try:

"List all tables in the diagram"
"Add a users table with id, email, name"
"Create a relationship from users.id to posts.user_id"
"Export SQL for MySQL"

Tools (14)

ToolDescription
pingTest connection to the browser
list_tablesList all tables with fields
get_diagramFull diagram overview: tables, fields, layout (x/y/w/h), relationships, database type
add_tableAdd a table with fields, color, comment
update_tableRename table, add/drop/alter fields with full property control
delete_tableDelete a table (cascades to relationships)
add_relationshipAdd FK with cardinality (1:1, 1:n, n:1, n:m) and constraint rules
delete_relationshipDelete a relationship
set_layoutReposition tables on canvas
set_databaseSwitch database type (mysql, postgresql, sqlite, mariadb, transactsql, oraclesql, generic)
get_issuesValidate diagram: duplicate names, missing PKs, type mismatches, etc.
export_sqlGenerate DDL SQL for the target database
clear_diagramRemove all tables and relationships
undoView last action on the undo stack

Environment Variables

VariableDefaultDescription
RELAY_URL(embedded)Connect to an external relay instead of starting one
PORT23432Starting port for the relay (auto-increments up to 23442)
HOST0.0.0.0Relay listen address
CORS_ORIGIN*CORS origin for the relay HTTP endpoint

Field Properties

When using add_table, update_table, each field supports:

PropertyTypeDescription
namestringColumn name
typestringSQL type (INT, VARCHAR, TEXT, DATETIME, ENUM, ...)
primarybooleanPrimary key
uniquebooleanUnique constraint
nullablebooleanAllow NULL (false = NOT NULL)
incrementbooleanAuto increment
unsignedbooleanUnsigned (numeric types)
default_valuestringDefault value
checkstringCHECK constraint expression
commentstringColumn comment
sizestringType size/precision (e.g. "255" for VARCHAR(255))
valuesstring[]Allowed values for ENUM/SET

FAQ

HTTPS and ws://localhost? All major browsers exempt localhost from mixed content checks. ws://localhost works from https://drawdb.icen.ai without wss://.

Port 23432 is occupied? The relay auto-detects ports 23432–23442. The browser scans all ports automatically, so it will find the relay wherever it is.

Standalone Relay

For advanced setups (Docker, shared server), you can run the relay separately:

npx mcp-drawdb-relay

Then configure the bridge with RELAY_URL:

{
  "mcpServers": {
    "drawdb": {
      "command": "npx",
      "args": ["mcp-drawdb"],
      "env": {
        "RELAY_URL": "ws://your-server:23432"
      }
    }
  }
}

Requirements

  • Node.js >= 18
  • drawdb with MCP integration (browser-side WebSocket client)
  • A running browser tab with drawdb open

License

MIT