Sqemo MCP
Servidor MCP para Sqemo. Los agentes de IA consultan y editan ERDs, generan nombres físicos a partir de la lista de palabras y reglas de nomenclatura de tu equipo, importan/exportan SQL (7 dialectos) y DBML, verifican desviaciones de nomenclatura y comparan el modelo contra una base de datos en vivo. El archivo local .erd.json funciona sin cuenta.
Documentación
sqemo-mcp
Servidor MCP para Sqemo — agentes de IA que siguen el estándar de nombres de base de datos de tu equipo.
Tu agente modela en términos de negocio ("Customer Number"); la columna resulta ser cust_no
porque tu lista de palabras dice customer → cust, number → no (mayúsculas/minúsculas y delimitadores también son
reglas, así que CUST_NO está a un ajuste de distancia). Misma entrada, mismo nombre, en cada
tabla, en cada agente. Las excepciones están permitidas pero marcadas, y un lint CLI detecta desviaciones en CI.
{ "mcpServers": { "sqemo": { "command": "npx", "args": ["-y", "sqemo-mcp"] } } }
Funciona con Claude Code, Claude Desktop, Cursor y cualquier cliente MCP. Los archivos .erd.json locales
no requieren cuenta; los ERD en la nube y las herramientas Pro requieren npx sqemo-mcp login.
Cómo se ve
Modela un foro de discusión donde los miembros publican artículos, una publicación puede ser una respuesta a otra publicación, y los miembros comentan en las publicaciones.
El agente llama a las herramientas con nombres lógicos y nunca escribe un nombre de columna:
upsert_entity { logicalName: "Post" }
// → { physicalName: "POST" }
upsert_attribute { logicalName: "Post Content", domain: "Content" }
// → { physicalName: "POST_CNTS" } // Content → CNTS: from the team word list
upsert_attribute { logicalName: "Delete Flag", domain: "Flag" }
// → { physicalName: "DELETE_YN" } // Flag → YN: same rule in every table
lint_erd
// → naming drift, missing words, referential integrity — before any DDL is written
CNTS y YN no son el gusto del agente. Son las abreviaturas de tu lista de palabras, aplicadas de la
misma manera en que se aplicaron en cada otra tabla que tu equipo ha modelado. Los dominios llevan el tipo de
dato, así que Content es varchar(1000) en todos lados donde aparece.
Recorrido completo con cada llamada a herramienta: Describe el trabajo, obtén un esquema gobernado.
Resumen
Los agentes de IA pueden consultar y editar entidades, relaciones y dominios; generar nombres físicos
a partir de un glosario compartido del equipo; importar/exportar SQL (7 dialectos) y DBML; y comparar el modelo
contra una base de datos en vivo. Funciona tanto con archivos .erd.json locales como con ERD almacenados en la
nube de Sqemo.
- npm:
sqemo-mcp - Registro oficial de MCP:
io.github.sqemo/sqemo - Aplicación web: app.sqemo.com
Requiere Node.js >= 22. Las herramientas de archivos locales funcionan sin cuenta ni configuración. Se necesita iniciar sesión para las herramientas de ERD en la nube y para las herramientas marcadas como (Pro) a continuación.
Instalación
Claude Code (.mcp.json)
{
"mcpServers": {
"sqemo": { "command": "npx", "args": ["-y", "sqemo-mcp"] }
}
}
Claude Desktop
Agrega la misma entrada mcpServers a tu archivo de configuración:
- 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"] }
}
}
Inicio de sesión (ERD en la nube y herramientas Pro)
npx sqemo-mcp login # pick Google, GitHub, or email + password
npx sqemo-mcp logout # removes stored credentials
login pregunta cómo quieres iniciar sesión. Google y GitHub abren una pestaña del navegador, completan un
flujo OAuth PKCE y devuelven la sesión a través de un servidor de bucle local de una sola vez en
127.0.0.1; la tercera opción toma un correo electrónico y una contraseña en la terminal. Solo se
almacena un token de actualización.
- Las credenciales se guardan en
~/.erdmaker/credentials.json(modo 0600 en POSIX); tu contraseña nunca se persiste. - Atajos no interactivos:
--passwordfuerza la ruta de correo electrónico + contraseña,--provider google|githubfuerza una ruta de navegador. - La entrada canalizada omite el menú y va directamente a correo electrónico + contraseña, así que la
automatización existente sigue funcionando:
printf 'email\npassword\n' | npx sqemo-mcp login - Las rutas de navegador necesitan un navegador en la misma máquina (la devolución de llamada regresa a
127.0.0.1). Por SSH o en CI, usa--passwordo las variables de entornoSQEMO_EMAIL/SQEMO_PASSWORD.
Lo que puedes hacer
36 herramientas en total.
Lectura (17 herramientas)
| Herramienta | Descripción |
|---|---|
list_erds / list_workspaces | ERD en la nube y espacios de trabajo a los que perteneces (requiere inicio de sesión) |
get_erd_overview | Nombre, dialecto, estadísticas de entidad/relación/dominio/glosario |
list_entities / get_entity | Lista de entidades y detalle completo (atributos, claves, mapeo lógico/físico) |
list_relationships | Relaciones con extremos y cardinalidad |
list_domains | Definiciones de dominio (también de glosarios estándar del espacio de trabajo) |
search_dictionary | Busca en el glosario del equipo (palabras lógicas/físicas, abreviaturas, sinónimos) |
check_naming | Verifica un nombre lógico contra el estándar de nombres del equipo |
generate_physical_name | Nombre lógico → nombre físico mediante glosario + reglas de nombres |
export_sql | SQL CREATE TABLE — mysql, postgres, cubrid, oracle, sqlserver, sqlite, h2 |
export_dbml | Texto DBML |
validate_erd / lint_erd | Validación estructural y lint completo (desviación de nombres, integridad referencial, duplicados) |
diff_erds | Diferencia dos fuentes (archivos, ERD en la nube o texto SQL/DBML sin procesar) — prueba en seco antes de importar |
export_alter_sql | Script de migración (ALTER) a partir de la diferencia física contra una línea base — los cambios de nombre siguen siendo cambios de nombre mediante IDs estables, los cambios destructivos vienen comentados (Pro) |
list_proposals | Estado de la cola de propuestas de glosario (requiere inicio de sesión) |
Base de datos en vivo (2 herramientas)
Solo lectura contra tu propia base de datos. Ambas consultan únicamente el esquema de información — nunca datos de tablas — y la URL de conexión la usa solo este proceso local, nunca se envía a los servidores de Sqemo.
| Herramienta | Descripción |
|---|---|
introspect_db | Importa un esquema PostgreSQL/MySQL en vivo a un ERD existente (Pro) |
check_db_drift | Verifica una base de datos en vivo o un volcado de esquema contra el modelo físico del ERD — tablas/columnas faltantes o adicionales, discrepancias de PK/FK/NOT NULL (Pro) |
Escritura (17 herramientas)
| Herramienta | Descripción |
|---|---|
create_erd | Nuevo ERD desde cero o desde texto SQL/DBML — a un archivo o a la nube |
upsert_entity / delete_entity | Edición de entidades con derivación automática de nombres físicos |
upsert_attribute / delete_attribute | Edición de atributos — reglas de PK y propagación de FK manejadas automáticamente |
upsert_relationship / delete_relationship | Edición de relaciones con derivación automática de FK |
upsert_domain / delete_domain | Edición de definiciones de dominio |
upsert_dictionary_word / delete_dictionary_word | Edición de glosario (los glosarios vinculados a estándares están protegidos) |
update_naming_rules | Edición de reglas de nombres (delimitador, mayúsculas/minúsculas, manejo de palabras desconocidas) |
import_sql / import_dbml | Reemplaza un ERD desde SQL/DBML analizado (los IDs se conservan) |
auto_layout | Diseño automático de entidades/tablas (dagre) |
propose_dictionary_word / withdraw_proposal | Propone nuevas palabras de glosario para aprobación del propietario |
Las escrituras en la nube requieren permiso de propietario o editor compartido y están protegidas por CAS de versión con fusión automática de 3 vías para ediciones concurrentes.
CLI para pipelines de CI
Subcomandos sin conexión, basados en archivos (sin necesidad de inicio de sesión):
# 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
El modo de desviación compara el modelo contra una base de datos real o un volcado, y sale con 1 cuando no coinciden (Pro, requiere inicio de sesión):
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_*'
Ejemplo de GitHub Actions:
- run: npx sqemo-mcp lint schema.erd.json
- run: npx sqemo-mcp lint schema.erd.json --db "${{ secrets.DATABASE_URL }}"
Variables de entorno
| Variable | Propósito |
|---|---|
SQEMO_EMAIL / SQEMO_PASSWORD | Inicio de sesión no interactivo para CI y sesiones SSH (sin necesidad de navegador) |
ERDMAKER_HOME | Sobrescribe el directorio de credenciales (predeterminado ~/.erdmaker) |
ERDMAKER_SUPABASE_URL | Sobrescribe la URL de la API (predeterminado la nube de Sqemo) |
ERDMAKER_SUPABASE_ANON_KEY | Sobrescribe la clave publicable de la API |
ERDMAKER_MAX_REQUESTS_PER_MINUTE | Límite de solicitudes por minuto (predeterminado 120, 0 lo desactiva) |
ERDMAKER_MAX_REQUESTS_PER_DAY | Límite de solicitudes diarias (predeterminado 10000, 0 lo desactiva) |
Los límites de solicitudes son una red de seguridad contra agentes atrapados en bucles; excederlos
devuelve un error rate_limited que le dice al agente que se detenga y notifique al usuario.
Errores
Todos los errores de herramientas devuelven { code, message } — p. ej. not_authenticated, no_permission,
save_conflict (reintentar después de volver a leer), validation_failed, rate_limited.
Enlaces
- Sqemo — estándares de nombres del equipo + diseño de ERD en el navegador
- Guía de base de datos en vivo — verificaciones de desviación en CI, paso a paso
- Planes — qué herramientas necesitan Pro
- sqemo-mcp en npm
- Comentarios e informes de errores: issues o hello@sqemo.com
