Drizzle ORM文档搜索与代码生成服务

一个提供Drizzle ORM文档搜索和SQL到TypeScript代码转换功能的MCP服务器。

  • by cdifulv
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 cdifulv/drizzle-orm-mcp

使用说明

Drizzle Docs MCP服务器

MCP(模型上下文协议)服务器,为AI模型提供可搜索的访问 淋ORM 文档。首次运行时,它会抓取官方文档网站,并在本地缓存结果,以便快速启动后续项目。

工具

文档

工具 说明
drizzle_search_docs 在所有文档页面中搜索关键字
drizzle_get_page 检索特定文档页面的完整内容
drizzle_list_topics 按类别列出所有可用的文档主题

代码生成

工具 说明
drizzle_generate_schema 转换SQL CREATE TABLE 将语句转换为Drizzle ORM TypeScript模式代码
drizzle_sql_to_drizzle 将SQL查询(SELECT、INSERT、UPDATE、DELETE)转换为Drizzle查询构建器代码

两种代码生成工具都接受 dialect 参数("postgresql", "mysql",或 "sqlite")并通过正确的进口产生产出。

drizzle_generate_schema

解析一个或多个 CREATE TABLE 陈述并产生等价物 pgTable / mysqlTable / sqliteTable 具有列类型、约束和导入的定义。

参数:

  • sql (字符串)--SQL CREATE TABLE 声明
  • dialect (枚举,默认值 "postgresql")--目标数据库方言

示例输入:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  email VARCHAR(255) NOT NULL UNIQUE,
  created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

示例输出(postgresql):

import { pgTable, serial, timestamp, varchar } from "drizzle-orm/pg-core";

export const users = pgTable("users", {
  id: serial("id").primaryKey(),
  email: varchar("email", { length: 255 }).notNull().unique(),
  createdAt: timestamp("created_at", { withTimezone: true }).notNull().default(now()),
});

drizzle_sql_to_drizzle

将SQL查询转换为Drizzle ORM查询构建器调用,将运算符映射到过滤器函数(eq, gt, like, and, or等等)。

参数:

  • sql (string)--要转换的SQL查询
  • dialect (枚举,默认值 "postgresql")--目标数据库方言
  • schema_hint (字符串,可选)--表/列上下文,以获得更准确的输出

示例输入:

SELECT u.id, u.name, p.title
FROM users u
INNER JOIN posts p ON p.author_id = u.id
WHERE u.is_active = true
ORDER BY p.created_at DESC
LIMIT 10

输出示例:

import { desc, eq } from "drizzle-orm";

db.select({ id: u.id, name: u.name, title: p.title })
  .from(users)
  .innerJoin(posts, eq(p.authorId, u.id))
  .where(eq(u.isActive, true))
  .orderBy(desc(p.createdAt))
  .limit(10);

先决条件

  • Node.js>=18

设置

npm install

构建

npm run build

这将从以下位置编译TypeScript src/ 进入 dist/.

跑

生产 (需要先构建):

npm start

发展 (通过热重新加载 tsx):

npm run dev

服务器使用MCP协议通过stdio进行通信。首次启动时,它将抓取Drizzle文档网站并将页面缓存到 crawled_docs.json 以便后续启动更快。

使用Claude代码

将服务器添加到MCP配置中:

{
  "mcpServers": {
    "drizzle-docs": {
      "command": "node",
      "args": ["/absolute/path/to/drizzle-docs-mcp/dist/index.js"]
    }
  }
}

HTTP传输模式

服务器还可以在HTTP模式下运行,这对于Docker部署或您想通过网络连接时非常有用。

# Start in HTTP mode on port 3000
node dist/index.js --http

# Use a custom port
PORT=8080 node dist/index.js --http

MCP端点将在 http://localhost:3000/mcp.

码头工人

构建并运行:

docker build -t drizzle-docs-mcp .
docker run -p 3000:3000 drizzle-docs-mcp

使用Docker Compose:

docker compose up

MCP服务器将在 http://localhost:3000/mcp.同一Docker网络上的其他容器可以通过以下方式连接 http://drizzle-docs-mcp:3000/mcp.

脚本

脚本 命令 描述
build tsc 编译TypeScript
start node dist/index.js 运行已编译的服务器
dev tsx watch src/index.ts 以热重载的开发模式运行
clean rm -rf dist 删除构建工件