Skip to main content
Glama

sqemo-mcp

MCP server for Sqemo — design ERDs with your team's naming standards.

AI agents can query and edit entities, relationships, and domains; generate physical names from a shared team glossary; import/export SQL (7 dialects) and DBML; and compare the model against a live database. Works with both local .erd.json files and ERDs stored on the Sqemo cloud.

Requires Node.js >= 22. Local-file tools work without any account or configuration. Login is needed for cloud ERD tools, and for the tools marked (Pro) below.

Installation

Claude Code (.mcp.json)

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

Claude Desktop

Add the same mcpServers entry to your config file:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Cursor (.cursor/mcp.json)

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

Related MCP server: Datris MCP Server

Login (cloud ERDs and Pro tools)

npx sqemo-mcp login    # pick Google, GitHub, or email + password
npx sqemo-mcp logout   # removes stored credentials

login asks how you want to sign in. Google and GitHub open a browser tab, complete a PKCE OAuth flow, and hand the session back through a one-shot loopback server on 127.0.0.1; the third option takes an email and password in the terminal. Only a refresh token is ever stored.

  • Credentials are stored in ~/.erdmaker/credentials.json (mode 0600 on POSIX); your password is never persisted.

  • Non-interactive shortcuts: --password forces the email + password path, --provider google|github forces a browser path.

  • Piped input skips the menu and goes straight to email + password, so existing automation keeps working: printf 'email\npassword\n' | npx sqemo-mcp login

  • The browser paths need a browser on the same machine (the callback returns to 127.0.0.1). Over SSH or in CI, use --password or the SQEMO_EMAIL / SQEMO_PASSWORD environment variables.

What you can do

36 tools in total.

Read (17 tools)

Tool

Description

list_erds / list_workspaces

Cloud ERDs and workspaces you belong to (login required)

get_erd_overview

Name, dialect, entity/relationship/domain/glossary stats

list_entities / get_entity

Entity list and full detail (attributes, keys, logical/physical mapping)

list_relationships

Relationships with endpoints and cardinality

list_domains

Domain definitions (also from workspace standard glossaries)

search_dictionary

Search the team glossary (logical/physical words, abbreviations, synonyms)

check_naming

Check a logical name against the team naming standard

generate_physical_name

Logical name → physical name via glossary + naming rules

export_sql

CREATE TABLE SQL — mysql, postgres, cubrid, oracle, sqlserver, sqlite, h2

export_dbml

DBML text

validate_erd / lint_erd

Structural validation and full lint (naming drift, referential integrity, duplicates)

diff_erds

Diff two sources (files, cloud ERDs, or raw SQL/DBML text) — dry-run before imports

export_alter_sql

Migration (ALTER) script from the physical diff against a baseline — renames stay renames via stable IDs, destructive changes come commented out (Pro)

list_proposals

Glossary proposal queue status (login required)

Live database (2 tools)

Read-only against your own database. Both query only the information schema — never table data — and the connection URL is used by this local process only, never sent to Sqemo servers.

Tool

Description

introspect_db

Import a live PostgreSQL/MySQL schema into an existing ERD (Pro)

check_db_drift

Check a live database or a schema dump against the ERD's physical model — missing/extra tables and columns, PK/FK/NOT NULL mismatches (Pro)

Write (17 tools)

Tool

Description

create_erd

New ERD from scratch or from SQL/DBML text — to a file or the cloud

upsert_entity / delete_entity

Entity editing with automatic physical-name derivation

upsert_attribute / delete_attribute

Attribute editing — PK rules and FK propagation handled automatically

upsert_relationship / delete_relationship

Relationship editing with automatic FK derivation

upsert_domain / delete_domain

Domain definition editing

upsert_dictionary_word / delete_dictionary_word

Glossary editing (standard-linked glossaries are protected)

update_naming_rules

Naming rule editing (delimiter, case, unknown-word handling)

import_sql / import_dbml

Replace an ERD from parsed SQL/DBML (IDs preserved)

auto_layout

Automatic entity/table layout (dagre)

propose_dictionary_word / withdraw_proposal

Propose new glossary words for owner approval

Cloud writes require owner or shared-editor permission and are protected by version CAS with 3-way auto-merge for concurrent edits.

CLI for CI pipelines

Offline, file-based subcommands (no login needed):

# Naming-standard check — exits 1 on violations, great as a CI gate
npx sqemo-mcp lint schema.erd.json

# Schema export to stdout
npx sqemo-mcp export schema.erd.json --format sql --dialect postgres > schema.sql
npx sqemo-mcp export schema.erd.json --format dbml > schema.dbml

Drift mode compares the model against a real database or a dump, and exits 1 when they disagree (Pro, requires login):

npx sqemo-mcp lint schema.erd.json --db "$DATABASE_URL" [--db-schema public] [--strict]
npx sqemo-mcp lint schema.erd.json --schema dump.sql --dialect postgres
npx sqemo-mcp lint --erd <cloud-erd-id> --db "$DATABASE_URL" --ignore 'tmp_*'

GitHub Actions example:

- run: npx sqemo-mcp lint schema.erd.json
- run: npx sqemo-mcp lint schema.erd.json --db "${{ secrets.DATABASE_URL }}"

Environment variables

Variable

Purpose

SQEMO_EMAIL / SQEMO_PASSWORD

Non-interactive login for CI and SSH sessions (no browser needed)

ERDMAKER_HOME

Override the credentials directory (default ~/.erdmaker)

ERDMAKER_SUPABASE_URL

Override the API URL (defaults to the Sqemo cloud)

ERDMAKER_SUPABASE_ANON_KEY

Override the API publishable key

ERDMAKER_MAX_REQUESTS_PER_MINUTE

Per-minute request cap (default 120, 0 disables)

ERDMAKER_MAX_REQUESTS_PER_DAY

Daily request cap (default 10000, 0 disables)

The request caps are a safety net against agents stuck in loops; exceeding them returns a rate_limited error that tells the agent to stop and notify the user.

Errors

All tool errors return { code, message } — e.g. not_authenticated, no_permission, save_conflict (retry after re-reading), validation_failed, rate_limited.

License

MIT

Install Server
A
license - permissive license
B
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    SQL Server MCP server with AST-based query validation, read-only safety, schema exploration, ER diagram generation, and DBA toolkit integration (First Responder Kit, DarlingData, sp_WhoIsActive).
    12
    5
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server with 32 tools for ETL ingestion, AI-generated data quality rules, AI transformations, vector search, and natural-language SQL. Works across Postgres, MongoDB, Kafka, S3/MinIO, HashiCorp Vault, and five vector stores (Qdrant, Weaviate, Milvus, Chroma, pgvector).
    12
    AGPL 3.0

View all related MCP servers

Related MCP Connectors

  • MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.

  • MCP server for managing Prisma Postgres.

  • Monitor MCP servers, API contracts and AI outputs for schema drift. Alerts on breaking changes.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sqemo/sqemo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server