关于 sqemo
sqemo-mcp 让 AI Agent 和数据库团队按共享命名规范设计 ERD。它支持本地文件与云端 ERD、模式导入导出,以及依据命名规则或实时数据库进行校验。
主要功能
- 01查询和编辑实体及关系
- 02根据团队词汇表生成物理名称
- 03导入和导出 SQL 与 DBML
- 04校验并检查 ERD 模型
- 05将模型与实时数据库模式比较
- 06通过命令行离线检查和导出
适用场景
- 01按团队命名规则设计模式
- 02导入前审查 ERD 变更
- 03从模型导出 SQL 或 DBML
- 04在 CI 中发现命名偏差
- 05将 ERD 与数据库模式比较
MCP 相关
MCP 服务提供读取和编辑 ERD、应用团队命名规范以及导入导出 SQL 和 DBML 的工具。本地 `.erd.json` 文件无需账户;云端 ERD 和 Pro 工具需要登录。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
39收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| source | any | 是 | 目标 ERD——本地文件({file})或服务器 ERD({erdId})二选一 |
详细介绍
sqemo-mcp
适用于 Sqemo 的 MCP 服务 — 遵循团队数据库命名规范的 AI Agent。
Agent 使用业务术语建模("Customer Number");根据你们的词表,列名会生成为 cust_no
,因为 customer → cust、number → no(大小写和分隔符也是规则,
因此只需一项设置就能改为 CUST_NO)。相同的输入,在每张
表、每个 Agent 中都会得到相同的名称。允许覆盖,但会标记出来;CLI lint 会在 CI 中检查偏差。
{ "mcpServers": { "sqemo": { "command": "npx", "args": ["-y", "sqemo-mcp"] } } }
适用于 Claude Code、Claude Desktop、Cursor 以及任何 MCP 客户端。本地 .erd.json 文件
无需账号;云端 ERD 和 Pro 工具需要运行 npx sqemo-mcp login。
效果展示
为讨论区建模:成员可以发布文章,帖子可以回复其他 帖子,成员也可以对帖子发表评论。
Agent 使用逻辑名称调用工具,从不输入列名:
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 和 YN 并非 Agent 自己的偏好,而是词表中的缩写,以
团队其他每张模型表中相同的方式应用。域决定数据
类型,因此 Content 无论出现在哪里,都是 varchar(1000)。
查看包含每次工具调用的完整演示:描述工作,获取符合规范的架构。
概述
AI Agent 可以查询和编辑实体、关系与域;根据团队共享词汇表生成物理名称;导入/导出 SQL(7 种方言)和 DBML;并将模型与实时数据库进行比较。支持本地 .erd.json 文件以及存储在
Sqemo 云端的 ERD。
- npm:
sqemo-mcp - 官方 MCP Registry:
io.github.sqemo/sqemo - Web 应用:app.sqemo.com
需要 Node.js >= 22。本地文件工具无需任何账号或配置。 云端 ERD 工具以及下方标记为 (Pro) 的工具需要登录。
安装
Claude Code(.mcp.json)
{
"mcpServers": {
"sqemo": { "command": "npx", "args": ["-y", "sqemo-mcp"] }
}
}
Claude Desktop
将相同的 mcpServers 条目添加到配置文件中:
- 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"] }
}
}
登录(云端 ERD 和 Pro 工具)
npx sqemo-mcp login # pick Google, GitHub, or email + password
npx sqemo-mcp logout # removes stored credentials
login 会询问你想要如何登录。使用 Google 和 GitHub 时,会打开浏览器标签页,完成
PKCE OAuth 流程,并通过 127.0.0.1 上的一次性回环服务器返回会话;第三种选项则是在终端中输入电子邮件和密码。只会存储刷新令牌。
- 凭据存储在
~/.erdmaker/credentials.json中(POSIX 系统上权限为 0600); 不会保存你的密码。 - 非交互式快捷方式:
--password强制使用电子邮件 + 密码方式,--provider google|github强制使用浏览器方式。 - 管道输入会跳过菜单,直接进入电子邮件 + 密码方式,因此现有
自动化仍可正常工作:
printf 'email\npassword\n' | npx sqemo-mcp login - 浏览器方式需要在同一台机器上运行浏览器(回调会返回到
127.0.0.1)。通过 SSH 或在 CI 中运行时,请使用--password或SQEMO_EMAIL/SQEMO_PASSWORD环境变量。
可以做什么
共 36 个工具。
读取(17 个工具)
| 工具 | 描述 |
|---|---|
list_erds / list_workspaces | 你所属的云端 ERD 和工作区(需要登录) |
get_erd_overview | 名称、方言、实体/关系/领域/术语表统计信息 |
list_entities / get_entity | 实体列表和完整详情(属性、键、逻辑/物理映射) |
list_relationships | 关系及其端点和基数 |
list_domains | 领域定义(也包括工作区标准术语表中的内容) |
search_dictionary | 搜索团队术语表(逻辑/物理词语、缩写、同义词) |
check_naming | 根据团队命名规范检查逻辑名称 |
generate_physical_name | 根据术语表和命名规则,将逻辑名称转换为物理名称 |
export_sql | CREATE TABLE SQL — mysql、postgres、cubrid、oracle、sqlserver、sqlite、h2 |
export_dbml | DBML 文本 |
validate_erd / lint_erd | 结构验证和完整 lint 检查(命名偏差、参照完整性、重复项) |
diff_erds | 对比两个来源(文件、云端 ERD 或原始 SQL/DBML 文本)——导入前进行试运行 |
export_alter_sql | 根据与基线的物理差异生成迁移(ALTER)脚本——重命名通过稳定 ID 保持为重命名,破坏性更改会注释掉(Pro) |
list_proposals | 术语表提案队列状态(需要登录) |
实时数据库(2 个工具)
对你自己的数据库进行只读操作。两个工具都只查询信息架构—— 绝不读取表数据;连接 URL 仅由此本地进程使用, 绝不会发送到 Sqemo 服务器。
| 工具 | 描述 |
|---|---|
introspect_db | 将实时 PostgreSQL/MySQL 架构导入现有 ERD(Pro) |
check_db_drift | 根据 ERD 的物理模型检查实时数据库或架构转储——检查缺失/多余的表和列,以及 PK/FK/NOT NULL 不匹配(Pro) |
写入(17 个工具)
| 工具 | 描述 |
|---|---|
create_erd | 从头创建 ERD,或根据 SQL/DBML 文本创建——保存到文件或云端 |
upsert_entity / delete_entity | 编辑实体并自动推导物理名称 |
upsert_attribute / delete_attribute | 编辑属性——自动处理 PK 规则和 FK 传播 |
upsert_relationship / delete_relationship | 编辑关系并自动推导 FK |
upsert_domain / delete_domain | 编辑领域定义 |
upsert_dictionary_word / delete_dictionary_word | 编辑术语表(受标准术语表关联保护) |
update_naming_rules | 编辑命名规则(分隔符、大小写、未知词处理方式) |
import_sql / import_dbml | 根据解析后的 SQL/DBML 替换 ERD(保留 ID) |
auto_layout | 自动排列实体/表(dagre) |
propose_dictionary_word / withdraw_proposal | 提交新的术语表词条,供所有者审批 |
云端写入需要所有者或共享编辑者权限,并通过版本 CAS 保护,支持并发编辑时的三方自动合并。
面向 CI 流水线的 CLI
离线、基于文件的子命令(无需登录):
# 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
漂移模式会将模型与真实数据库或转储进行比较;如果两者不一致,则退出代码为 1(Pro,需要登录):
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 示例:
- run: npx sqemo-mcp lint schema.erd.json
- run: npx sqemo-mcp lint schema.erd.json --db "${{ secrets.DATABASE_URL }}"
环境变量
| 变量 | 用途 |
|---|---|
SQEMO_EMAIL / SQEMO_PASSWORD | 用于 CI 和 SSH 会话的非交互式登录(无需浏览器) |
ERDMAKER_HOME | 覆盖凭据目录(默认 ~/.erdmaker) |
ERDMAKER_SUPABASE_URL | 覆盖 API URL(默认使用 Sqemo 云服务) |
ERDMAKER_SUPABASE_ANON_KEY | 覆盖 API 可发布密钥 |
ERDMAKER_MAX_REQUESTS_PER_MINUTE | 每分钟请求上限(默认 120,0 表示禁用) |
ERDMAKER_MAX_REQUESTS_PER_DAY | 每日请求上限(默认 10000,0 表示禁用) |
请求上限可防止 Agent 陷入循环;超出上限时会返回 rate_limited 错误,提示 Agent 停止并通知用户。
错误
所有工具错误都会返回 { code, message },例如 not_authenticated、no_permission、save_conflict(重新读取后重试)、validation_failed、rate_limited。
链接
- Sqemo — 团队命名规范和浏览器内 ERD 设计
- 实时数据库指南 — 分步介绍 CI 中的漂移检查
- 套餐 — 了解哪些工具需要 Pro
- npm 上的 sqemo-mcp
- 反馈和错误报告:issues 或 [email protected]
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
