Drizzle MCP

io.github.Fredobumma由 GitHub 账号 Fredobumma 发布v0.1.1更新于 Oct 29, 2026

Drizzle Studio for agents: explore your database through your Drizzle schema. Read-only by default.

已验证STDIO仅桌面数据库开发者工具

概览

AI 生成的概览

本地 MCP 服务器,让编码助手通过项目自身的 Drizzle schema 查看数据库,默认只读。

可以做什么
  • 列出数据表,并描述列、键、索引、检查约束与关系
  • 按列选择、JSON 过滤、排序、分页浏览数据行,并可带出关联行
  • 统计总行数或按值分组计数,并执行一条只读 SQL 语句,最多返回 100 行
  • 查看查询计划,在 Postgres 上可用 analyze 获取真实耗时
  • 对比 schema 与线上数据库,并列出 drizzle-kit 迁移的应用或待应用状态
  • 仅在以写入参数启动时,通过 execute 工具修改数据
适用场景
适合需要让助手了解 Drizzle 管理的 Postgres 或 SQLite 数据库里实际有什么数据,并写出与真实 schema(含 TypeScript 名称、关系和默认值)相符的 Drizzle 代码时使用。若还需要迁移,可与 drizzle-kit 自带的 MCP 服务器配合使用。
运行要求
通过 npx 在本地运行,需要 Node.js 22 或更高版本,以及含 drizzle.config.ts 的项目。它会加载该配置和项目的 .env,并使用项目已安装的驱动与 drizzle-orm 版本连接(pg、postgres.js、PGlite、better-sqlite3 或 libsql/Turso)。暂不支持 MySQL 和 Drizzle 1.0。不在项目目录启动的客户端需额外指定配置路径参数。
安装前请注意
它会读取项目的 .env 并使用项目凭据连接数据库。默认只读,但以写入参数启动会新增可修改数据的 execute 工具。名称类似 password、token、secret 或 apiKey 的列默认被遮蔽,除非使用显示密钥的选项。schema 与数据行内容会返回给所连接的助手。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Drizzle MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

drizzle-mcp

[Drizzle MCP server]

Drizzle Studio for agents. An MCP server that lets Claude Code, Cursor and other coding agents see your database through your Drizzle schema.

A generic database MCP sees tables and columns. This one reads the schema your code uses: TypeScript names next to SQL names, relations, enums and defaults. An agent can then answer "what's actually in the database?" and write Drizzle code that matches it.

For migrations, use Drizzle's own drizzle-kit mcp (drizzle-kit 1.0): it generates, pushes and checks them. drizzle-mcp reads what's in the database, read-only by default, so the two work side by side.

If it's useful to you, a star on GitHub helps other people find it. Questions, bug reports and ideas are welcome in the issues, and so are pull requests.

Here is what an agent gets back when it asks about a posts table:

text
## 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

Set up

Run it from the folder with drizzle.config.ts.

Claude Code

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

Cursor (.cursor/mcp.json) and VS Code (.vscode/mcp.json, with "servers" instead of "mcpServers"):

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

For clients that don't start servers in your project folder, such as Claude Desktop, add "--config", "/path/to/drizzle.config.ts" to args.

drizzle-mcp loads your config the way drizzle-kit does, including your .env. It connects with the database driver and the drizzle-orm version your project already has installed.

Tools

ToolWhat it does
schemaLists the tables. With a table name, it describes the columns (TypeScript key and SQL name, type, nullability, default), the keys, indexes, checks and relations.
browseReads rows the way Drizzle Studio shows them: pick columns, filter, sort and page, and include related rows through your relations(). Rows are keyed by TypeScript property, as db.query returns them.
countCounts rows, overall or per value with groupBy, to see how data is distributed.
queryRuns one SQL statement read-only and returns up to 100 rows.
explainShows the query plan, to check that an index is used. On Postgres, analyze runs the query for real timings.
driftCompares the schema with the live database: missing or extra tables and columns, and changed types or nullability.
migrationsLists drizzle-kit's migrations as applied or pending. It also flags any migration edited after it was applied.
executeChanges data. Only available when the server is started with --allow-writes.

Filters are JSON, so values are always bound as parameters, never pasted into SQL:

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

If you edit the schema, the server picks up the change on the next call; no restart needed.

Safe by default

An agent shouldn't be able to wreck a database by accident, or because something it read told it to.

  • Read-only. Every statement runs in a read-only transaction. SQLite reads use a read-only connection.
  • One statement at a time. select 1; commit; drop table users is refused before it reaches the database. The Postgres drivers and better-sqlite3 would refuse it again on their own; libsql would silently drop everything after the first statement.
  • Bounded. Statements time out after 15 seconds. Results are capped at 100 rows and fetched through a cursor, so a large table is never pulled into memory. Long values are cut short.
  • Secrets hidden. Values in columns named like password, token, secret or apiKey are shown as [redacted].
  • Writes are opt-in. --allow-writes adds the execute tool. query stays read-only either way.

Requirements

DatabaseDrivers
PostgreSQLpg, postgres (postgres.js), PGlite
SQLitebetter-sqlite3, @libsql/client (including Turso)

MySQL isn't supported yet.

drizzle-mcp needs Node.js 22 or newer. It's tested with drizzle-orm 0.45, the current stable release. Drizzle 1.0, now in release candidates, defines relations differently and isn't supported yet.

Options

text
--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

How it works

  1. It loads drizzle.config.ts and your .env, then imports the schema files the config points to (a file, a folder or a glob). Imports go through jiti, so TypeScript works without a build step.
  2. It reads tables, columns and relations from drizzle-orm's own metadata. This is the same information drizzle-kit and relational queries use. That's where the TypeScript names and relations come from.
  3. It connects with your project's driver. browse and count build relational queries with your schema objects. query runs plain SQL through the safeguards above.

Development

sh
pnpm installpnpm check   # types, lint and 145 tests

The tests run every tool against every driver. Postgres runs as PGlite, which is real Postgres compiled to WebAssembly. pg and postgres.js reach it over the Postgres wire protocol, so no Docker is needed.

Pull requests are welcome. Run pnpm check before opening one, and for anything large, open an issue first so we can agree on the approach.

License

MIT

来源:README.md,提交 b2bfde0

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.1最新Oct 29, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分