mcpField
D
Drizzle MCP

Drizzle MCP

ローカル
github.com/fredobummaその他01 日前に更新

Drizzle MCP について

Drizzle MCPは、プロジェクトで使うDrizzleスキーマを通じてデータベースを確認できる、コーディングエージェント向けのMCPサーバーです。既定では読み取り専用で、TypeScript名やリレーション、マイグレーション状況も扱います。

主な機能

  1. 01テーブル、列、キー、インデックス、リレーションの確認
  2. 02条件指定による行の参照と集計
  3. 03制限付きの読み取り専用SQL実行
  4. 04クエリプランとスキーマ差分の確認
  5. 05マイグレーション状況と適用後の編集検出
  6. 06オプション指定時のみ書き込み

活用シーン

  1. 01プロジェクトのスキーマに沿ったDrizzleクエリの作成
  2. 02実データと分布の確認
  3. 03スキーマと稼働中DBの差異の特定
  4. 04クエリプランでのインデックス利用確認

MCP 対応

MCPクライアントに、スキーマ確認、データ参照、集計、クエリ、プラン分析、差分確認のツールを提供します。既定では読み取り専用で、`--allow-writes` を指定した場合のみ書き込みツールを有効にできます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"fredobumma-drizzle": {
"command": "npx",
"args": [
"-y",
"drizzle-mcp"
]
}
}
}
起動コマンドnpx -y drizzle-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmdrizzle-mcp0.1.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

drizzle-mcp

エージェント向けの Drizzle Studio です。MCP サーバーで、Claude Code、Cursor などのコーディングエージェントが、Drizzle スキーマを通じてデータベースを確認できます。

一般的なデータベース MCP で確認できるのは、テーブルとカラムです。このサーバーは、コードで使われているスキーマを読み取ります。TypeScript の名前と SQL の名前、リレーション、列挙型、デフォルト値を確認できます。エージェントはこれをもとに、「データベースには実際に何が入っているのか?」に回答し、それに合った Drizzle コードを作成できます。

エージェントが posts テーブルについて尋ねると、次のような内容が返されます。

## posts

SQL table `posts`, exported as `posts` from `src/db/schema.ts`.

| column (TS key, SQL name) | type                     | nullable | default | notes                          |
| ------------------------- | ------------------------ | -------- | ------- | ------------------------------ |
| id                        | serial                   | no       |         | primary key                    |
| authorId (author_id)      | integer                  | no       |         | → users.id, on delete cascade  |
| published                 | boolean                  | no       | false   |                                |
| createdAt (created_at)    | timestamp with time zone | no       | now()   |                                |

Relations (for `browse` with `with`, or `db.query` in code):
- author: one users on posts.authorId = users.id
- comments: many comments on posts.id = comments.postId

セットアップ

drizzle.config.ts があるフォルダーから実行してください。

Claude Code

claude mcp add drizzle -- npx -y drizzle-mcp

Cursor(.cursor/mcp.json)と VS Code(.vscode/mcp.json。"mcpServers" の代わりに "servers" を使用します):

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

Claude Desktop のように、プロジェクトフォルダーでサーバーを起動しないクライアントでは、args に "--config", "/path/to/drizzle.config.ts" を追加してください。

drizzle-mcp は drizzle-kit と同じ方法で設定を読み込み、.env も含めて読み込みます。プロジェクトにすでにインストールされているデータベースドライバーと drizzle-orm のバージョンを使って接続します。

ツール

ツール説明
schemaテーブルの一覧を表示します。テーブル名を指定すると、カラム(TypeScript のキーと SQL の名前、型、NULL 許容性、デフォルト値)、キー、インデックス、チェック制約、リレーションを表示します。
browseDrizzle Studio と同じ方法で行を読み込みます。カラムの選択、フィルター、並べ替え、ページ分割ができ、relations() を通じて関連する行も含められます。行のキーは、db.query が返すときと同じく TypeScript のプロパティです。
count行数を全体、または groupBy で値ごとに数え、データの分布を確認します。
querySQL 文を 1 つ読み取り専用で実行し、最大 100 行を返します。
explainクエリプランを表示し、インデックスが使われているか確認します。Postgres では、analyze を指定すると実際にクエリを実行し、実行時間を計測します。
driftスキーマと稼働中のデータベースを比較します。不足または余分なテーブルやカラム、変更された型や NULL 許容性を確認できます。
migrationsdrizzle-kit のマイグレーションを適用済みまたは未適用として一覧表示します。適用後に編集されたマイグレーションも通知します。
executeデータを変更します。サーバーを --allow-writes を指定して起動した場合にのみ利用できます。

