sqemo について
sqemo-mcpは、AIエージェントやデータベースチームが共有命名規則に沿ってERDを設計するためのツールです。ローカルファイルとクラウドERDに対応し、スキーマの入出力や命名規則・稼働中のデータベースとの照合ができます。
主な機能
- 01エンティティとリレーションの照会・編集
- 02チーム用語集から物理名を生成
- 03SQLとDBMLのインポート・エクスポート
- 04ERDモデルの検証とLint
- 05モデルと稼働中のDBスキーマを比較
- 06CLIによるオフラインLintとエクスポート
活用シーン
- 01チームの命名規則に沿ったスキーマ設計
- 02インポート前のERD変更の確認
- 03モデルからSQLまたはDBMLを出力
- 04CIで命名規則からの逸脱を検出
- 05ERDとデータベーススキーマの比較
MCP 対応
MCPサーバーは、ERDの読み取り・編集、チーム命名規則の適用、SQLとDBMLの入出力を行うツールを提供します。ローカルの`.erd.json`ファイルはアカウント不要ですが、クラウドERDとProツールにはログインが必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
39掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| source | any | はい | 対象の ERD — ローカルファイル({file})またはサーバー ERD({erdId})のいずれか一方 |
詳細
sqemo-mcp
Sqemo 用の MCP サーバー — チームのデータベース命名規則に従う AI エージェントを実現します。
エージェントはビジネス用語("Customer Number")でモデル化し、列名は cust_no になります。あなたの単語リストで customer → cust、number → no と定義されているためです(大文字・小文字や区切り文字もルールなので、設定を変えるだけで CUST_NO にできます)。同じ入力なら、どのテーブルでも、どのエージェントでも同じ名前になります。上書きもできますが、その場合はフラグが付けられ、CLI のリンターが CI での不整合を検出します。
{ "mcpServers": { "sqemo": { "command": "npx", "args": ["-y", "sqemo-mcp"] } } }
Claude Code、Claude Desktop、Cursor、およびすべての MCP クライアントで動作します。ローカルの .erd.json ファイルにはアカウントは不要です。クラウド ERD と Pro ツールには npx sqemo-mcp login が必要です。
使用例
メンバーが記事を投稿し、投稿への返信やコメントもできる掲示板をモデル化してください。
エージェントは論理名を使ってツールを呼び出すため、列名を入力することはありません。
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 はエージェントの好みではありません。チームがこれまでにモデル化したすべてのテーブルと同じ方法で適用される、単語リストの略語です。ドメインによってデータ型が決まるため、Content はどこに登場しても varchar(1000) になります。
すべてのツール呼び出しを含む詳しい手順:作業内容を伝えて、統制されたスキーマを取得。
概要
AI エージェントはエンティティ、リレーションシップ、ドメインの照会と編集、共有チーム用語集からの物理名の生成、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 上の一時的なループバックサーバーを介してセッションが戻されます。3 つ目の方法では、ターミナルでメールアドレスとパスワードを入力します。保存されるのはリフレッシュトークンのみです。
- 認証情報は
~/.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 | 構造検証と完全なリンティング(命名規則の不一致、参照整合性、重複) |
diff_erds | 2 つのソースを比較します(ファイル、クラウド 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 | ゼロから、または SQL/DBML テキストから新しい ERD を作成します — ファイルまたはクラウドに保存できます |
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 と 3 者間の自動マージで保護されます。
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 | 1 分あたりのリクエスト上限(デフォルトは 120、0 で無効になります) |
ERDMAKER_MAX_REQUESTS_PER_DAY | 1 日あたりのリクエスト上限(デフォルトは 10000、0 で無効になります) |
リクエスト上限は、エージェントがループに陥った場合の安全策です。上限を超えると、
エージェントに停止してユーザーに知らせるよう指示する rate_limited エラーが返されます。
エラー
すべてのツールエラーは { code, message } を返します。例:not_authenticated、no_permission、
save_conflict(再読み込み後に再試行)、validation_failed、rate_limited。
リンク
- Sqemo — ブラウザーで利用できるチームの命名規則と ERD 設計
- ライブデータベースガイド — CI でのドリフトチェックを順を追って解説
- プラン — Pro が必要なツール
- npm の sqemo-mcp
- フィードバックとバグ報告:issues または [email protected]
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
