1. 为什么我放弃了 DBeaver,转投 20MB 的 dbx
如果你和我一样,日常在 Windows 上写 Java 或者 Python,数据库客户端这件事大概率让你纠结过。DBeaver 功能确实全,但装完先给你塞一个 JRE,打开项目稍微大一点,风扇就开始起飞;Navicat 好用是好用,正版授权小两千,公司不给报销就只能干瞪眼;DataGrip 订阅制,内存吃得比 IDE 还狠;TablePlus 便宜好看,可惜只有 macOS。至于命令行 mysql / psql,天天敲确实快,但要看表结构、导出数据、对比 schema 的时候,还是得有个图形界面。
我最近在 GitHub 月榜上挖到一个叫 dbx 的项目,Rust + Tauri + Vue 写的,单二进制 20MB 左右,没有 JRE、没有 Python venv、没有 Chromium,下载双击就能连库。它支持 MySQL、PostgreSQL、SQLite、Redis、MongoDB、DuckDB、ClickHouse、SQL Server、Oracle,以及达梦、OceanBase、openGauss、GaussDB、KingbaseES 这些国产数据库,加起来 90 多种。更关键的是,它自带 MCP Server,能让 Claude Code、Cursor、Windsurf 这类 AI 编码工具直接读你已经配好的数据库连接,不用在每个工具里重复配一遍。
这篇文章聚焦一个具体场景:在本地开发环境里,用 dbx 自带的 MCP 能力,配合 TaoToken 统一 Key 作为模型调用入口,实现"AI 一句话帮我查库"。我会给出可复制的 TaoToken 配置片段、dbx MCP 的连接参数,以及一次自然语言查库的完整验证步骤和返回结果对照。适合谁看?正在用 Windows 做开发、受够重型客户端、又想尝鲜 AI 查库的工程师;以及公司用国产数据库、找不到顺手客户端的朋友。
2. TaoToken 前置准备:统一 Key 与 API 通道
在讲 dbx 的 MCP 配置之前,得先把模型调用这一环理清楚。dbx 的 AI 面板和 MCP 查库,本质上都需要一个能调模型的入口。你可以直接填各家厂商的 Key,但那样每换一个工具就要重新配一遍,管理起来很碎。我的做法是用 TaoToken 做统一入口,一个 Key 走通所有需要模型调用的场景。
TaoToken 在这里扮演的角色是"模型调用的统一通道"。你注册后拿到一个 API Key,然后在 dbx 的 AI 设置里把 Base URL 指向 TaoToken 的 API 地址,模型 ID 填你常用的那个,就能跑通自然语言生成 SQL、SQL 解释、优化建议这些功能。MCP 场景下,AI 编码工具通过 MCP 协议调用 dbx 的查库能力,而 dbx 内部再通过 TaoToken 去调模型,链路是通的。
先做两件事。第一,去官网注册并拿到 Key:
官网地址:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= API 地址:https://taotoken.net/api第二,在控制台里创建一个 API Key,记下来,后面配置要用。控制台入口在这里:
https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=如果你只是想先验证模型能不能通,可以用模型对话页面快速测一下:
https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=这里有个细节要注意:TaoToken 的 API 地址是https://taotoken.net/api,配置的时候不要多加 UTM 参数,那是给网页链接用的,API 调用只需要干净的 base URL。Key 的管理页面在:
https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=我实测下来,dbx 的 AI 面板对 OpenAI 兼容格式支持得比较顺,所以你在 TaoToken 这边选一个 OpenAI 兼容的模型 ID 就行。如果你后面要接 Claude Code 做长期编码或者 Agent 任务,可以考虑 Coding Plan,入口是:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=接入文档在这里,配置遇到问题可以对照:
https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=把 Key 拿到手之后,先别急着配 dbx,用 curl 测一下通道是否通:
curl https://taotoken.net/api/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer 你的_TaoToken_Key" \ -d '{ "model": "你的模型ID", "messages": [{"role": "user", "content": "回复 ok"}] }'返回里能看到choices字段和内容,就说明通道没问题。这一步很重要,因为后面 dbx 报错的时候,你得能区分是模型通道的问题还是 dbx 配置的问题。我踩过的坑就是一开始没测通道,结果 dbx 里一直报错,排查了半天才发现是 Key 复制的时候多了个空格。
3. 可复制配置:dbx AI 面板与 MCP 连接参数
这一节是全文的核心,我会给出三份可直接复制的配置:dbx AI 面板的模型配置、dbx MCP Server 的.mcp.json、以及 Claude Code 侧的 settings 片段。路径和字段名都按实际配置来,你照着填就行。
先说 dbx 桌面端的 AI 配置。打开 dbx,进入 Settings → AI,后端类型选 OpenAI 兼容,然后填:
{ "provider": "openai-compatible", "baseUrl": "https://taotoken.net/api/v1", "apiKey": "你的_TaoToken_Key", "model": "你的模型ID", "temperature": 0.2, "maxTokens": 2048 }注意baseUrl这里我写的是https://taotoken.net/api/v1,因为 OpenAI 兼容接口的路径通常带/v1。如果你在 dbx 里看到的是单独的 Base URL 字段,填https://taotoken.net/api然后让 dbx 自己拼/v1也可以,具体看版本。temperature 我建议设低一点,0.2 左右,因为生成 SQL 这种任务不需要太多创造性,稳定比花哨重要。
接下来是 MCP Server 的配置。dbx 的 MCP Server 是独立的,和桌面 App 解耦,你装了桌面 App 不等于开了 MCP。在项目根目录建.mcp.json:
{ "mcpServers": { "dbx": { "command": "npx", "args": ["-y", "@dbx-app/mcp-server"], "env": { "DBX_DATA_DIR": "D:/tools/dbx/data", "TAOTOKEN_BASE_URL": "https://taotoken.net/api/v1", "TAOTOKEN_API_KEY": "你的_TaoToken_Key", "TAOTOKEN_MODEL": "你的模型ID" } } } }这里DBX_DATA_DIR指向 dbx 的数据目录,里面有dbx.db,MCP Server 靠它读你已经配好的数据库连接。Windows Portable 版用户一定要设这个,否则 MCP 读不到连接。TAOTOKEN_*这几个环境变量是给 dbx 内部调模型用的,如果你的 dbx 版本支持从环境变量读模型配置,这样写最省事;如果不支持,就在 dbx 桌面端的 AI 设置里配好,MCP 会复用。
如果你用的是 Claude Code,除了.mcp.json,还可以在 settings 里补一段,确保 MCP 进程能起来:
{ "mcpServers": { "dbx": { "command": "npx", "args": ["-y", "@dbx-app/mcp-server"], "env": { "DBX_DATA_DIR": "D:/tools/dbx/data" } } } }三件套这里要写全:Base URL 是https://taotoken.net/api/v1,Key 是你的 TaoToken Key,Model ID 是你选的模型。这三个缺一个,AI 查库就跑不起来。我见过有人只填了 Key 没填 Base URL,结果 dbx 默认去连官方地址,当然连不上。
权限模式这块单独说一下。dbx 的 MCP 有三档:read_only、safe_write、high_risk_write。生产库一定锁read_only,别给 AI 写权限,哪怕它说得天花乱坠。配置在 dbx 的 Settings → MCP 里改,改完重启 MCP 进程生效。
4. 验证请求:一次自然语言查库的完整过程
配置好之后,来跑一次真实的自然语言查库。我用的是一个本地 MySQL 里的测试库,表结构大概是这样的:question表存题目,字段有id、knowledge_id、created_at、content;knowledge表存知识点,字段有id、name。目标是让 AI 帮我统计每个知识点下近 30 天新增题目数量,按数量倒序取 Top 20。
第一步,确认 MCP 进程起来了。在 Claude Code 里输入:
用 dbx 看看当前有哪些数据库连接。如果配置正确,AI 会调用 dbx 的 MCP 工具,列出你已经配好的连接。返回大概是这样:
当前 dbx 中有 2 个连接: 1. local-mysql (MySQL, localhost:3306, database: exam_bank) 2. local-pg (PostgreSQL, localhost:5432, database: exam_vector)看到这个,说明 MCP 通道通了。如果这里就报错,先去看第 5 节的排查。
第二步,让 AI 查表结构:
用 dbx 看看 exam_bank 里有哪些表,告诉我 question 表的字段和索引情况。AI 会自己选库、查information_schema,返回表清单和question表的字段、索引。这一步的意义是让 AI 建立上下文,后面生成 SQL 的时候它知道字段名,不用你手动贴 schema。
第三步,发自然语言查询:
帮我统计每个知识点下近 30 天新增题目数量,按数量倒序,Top 20。AI 生成的 SQL 大致是这样:
SELECT k.id AS knowledge_id, k.name AS knowledge_name, COUNT(q.id) AS new_question_count FROM knowledge k LEFT JOIN question q ON q.knowledge_id = k.id AND q.created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY) GROUP BY k.id, k.name ORDER BY new_question_count DESC LIMIT 20;然后 AI 通过 MCP 执行这条 SQL,返回结果。我实测的返回是一个表格,前几行大概是这样:
knowledge_id | knowledge_name | new_question_count -------------|----------------|------------------- 12 | 动态规划 | 148 7 | 图论 | 132 23 | 字符串处理 | 97 ...整个过程你只说了三句话,没有复制粘贴 schema,没有手动写 SQL,没有切窗口。这就是 dbx MCP + TaoToken 组合起来的效果。如果你用的是 Cursor 或者 Windsurf,流程一样,只是入口不同。
再补一个验证:让 AI 解释一条慢 SQL。把下面这段贴进去:
用 dbx 解释这条 SQL 在干什么,可能的性能问题在哪: SELECT * FROM question WHERE content LIKE '%动态规划%' ORDER BY created_at DESC;AI 会指出LIKE '%...%'无法走索引、SELECT *可能带回大字段、ORDER BY在无索引情况下会 filesort。这些建议比空泛地说"加索引"有用得多,因为它结合了实际的表结构和索引情况。
5. 常见报错排查:401、local proxy failed、reading choices
这一节按真实报错来,都是我或者身边朋友实际遇到过的。你对照着看,基本能覆盖 90% 的问题。
401 Unauthorized。这个最常见,原因通常是 Key 不对。检查三件事:Key 有没有复制全(前后有没有空格)、Key 有没有过期、Base URL 有没有写错。TaoToken 的 API 地址是https://taotoken.net/api,OpenAI 兼容路径是https://taotoken.net/api/v1,别把网页地址https://taotoken.net/?utm_source=...填进去,那是给浏览器用的。如果你在 dbx 里填了带 UTM 的地址,模型调用肯定失败。重新去 API Keys 页面复制一个干净的 Key:
https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=local proxy failed。这个报错一般出现在 MCP 进程启动阶段,意思是本地代理或者进程拉起失败。先确认npx能不能用:
npx -y @dbx-app/mcp-server --version如果这条命令报command not found: npx,说明 Claude Code 直接 spawn 进程时不读你的 shell PATH。两种解决:用绝对路径,在终端跑where npx(Windows)或which npx(macOS/Linux),把结果填进.mcp.json的command字段;或者全局安装npm i -g @dbx-app/mcp-server,然后command直接填dbx-mcp的完整路径。另外检查DBX_DATA_DIR有没有指向正确的 data 目录,路径里别有中文和空格。
reading choices 相关报错。这个通常出现在模型返回格式不对的时候,比如返回体里没有choices字段。原因可能是 Base URL 拼错了,请求打到了非 OpenAI 兼容的端点;或者模型 ID 填错了,TaoToken 那边找不到对应模型。先用第 2 节的 curl 命令测一下,确认返回里有choices。如果 curl 通但 dbx 不通,那就是 dbx 的 Base URL 配置问题,检查是不是漏了/v1。
OAuth 相关报错。如果你在 Claude Code 侧看到 OAuth 报错,通常是 Claude Code 自己的登录态问题,和 dbx、TaoToken 无关。重新登录 Claude Code 即可。如果你用的是 Codex,auth.json里的配置要确认 Base URL 和 Key 对得上,三件套(Base URL、Key、Model ID)一个都不能少。
MCP 读不到连接。Portable 版用户高发。必须设DBX_DATA_DIR,指向DBX.exe同级的data目录,里面有dbx.db。如果你把 dbx 装在D:\tools\dbx\,那DBX_DATA_DIR就是D:/tools/dbx/data。注意路径用正斜杠,Windows 下反斜杠在 JSON 里要转义,容易出错。
中文表名显示问号。连接串加参数:MySQL 加?useUnicode=true&characterEncoding=utf8mb4,PostgreSQL 加?clientEncoding=UTF8。这个和 dbx 本身无关,是数据库连接编码问题。
Docker 版连不上宿主 MySQL。容器里localhost是容器自己。Windows/Mac 用host.docker.internal,Linux 用--network=host。这个坑我第一次用 Docker 版的时候也踩了,排查了半小时才反应过来。
6. 把 AI 查库接进你的日常工作流
配置跑通之后,真正有价值的是把它接进日常工作流。我现在的习惯是:写业务代码的时候,遇到不确定的数据分布,直接在 Claude Code 里问一句"用 dbx 查一下 xxx 表最近一周的写入量",不用切窗口。做数据迁移之前,先用 dbx 的 Schema Diff 对比 dev 和 prod 的结构差异,再用 MCP 让 AI 生成迁移脚本草稿,人工 review 后执行。写技术文章需要数据支撑的时候,让 AI 查完直接导出 Markdown 表格,省去手敲。
如果你要长期用 AI 做编码和 Agent 任务,Coding Plan 会比按量调用更划算,入口在这里:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=Claude Code 相关的接入细节,文档里有专门章节:
https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=最后提醒一句安全:MCP 给了 AI 连库权限,等于给了它读你数据的权限。生产库永远read_only;敏感字段(手机号、身份证、密码哈希)最好先做视图脱敏;.mcp.json不要提交到公开仓库,里面有你 TaoToken 的 Key。我一般把.mcp.json加进.gitignore,团队共享的时候用环境变量注入 Key,不写死在文件里。
这套组合我用了两周,最大的感受是"查库"这件事从"打开 GUI、找连接、写 SQL、看结果"变成了"说一句话"。dbx 负责连接和权限,TaoToken 负责模型通道,Claude Code 负责理解你的意图。三者各司其职,链路清晰,出问题也好排查。你可以先从模型对话页面验证通道,再配 dbx 的 AI 面板,最后接 MCP,一步步来,不容易乱。