数据库查找协议(DLP)
](https://www.npmjs.com/package/database-lookup-protocol) ](https://www.npmjs.com/package/database-lookup-protocol)  
DLP让你的AI编码助手读取你的数据库,这样它就能更快地编写更好的代码。
你的人工智能助手是否曾经猜测过你的数据库是什么样子,结果却生成了错误的列名或错过了关系?DLP解决了这个问题。它提供了Claude Code、Cursor、VS Code Copilot和反重力(Gemini)等工具 只读访问 对于您的数据库模式和数据,不需要调试代码,也不需要将表结构复制粘贴到聊天中。
🌐 dlp-mcp.vercel.app --让你的人工智能数据库眼睛
______________________________________________________________________
DLP是做什么的?
将DLP视为您的AI助手和数据库之间的桥梁。设置后:
- 你的AI可以 查看您的表、列和关系 自动地
- 它可以 预览实际数据 了解存储的内容
- 它可以 运行安全的只读查询 回答有关数据的问题
- 所有这一切都会发生 无需编写任何代码 或粘贴架构转储
例子: 它可以直接查看数据库本身,而不是告诉你的人工智能“我有一个用户表,其中有id、name、email列……”。
______________________________________________________________________
运作原理
DLP使用 模型上下文协议(MCP) --一个允许AI助手使用外部工具的开放标准。设置DLP时:
- 您的IDE将DLP作为后台进程生成
- DLP使用
DATABASE_URL来自您的项目 - 你的AI助手获得了四种新工具来检查数据库
- 一切都在你的机器上本地运行——你的数据永远不会离开
Your AI Assistant DLP (MCP Server) Your Database
(Claude, etc.) (runs locally) (Postgres, MySQL, etc.)______________________________________________________________________
安装
npm install database-lookup-protocol或者直接使用,无需安装(通过 npx):
npx database-lookup-protocol set cursor______________________________________________________________________
快速开始
设置DLP需要 两步 不到一分钟。
先决条件
- 已安装v18或更高版本
- 要连接的数据库(PostgreSQL、MySQL、MongoDB、SQL Server或Prisma)
- 支持MCP(克劳德代码、游标、VS代码或反重力)的IDE
步骤1:将数据库连接添加到 .env
确保你的项目有 .env 使用数据库连接创建文件。如果你已经有了一个(大多数项目都有),那就很好了——跳到步骤2。
选项A:单连接字符串 (最常见)
DATABASE_URL=postgresql://user:password@localhost:5432/mydb选项B:单个变量 (如果您的项目使用单独的主机/用户/密码变量)
# PostgreSQL
PG_HOST=localhost
PG_PORT=5432
PG_DATABASE=mydb
PG_USER=admin
PG_PASSWORD=secret
# MySQL
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_DATABASE=mydb
MYSQL_USER=admin
MYSQL_PASSWORD=secret
# MongoDB
MONGODB_URI=mongodb://localhost:27017/mydb
# SQL Server
MSSQL_HOST=localhost
MSSQL_PORT=1433
MSSQL_DATABASE=mydb
MSSQL_USER=admin
MSSQL_PASSWORD=secretDLP会自动检测您使用的任何格式-- DATABASE_URL 或单个变量。
不确定您的DATABASE_URL是什么样子的? 看 连接字符串格式 以下部分为每个数据库的示例。
步骤2:将DLP连接到IDE
打开终端 在项目文件夹中 (你的 .env file is)并运行:
# For antigravity (Gemini)
npx dlp set antigravity
# For Cursor
npx dlp set cursor
# For VS Code
npx dlp set vscode
# For Claude Code
npx dlp set claude
# For all IDEs at once
npx dlp set all就是这样! 重新启动IDE,DLP即可使用。
刚才发生了什么? 这dlp set命令从项目中读取数据库连接变量.env文件(要么DATABASE_URL或单个变量,如PG_HOST,MYSQL_HOST等),并将MCP配置写入IDE的全局配置目录。您的AI助手现在将DLP视为可用工具。
______________________________________________________________________
在AI助手中使用DLP
设置后,您的AI助手将自动访问四个数据库工具。您不需要做任何特别的事情,只需自然地询问有关数据库的问题:
- *“我的数据库中有哪些表?”*
- *“显示用户表中的一些示例数据”*
- *“订单表有哪些列?”*
- *“查找上周注册的所有用户”*
你的人工智能将在幕后使用DLP工具来回答这些问题。
可用工具
| 工具 | 功能 | 示例使用 |
|---|---|---|
dlp_get_schema | 显示所有表、列、类型、键和关系 | *“我的数据库是什么样子的?”* |
dlp_describe_table | 显示一个表的详细信息——列类型、索引、默认值、约束 | *“告诉我订单表的情况”* |
dlp_preview_table | 显示表中的示例行(最多20行) | *“显示用户表中的一些数据”* |
dlp_safe_query | 运行只读SQL SELECT查询(必须包含LIMIT,最多20行) | *“今天下了多少订单?”* |
提示: 你可以告诉你的AI:“使用 dlp_get_schema 在编写任何查询之前了解数据库”——这可以让它提前了解全局。______________________________________________________________________
支持的数据库
DLP适用于五种流行的数据库。您只需为正在使用的数据库安装驱动程序:
| 数据库 | 安装驱动程序 | 状态 |
|---|---|---|
| PostgreSQL | npm install pg | 生产就绪 |
| MySQL/MariaDB | npm install mysql2 | 生产就绪 |
| MongoDB | npm install mongodb | 生产就绪 |
| Microsoft SQL Server | npm install mssql | 生产就绪 |
| 棱镜 (任何DB Prisma支持) | npm install @prisma/client | 生产就绪 |
注: 如果您的项目已经使用了这些驱动程序之一(请检查您的 package.json),您不需要安装任何额外的东西。连接字符串格式
这是什么 DATABASE_URL 每个数据库看起来都是这样的:
# PostgreSQL
DATABASE_URL=postgresql://username:password@hostname:5432/database_name
# MySQL / MariaDB
DATABASE_URL=mysql://username:password@hostname:3306/database_name
# MongoDB
DATABASE_URL=mongodb://username:password@hostname:27017/database_name
# Microsoft SQL Server
DATABASE_URL=mssql://username:password@hostname:1433/database_name
# Prisma (uses whatever your Prisma schema defines)
DATABASE_URL=postgresql://username:password@hostname:5432/database_name常见的托管数据库示例:
# Supabase (PostgreSQL)
DATABASE_URL=postgresql://postgres.[project-ref]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres
# PlanetScale (MySQL)
DATABASE_URL=mysql://[user]:[password]@[host]/[database]?ssl={"rejectUnauthorized":true}
# MongoDB Atlas
DATABASE_URL=mongodb+srv://[user]:[password]@[cluster].mongodb.net/[database]
# Neon (PostgreSQL)
DATABASE_URL=postgresql://[user]:[password]@[host].neon.tech/[database]?sslmode=require
# Railway (PostgreSQL)
DATABASE_URL=postgresql://postgres:[password]@[host].railway.app:5432/railway______________________________________________________________________
在哪里 dlp set 写配置?
当你奔跑时 npx dlp set ,它将MCP配置写入主文件夹中IDE的全局配置目录(~ = C:\Users\YourName 在Windows上, /Users/YourName 在Mac上, /home/YourName 在Linux上):
| IDE | 配置文件位置 |
|---|---|
| 反重力(双子座) | ~/.gemini/antigravity/mcp_config.json |
| 光标 | ~/.cursor/mcp_config.json |
| VS代码 | ~/.vscode/mcp_config.json |
| 克劳德代码 | ~/.mcp.json |
转换项目? 就 cd 进入新项目,并运行 npx dlp set 再一次。它将使用新项目的数据库连接更新配置。
______________________________________________________________________
安全
DLP默认设计为安全的:
- 只读访问 --DLP只能选择数据。它不能以任何方式插入、更新、删除、删除或修改数据库。
- SQL注入保护 --在任何查询到达数据库之前,都会阻止15种以上的危险SQL模式。
- 无网络暴露 --在MCP模式下,DLP作为通过stdio通信的本地进程运行。您的数据库凭据和数据永远不会离开您的计算机。
- 行限制已执行 --所有查询都限制在20行以内。长文本字段会自动截断为200个字符。
- 不需要API密钥 -MCP使用stdio(标准输入/输出),因此不需要担心HTTP服务器或API密钥。
关于 postbuild 脚本
DLP包括 postbuild 添加shebang行的npm脚本(#!/usr/bin/env node)到CLI入口点文件。这是Node.js命令行工具在类Unix系统(Linux、macOS)上正确工作的标准做法。
它的作用:
// Checks if dist/cli/index.js exists
// Reads the compiled CLI file
// Adds #!/usr/bin/env node at the top if it's not already there
// Writes it back to disk此脚本在TypeScript编译后自动运行(npm run build)并且对于 dlp 命令可执行。该脚本只读取和写入项目自己的构建输出,它不会访问外部文件、网络资源或执行任何恶意操作。
为什么需要: TypeScript在编译过程中不会保留shebang行,所以我们在之后将其添加回来。如果没有这条线 dlp 全局安装或通过使用时,命令不起作用 npx.
______________________________________________________________________
切换项目
当您切换到具有不同数据库的不同项目时:
- 确保新项目具有
.env文件及其数据库连接(DATABASE_URL或单个变量) - 在该项目文件夹中打开终端
- 跑
npx dlp set再次 - 重新启动IDE
配置将使用新的数据库连接进行更新。
______________________________________________________________________
HTTP服务器模式(高级)
大多数用户不需要这个。 MCP模式(如上设置)是使用DLP的推荐方式。HTTP模式适用于无法使用MCP的自定义集成、脚本或工具。
如果要将DLP作为独立的HTTP API运行:
# Add these to your .env
DATABASE_URL=postgresql://user:pass@localhost:5432/mydb
DLP_API_KEY=your-secret-key
# Start the server
npx dlp start服务器运行在 http://localhost:3434。所有请求都转到 POST /protocol 带着一个 Authorization: Bearer 头球
请求示例:
# Get database schema
curl -X POST http://localhost:3434/protocol \
-H "Authorization: Bearer your-secret-key" \
-H "Content-Type: application/json" \
-d '{"action": "get_schema", "schema": "public"}'
# Preview table data
curl -X POST http://localhost:3434/protocol \
-H "Authorization: Bearer your-secret-key" \
-H "Content-Type: application/json" \
-d '{"action": "preview_table", "table": "users", "limit": 5}'
# Describe a table
curl -X POST http://localhost:3434/protocol \
-H "Authorization: Bearer your-secret-key" \
-H "Content-Type: application/json" \
-d '{"action": "describe_table", "table": "users"}'
# Run a read-only query
curl -X POST http://localhost:3434/protocol \
-H "Authorization: Bearer your-secret-key" \
-H "Content-Type: application/json" \
-d '{"action": "safe_query", "query": "SELECT id, email FROM users LIMIT 5"}'规则: 只允许使用SELECT查询。每个查询都必须包含LIMIT子句。最多返回20行。
______________________________________________________________________
CLI参考
npx dlp set Read DB vars from .env and configure your IDE
npx dlp set all Configure all supported IDEs at once
npx dlp start Start HTTP API server on port 3434
npx dlp start --mcp Start MCP stdio server
npx dlp mcp Same as "start --mcp"______________________________________________________________________
故障排除
“DLP工具未显示在我的IDE中”
- 确保你跑了
npx dlp set从项目文件夹中(其中.env是) - 运行set命令后完全重新启动IDE
- 检查你的
.env文件包含有效DATABASE_URL
“无法连接到数据库”
- 验证您的
DATABASE_URL通过测试与数据库客户端的连接是正确的 - 确保数据库服务器正在运行且可访问
- 检查您是否安装了正确的驱动程序(
npm install pgPostgreSQL等)
“权限被拒绝”或“配置文件错误”
- 跑
npx dlp set再次,它将覆盖任何损坏的配置文件 - 确保您对主目录具有写访问权限
切换到其他数据库?
- 更新
DATABASE_URL在您的项目中.env - 跑
npx dlp set再次 - 重新启动IDE
______________________________________________________________________
贡献
欢迎投稿!以下是如何开始:
- 分叉存储库
- 克隆你的叉子:
git clone https://github.com/your-username/Database-Lookup-Protocol.git - 创建要素分支:
git checkout -b feat/your-feature - 在中进行更改
src/目录 - 构建项目:
npm run build - 在本地测试您的更改
- 打开拉取请求
添加新的数据库适配器
要添加对新数据库的支持,请执行以下操作:
- 在中创建新的适配器文件
src/adapters/这实现了DLPAdapter接口 - 适配器需要四种方法:
getSchema(),previewTable(),describeTable(),以及safeQuery() - 在中注册适配器
src/cli/index.ts - 将连接字符串格式添加到此README中
______________________________________________________________________
支持的环境变量
dlp set 自动读取 全部 项目中与数据库相关的变量 .env --不只是 DATABASE_URL。这是它检测并写入IDE配置的变量的完整列表:
| 变量 | 数据库 | 描述 |
|---|---|---|
DATABASE_URL | 任意 | 完整连接字符串(从方案中自动检测DB类型) |
DB_TYPE | 任意 | 显式设置DB类型: postgres, mysql, mongodb, mssql, prisma |
| PostgreSQL | ||
PG_HOST / PGHOST | PostgreSQL | 数据库主机 |
PG_PORT / PGPORT | PostgreSQL | 数据库端口(默认:5432) |
PG_DATABASE / PGDATABASE | PostgreSQL | 数据库名称 |
PG_USER / PGUSER | PostgreSQL | 用户名 |
PG_PASSWORD / PGPASSWORD | PostgreSQL | 密码 |
PG_SSL | PostgreSQL | 设置为 true 启用SSL |
| MySQL/MariaDB | ||
MYSQL_HOST | MySQL | 数据库主机 |
MYSQL_PORT | MySQL | 数据库端口(默认:3306) |
MYSQL_DATABASE | MySQL | 数据库名称 |
MYSQL_USER | MySQL | 用户名 |
MYSQL_PASSWORD | MySQL | 密码 |
| MongoDB | ||
MONGODB_URI | MongoDB | 完整的MongoDB连接URI |
MONGODB_DATABASE | MongoDB | 数据库名称(默认:从URI解析或 test) |
| SQL Server | ||
MSSQL_HOST | MSSQL | 数据库主机 |
MSSQL_PORT | MSSQL | 数据库端口(默认值:1433) |
MSSQL_DATABASE | MSSQL | 数据库名称 |
MSSQL_USER | MSSQL | 用户名 |
MSSQL_PASSWORD | MSSQL | 密码 |
MSSQL_ENCRYPT | MSSQL | 设置为 false 禁用加密 |
MSSQL_TRUST_CERT | MSSQL | 设置为 true 信任自签名证书 |
它是如何工作的: 当你奔跑时 npx dlp set ,它扫描你的 .env 对于上述所有变量,并将找到的每个变量写入IDE的MCP配置中 env 块。这样,当IDE生成DLP MCP服务器时,您的所有数据库凭据都可用,无论您是否使用单个 DATABASE_URL 或单独的变量。
______________________________________________________________________
许可证
麻省理工学院-见 许可证 了解详情。
______________________________________________________________________
