dbx/docs/content/docs/mcp.cn.mdx

160 lines
6.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: MCP 集成
description: 通过 Model Context Protocol 让 AI 编程助手查询你的数据库。
---
<Callout type="info">把 AI 助手连接到 DBX即可查看数据库结构、查询数据并在 DBX 中打开结果。</Callout>
## 什么是 MCP
MCPModel Context Protocol是让 AI 客户端调用外部工具的开放协议。DBX MCP 可以让 AI 助手使用 DBX 中已经配置好的数据库连接。
```text
AI 助手 → DBX MCP → 你的数据库 → 返回结果
↘ DBX 桌面端(打开或展示结果)
```
## 快速开始
<Steps>
<Step>
### 安装 MCP Server
```bash
npm install -g @dbx-app/mcp-server
```
npm 会自动安装当前平台需要的依赖。不要使用 `--no-optional`。
</Step>
<Step>
### 配置 AI 助手
在项目目录创建 `.mcp.json`
```json
{
"mcpServers": {
"dbx": {
"command": "npx",
"args": ["-y", "@dbx-app/mcp-server"]
}
}
}
```
如果使用全局安装,可将 `command` 改为 `dbx-mcp-server`。连接 allowlist 和执行权限统一在 **DBX 设置 → MCP** 中管理常规客户端配置不需要权限环境变量。Windows 便携版请将 `DBX_DATA_DIR` 设置为 `DBX.exe` 同级的 `data` 目录。
</Step>
<Step>
### 开始使用
在 AI 助手中直接使用自然语言:
- "列出我的数据库连接"
- "查看 local-pg 上有哪些表"
- "查看 users 表的结构"
- "查询最近 7 天的订单数量"
- "打开 orders 表"(需要 DBX 运行中)
</Step>
</Steps>
## 支持的 AI 助手
| AI 助手 | 配置方式 |
| --- | --- |
| Claude Code | `.mcp.json` |
| Cursor | `.cursor/mcp.json` |
| Windsurf | MCP 配置 |
| VS Code + Copilot | MCP 扩展/配置 |
## 工具列表
DBX MCP 当前提供 10 个工具:
| 工具 | 说明 |
| --- | --- |
| `dbx_list_connections` | 列出当前 MCP 会话可见的连接 |
| `dbx_add_connection` | 添加连接到 DBX 存储 |
| `dbx_remove_connection` | 从 DBX 存储删除连接 |
| `dbx_list_tables` | 列出表、视图或集合 |
| `dbx_describe_table` | 返回列定义和表元数据 |
| `dbx_get_schema_context` | 返回适合 AI 使用的紧凑 Schema 上下文 |
| `dbx_execute_query` | 执行 SQL 或支持的 MongoDB shell 命令,最多返回 100 行 |
| `dbx_execute_redis_command` | 执行 Redis 命令 |
| `dbx_open_table` | 在运行中的 DBX 桌面端打开表 |
| `dbx_execute_and_show` | 执行查询并在 DBX 中展示结果 |
启用连接作用域后,修改连接和桌面 UI 工具会被隐藏。
## 数据库访问
### 本地连接
这是默认模式。MCP 使用 DBX 中保存的连接配置。执行数据库查询时不要求 DBX 桌面端保持运行。
常见的本地数据库文件路径:
| 平台 | 默认路径 |
| --- | --- |
| macOS | `~/Library/Application Support/com.dbx.app/dbx.db` |
| Linux | `~/.local/share/com.dbx.app/dbx.db` |
| Windows | `%APPDATA%\com.dbx.app\dbx.db` |
`DBX_DATA_DIR` 必须指向包含 `dbx.db` 的目录而不是数据库文件本身。Windows 便携版通常是 `DBX.exe` 同级的 `data` 目录。
PostgreSQL、MySQL、SQLite、兼容 SQL 数据库、独立 Redis 和 MongoDB 可以直接查询。部分 SSH、集群、厂商专用以及 Agent/JDBC 连接需要先安装对应的 DBX 组件。
### Agent/JDBC 数据库
Oracle、人大金仓和虚谷需要匹配的 DBX 原生 Agent但不需要 JRE。达梦、DB2、Hive、Trino、Snowflake、SAP HANA 等 JDBC Agent 数据库需要匹配的 Agent、JDBC 驱动和 JRE。请先在 DBX 中安装所需组件,再使用 MCP。
### DBX Web / Docker 模式
设置 `DBX_WEB_URL` 后MCP 会使用部署的 DBX Web 后端,而不是读取本机连接。如果 Web 登录启用了密码保护,还要设置 `DBX_WEB_PASSWORD`,值为 Web 登录页使用的密码。
### 桌面 UI 工具
`dbx_open_table` 和 `dbx_execute_and_show` 要求 DBX 桌面端正在运行。其他查询工具可以在 DBX 关闭时使用。
## 安全和环境变量
DBX 在 **设置 → MCP** 中保存一份权威策略,并在每次请求时重新读取:
| 权限模式 | 允许的操作 |
| --- | --- |
| 只读 | 查询和元数据读取 |
| 数据读写 | 普通插入、带有效过滤条件的更新/删除、范围明确的 MongoDB 修改和普通 Redis 写入 |
| 完全访问 | 额外允许大范围更新/删除、DDL、`TRUNCATE`、MongoDB 破坏性操作和 Redis `FLUSH*` |
`WHERE TRUE`、`WHERE 1 = 1`、`_id: {$exists: true}` 或不透明 MongoDB 过滤器仍按高风险处理。连接自身只读、生产库保护、数据库账号权限和 MCP 连接 allowlist 在任何模式下都是权限上限。
新版 Server 不允许 `DBX_MCP_ALLOW_WRITES` 或 `DBX_MCP_ALLOW_DANGEROUS_SQL` 放宽 DBX 中央策略。为兼容升级,在中央策略首次保存前,旧配置中的 `DBX_MCP_ALLOW_WRITES=0`(或 `false`)仍会保持 MCP 只读;策略保存后仅以中央策略为准,并忽略旧权限变量。旧连接 scope 变量只能进一步收窄 DBX allowlist。
| 变量 | 用途 |
| --- | --- |
| `DBX_DATA_DIR` | 覆盖本地 DBX 数据目录 |
| `DBX_WEB_URL` | 使用 DBX Web/Docker 后端 |
| `DBX_WEB_PASSWORD` | 登录 DBX Web |
| `DBX_MCP_ALLOW_WRITES` | 仅用于升级兼容:`0`/`false` 使尚未配置的策略保持只读 |
| `DBX_MCP_SCOPE_CONNECTION_ID` | 兼容旧配置:限制为一个连接 ID |
| `DBX_MCP_SCOPE_CONNECTION_IDS` | 兼容旧配置:限制为多个连接 ID |
| `DBX_MCP_SCOPE_CONNECTION_NAME` | 限制为一个连接名称 |
| `DBX_MCP_SCOPE_DATABASE` | 限制为一个数据库 |
| `DBX_MCP_DEBUG_SQL` | 临时诊断时输出 SQL |
## 常见问题
<Accordions>
<Accordion title="npm 没有安装当前平台包">不要使用 `--no-optional`,重新安装 `@dbx-app/mcp-server`,并用 `node -p 'process.platform + "-" + process.arch'` 检查平台。Alpine Linux 默认使用 musl目前不在 Linux 发布包支持范围内。</Accordion>
<Accordion title="找不到 dbx.db">将 `DBX_DATA_DIR` 设置为包含 `dbx.db` 的目录。Windows 便携版通常是 `DBX.exe` 旁边的 `data` 目录。</Accordion>
<Accordion title="提示 DBX 未运行">只有 `dbx_open_table` 和 `dbx_execute_and_show` 需要桌面端运行;本地查询工具可以在 DBX 关闭时执行。</Accordion>
<Accordion title="Agent/JDBC 数据库无法启动">在 DBX Driver Manager 中安装或更新匹配的 Agent、JDBC 驱动和 JRE。厂商专有驱动不会随 MCP 原生包发布。</Accordion>
<Accordion title="出现 better-sqlite3 或 Node ABI 错误">MCP 不需要 `better-sqlite3`。请先升级 `@dbx-app/mcp-server`;如果错误来自 `@dbx-app/cli`,请按照 CLI 的安装要求处理,因为它们是两个独立的包。</Accordion>
</Accordions>
## 系统要求
- Node.js 18.18.0 或更高版本
- 已安装 DBX并至少配置一个数据库连接
- Agent/JDBC 数据库需要匹配的 Agent、驱动和 JRE
- 使用两个桌面 UI 工具时,需要保持 DBX 桌面端运行