フィルターは JSON 形式なので、値は必ずパラメーターとしてバインドされ、SQL に直接埋め込まれることはありません。

{ "published": true, "createdAt": { "gte": "2026-01-01" }, "or": [{ "title": { "ilike": "%drizzle%" } }, { "rating": { "gte": 4.5 } }] }

スキーマを編集すると、サーバーは次の呼び出し時に変更を反映します。再起動は不要です。

デフォルトで安全

エージェントが誤って、あるいは読み取った内容に従って、データベースを壊してしまうことがあってはなりません。

  • 読み取り専用です。 すべての文は読み取り専用トランザクションで実行されます。SQLite の読み取りには読み取り専用接続を使用します。
  • 一度に実行する文は 1 つです。 select 1; commit; drop table users はデータベースに届く前に拒否されます。Postgres のドライバーと better-sqlite3 も独自に拒否しますが、libsql は最初の文以降をすべて黙って破棄します。
  • 実行には制限があります。 文は 15 秒後にタイムアウトします。結果は最大 100 行に制限され、カーソル経由で取得されるため、大きなテーブルがメモリに読み込まれることはありません。長い値は途中で切り詰められます。
  • シークレットは非表示になります。 password、token、secret、apiKey のような名前のカラムの値は [redacted] と表示されます。
  • 書き込みはオプトインです。 --allow-writes を指定すると execute ツールが追加されます。query はいずれの場合も読み取り専用です。

要件

データベースドライバー
PostgreSQLpg、postgres(postgres.js)、PGlite
SQLitebetter-sqlite3、@libsql/client(Turso を含む)

MySQL はまだサポートされていません。

drizzle-mcp には Node.js 22 以降が必要です。現行の安定版である drizzle-orm 0.45 でテストされています。ベータ版の Drizzle 1.0 ではリレーションの定義方法が異なるため、まだサポートされていません。

オプション

--config <path>     The Drizzle config (default: drizzle.config.ts in the current folder)
--url <url>         Connect here instead of the config's dbCredentials
--driver <name>     pg, postgres, pglite, better-sqlite3 or libsql (default: the one installed)
--allow-writes      Add the execute tool
--max-rows <n>      The most rows a tool returns (default: 100)
--timeout <ms>      Statement time limit (default: 15000)
--max-text <n>      Cut strings longer than this (default: 500)
--redact <regex>    Hide columns whose names match (default: password, secret, token…)
--show-secrets      Don't hide any columns

仕組み

  1. drizzle.config.ts と .env を読み込み、設定ファイルで指定されたスキーマファイル(単一ファイル、フォルダー、または glob)をインポートします。インポートには jiti を使用するため、ビルド手順なしで TypeScript を利用できます。
  2. drizzle-orm 独自のメタデータから、テーブル、カラム、リレーションを読み取ります。これは drizzle-kit やリレーショナルクエリで使用されるものと同じ情報で、TypeScript の名前やリレーションもここから取得します。
  3. プロジェクトのドライバーで接続します。browse と count はスキーマオブジェクトを使ってリレーショナルクエリを構築します。query は前述の安全対策を通じてプレーンな SQL を実行します。

開発

pnpm install
pnpm check   # types, lint and 145 tests

テストでは、すべてのツールをすべてのドライバーに対して実行します。Postgres は PGlite として動作します。これは WebAssembly にコンパイルされた、本物の Postgres です。pg と postgres.js は Postgres ワイヤープロトコル経由で接続するため、Docker は不要です。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。