Sqemo MCP
Servidor MCP para Sqemo. Agentes de IA consultam e editam ERDs, geram nomes físicos a partir da lista de palavras e regras de nomenclatura da sua equipe, importam/exportam SQL (7 dialetos) e DBML, verificam desvios de nomenclatura e comparam o modelo com um banco de dados ativo. O arquivo local .erd.json funciona sem conta.
Documentação
sqemo-mcp
Servidor MCP para Sqemo — agentes de IA que seguem o padrão de nomenclatura de banco de dados da sua equipe.
Seu agente modela em termos de negócio ("Customer Number"); a coluna sai como cust_no
porque sua lista de palavras diz customer → cust, number → no (maiúsculas/minúsculas e delimitadores também são
regras, então CUST_NO está a uma configuração de distância). Mesma entrada, mesmo nome, em
cada tabela, em cada agente. Substituições são permitidas, mas sinalizadas, e um lint via CLI detecta desvios na CI.
{ "mcpServers": { "sqemo": { "command": "npx", "args": ["-y", "sqemo-mcp"] } } }
Funciona com Claude Code, Claude Desktop, Cursor e qualquer cliente MCP. Arquivos .erd.json locais
não exigem conta; ERDs na nuvem e ferramentas Pro exigem npx sqemo-mcp login.
Como funciona
Modele um fórum de discussão onde membros publicam artigos, uma publicação pode ser uma resposta a outra publicação, e membros comentam nas publicações.
O agente chama as ferramentas com nomes lógicos e nunca digita um nome de coluna:
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 e YN não são escolha do agente. São abreviações da sua lista de palavras, aplicadas da
mesma forma que foram aplicadas em todas as outras tabelas que sua equipe modelou. Domínios carregam o tipo
de dado, então Content é varchar(1000) em todos os lugares em que aparece.
Passo a passo completo com cada chamada de ferramenta: Descreva o trabalho, obtenha um esquema governado.
Visão geral
Agentes de IA podem consultar e editar entidades, relacionamentos e domínios; gerar nomes físicos
a partir de um glossário compartilhado da equipe; importar/exportar SQL (7 dialetos) e DBML; e comparar o modelo
com um banco de dados ativo. Funciona com arquivos .erd.json locais e ERDs armazenados na
nuvem Sqemo.
- npm:
sqemo-mcp - Registro oficial MCP:
io.github.sqemo/sqemo - Aplicativo web: app.sqemo.com
Requer Node.js >= 22. Ferramentas de arquivos locais funcionam sem conta ou configuração. Login é necessário para ferramentas de ERD na nuvem e para as ferramentas marcadas como (Pro) abaixo.
Instalação
Claude Code (.mcp.json)
{
"mcpServers": {
"sqemo": { "command": "npx", "args": ["-y", "sqemo-mcp"] }
}
}
Claude Desktop
Adicione a mesma entrada mcpServers ao seu arquivo de configuração:
- 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"] }
}
}
Login (ERDs na nuvem e ferramentas Pro)
npx sqemo-mcp login # pick Google, GitHub, or email + password
npx sqemo-mcp logout # removes stored credentials
login pergunta como você deseja entrar. Google e GitHub abrem uma aba no navegador, completam um
fluxo OAuth PKCE e devolvem a sessão por meio de um servidor loopback de uso único em
127.0.0.1; a terceira opção aceita e-mail e senha no terminal. Apenas um
token de atualização é armazenado.
- As credenciais são armazenadas em
~/.erdmaker/credentials.json(modo 0600 em POSIX); sua senha nunca é persistida. - Atalhos não interativos:
--passwordforça o caminho de e-mail + senha,--provider google|githubforça um caminho via navegador. - Entrada via pipe pula o menu e vai direto para e-mail + senha, então a
automação existente continua funcionando:
printf 'email\npassword\n' | npx sqemo-mcp login - Os caminhos via navegador precisam de um navegador na mesma máquina (o callback retorna para
127.0.0.1). Via SSH ou em CI, use--passwordou as variáveis de ambienteSQEMO_EMAIL/SQEMO_PASSWORD.
O que você pode fazer
36 ferramentas no total.
Leitura (17 ferramentas)
| Ferramenta | Descrição |
|---|---|
list_erds / list_workspaces | ERDs na nuvem e workspaces aos quais você pertence (requer login) |
get_erd_overview | Nome, dialeto, estatísticas de entidade/relacionamento/domínio/glossário |
list_entities / get_entity | Lista de entidades e detalhes completos (atributos, chaves, mapeamento lógico/físico) |
list_relationships | Relacionamentos com endpoints e cardinalidade |
list_domains | Definições de domínio (também de glossários padrão do workspace) |
search_dictionary | Pesquisa no glossário da equipe (palavras lógicas/físicas, abreviações, sinônimos) |
check_naming | Verifica um nome lógico contra o padrão de nomenclatura da equipe |
generate_physical_name | Nome lógico → nome físico via glossário + regras de nomenclatura |
export_sql | SQL CREATE TABLE — mysql, postgres, cubrid, oracle, sqlserver, sqlite, h2 |
export_dbml | Texto DBML |
validate_erd / lint_erd | Validação estrutural e lint completo (desvios de nomenclatura, integridade referencial, duplicatas) |
diff_erds | Diff entre duas fontes (arquivos, ERDs na nuvem ou texto SQL/DBML bruto) — simulação antes de importações |
export_alter_sql | Script de migração (ALTER) a partir do diff físico contra uma linha de base — renomeações permanecem renomeações via IDs estáveis, alterações destrutivas vêm comentadas (Pro) |
list_proposals | Status da fila de propostas de glossário (requer login) |
Banco de dados ativo (2 ferramentas)
Somente leitura no seu próprio banco de dados. Ambas consultam apenas o information schema — nunca dados de tabela — e a URL de conexão é usada apenas por este processo local, nunca enviada aos servidores Sqemo.
| Ferramenta | Descrição |
|---|---|
introspect_db | Importa um esquema PostgreSQL/MySQL ativo para um ERD existente (Pro) |
check_db_drift | Verifica um banco de dados ativo ou um dump de esquema contra o modelo físico do ERD — tabelas/colunas ausentes ou extras, incompatibilidades de PK/FK/NOT NULL (Pro) |
Escrita (17 ferramentas)
| Ferramenta | Descrição |
|---|---|
create_erd | Novo ERD do zero ou a partir de texto SQL/DBML — para um arquivo ou para a nuvem |
upsert_entity / delete_entity | Edição de entidades com derivação automática de nome físico |
upsert_attribute / delete_attribute | Edição de atributos — regras de PK e propagação de FK tratadas automaticamente |
upsert_relationship / delete_relationship | Edição de relacionamentos com derivação automática de FK |
upsert_domain / delete_domain | Edição de definições de domínio |
upsert_dictionary_word / delete_dictionary_word | Edição de glossário (glossários vinculados a padrões são protegidos) |
update_naming_rules | Edição de regras de nomenclatura (delimitador, maiúsculas/minúsculas, tratamento de palavras desconhecidas) |
import_sql / import_dbml | Substitui um ERD a partir de SQL/DBML analisado (IDs preservados) |
auto_layout | Layout automático de entidades/tabelas (dagre) |
propose_dictionary_word / withdraw_proposal | Propõe novas palavras de glossário para aprovação do proprietário |
Escritas na nuvem exigem permissão de proprietário ou editor compartilhado e são protegidas por CAS de versão com auto-merge de 3 vias para edições concorrentes.
CLI para pipelines de CI
Subcomandos offline baseados em arquivos (sem necessidade de login):
# 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
O modo drift compara o modelo com um banco de dados real ou um dump e sai com código 1 quando eles divergem (Pro, requer 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_*'
Exemplo de GitHub Actions:
- run: npx sqemo-mcp lint schema.erd.json
- run: npx sqemo-mcp lint schema.erd.json --db "${{ secrets.DATABASE_URL }}"
Variáveis de ambiente
| Variável | Finalidade |
|---|---|
SQEMO_EMAIL / SQEMO_PASSWORD | Login não interativo para CI e sessões SSH (sem necessidade de navegador) |
ERDMAKER_HOME | Substitui o diretório de credenciais (padrão ~/.erdmaker) |
ERDMAKER_SUPABASE_URL | Substitui a URL da API (padrão: nuvem Sqemo) |
ERDMAKER_SUPABASE_ANON_KEY | Substitui a chave publicável da API |
ERDMAKER_MAX_REQUESTS_PER_MINUTE | Limite de solicitações por minuto (padrão 120, 0 desativa) |
ERDMAKER_MAX_REQUESTS_PER_DAY | Limite diário de solicitações (padrão 10000, 0 desativa) |
Os limites de solicitações são uma rede de segurança contra agentes presos em loops; excedê-los
retorna um erro rate_limited que instrui o agente a parar e notificar o usuário.
Erros
Todos os erros de ferramenta retornam { code, message } — por exemplo, not_authenticated, no_permission,
save_conflict (tente novamente após reler), validation_failed, rate_limited.
Links
- Sqemo — padrões de nomenclatura da equipe + design de ERD no navegador
- Guia de banco de dados ativo — verificações de drift na CI, passo a passo
- Planos — quais ferramentas exigem Pro
- sqemo-mcp no npm
- Feedback e relatórios de bugs: issues ou hello@sqemo.com
