mcpField
D
Drizzle MCP

Drizzle MCP

本地服务
github.com/fredobumma其他01 天前更新

关于 Drizzle MCP

Drizzle MCP 是面向编码 Agent 的数据库浏览 MCP 服务,依据项目使用的 Drizzle schema 展示数据库结构与数据。它默认只读,并将 TypeScript 属性、SQL 名称、关系及迁移状态纳入上下文。

主要功能

  1. 01读取表、列、键、索引与关系
  2. 02按条件浏览和统计数据
  3. 03执行受限的只读 SQL 查询
  4. 04查看查询计划与 schema 漂移
  5. 05检查迁移状态并标记已修改迁移
  6. 06写入操作需显式启用

适用场景

  1. 01让 Agent 按项目 schema 编写 Drizzle 查询
  2. 02检查数据库中的实际数据分布
  3. 03定位 schema 与线上数据库的差异
  4. 04确认查询计划是否使用索引

MCP 相关

作为 MCP 服务向编码客户端提供 schema、数据浏览、统计、查询、计划分析和漂移检查工具。默认只读;以 `--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

面向 Agent 的 Drizzle Studio。一个 MCP 服务,让 Claude Code、Cursor 和其他编码 Agent 通过 Drizzle schema 查看你的数据库。

通用数据库 MCP 只能看到表和列。这个 MCP 服务会读取代码实际使用的 schema:TypeScript 名称与 SQL 名称、关系、枚举和默认值。这样,Agent 就能回答“数据库里实际有什么?”,并编写与之匹配的 Drizzle 代码。

下面是 Agent 查询 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,使用 "servers" 而不是 "mcpServers"):

{
  "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 名称、类型、是否可为空、默认值)、键、索引、检查约束和关系。
browse按 Drizzle Studio 的方式读取行:选择列、筛选、排序和分页,并通过 relations() 包含相关行。行使用 TypeScript 属性作为键,与 db.query 的返回结果一致。
count统计行数,支持统计总数或使用 groupBy 按值分组,以查看数据分布。
query以只读方式运行一条 SQL 语句,并最多返回 100 行。
explain显示查询计划,以检查是否使用了索引。在 Postgres 上,analyze 会实际运行查询并计时。
drift将 schema 与实时数据库进行比较:检查缺失或多余的表和列,以及类型或是否可为空属性的变更。
migrations列出 drizzle-kit 的迁移,并标记已应用或待处理状态。它还会标记任何在应用后被编辑的迁移。
execute更改数据。仅在使用 --allow-writes 启动服务时可用。

筛选条件使用 JSON,因此值始终作为参数绑定,不会直接拼接到 SQL 中:

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

编辑 schema 后,服务会在下次调用时加载变更;无需重启。

默认安全

Agent 不应该因为意外,或因为读取到的内容而破坏数据库。

  • 只读。 每条语句都在只读事务中运行。SQLite 读取使用只读连接。
  • 每次只运行一条语句。 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(当前稳定版本)进行测试。仍处于 beta 阶段的 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。