让 Claude Code 查数据库,但别把生产库钥匙交给它:DBJoy 的本地 MCP 只读方案
让编码 Agent 回答“这个项目的用户表有哪些字段?”听起来简单,真正接入数据库却很容易走向两个极端:把连接串和密码放进项目配置,或者每次都手工查库、复制结果给模型。前者扩大了凭据暴露面,后者又失去了自动化价值。
DBJoy 是一款面向 macOS 的 PostgreSQL 客户端。它值得开发者关注的,不只是自然语言转 SQL,而是把“人用的数据库桌面客户端”变成 Claude Code 等 MCP 客户端可调用的本机数据入口:连接凭据留在 DBJoy,Agent 只访问明确共享的连接,并通过只读工具查询。
它解决的是凭据边界,而不只是 SQL 生成
DBJoy 支持保存多个数据库连接,密码放在 macOS Keychain,也能配置 SSL 和 SSH 隧道。AI 助手可以根据自然语言查看表结构、执行查询并在聊天中展示结果;让它生成 SQL 时,查询会先放进新标签页,交由开发者检查、运行或保存。
更关键的是,DBJoy 可以启用本地 MCP 服务,把选定连接提供给 Claude Code 等客户端。README 给出的默认地址是 http://127.0.0.1:47821/mcp,采用 Streamable HTTP。服务默认不共享任何连接;操作者需要在设置中启用“Let MCP clients read your databases”,再逐个选择允许共享的连接。
这形成了一个清楚的边界:项目仓库不必保存数据库密码,Agent 也看不到其他未共享的连接。DBJoy 必须保持运行,但不必打开对应的数据库窗口。对本机开发库、测试库或临时排查场景,这种本地桥接方式比把凭据塞进 .env 再交给 Agent 更容易审计和撤销。
从 Claude Code 接入
先从 GitHub Releases 下载签名并经 Apple 公证的 DMG,安装要求为 macOS 15 或更新版本、Apple Silicon。打开 DBJoy,添加连接并确认数据库在桌面客户端内可正常访问,然后进入 Settings → MCP,打开 MCP 读取选项并勾选要共享的连接。
README 给出的 Claude Code 配置命令如下。认证令牌应从 DBJoy 的 Copy Token 操作取得,避免把真实令牌写进文章、项目文件或版本库:
claude mcp add --transport http --scope user dbjoy http://127.0.0.1:47821/mcp \
--header "Authorization: Bearer ${DBJOY_MCP_TOKEN}"
以上命令中的 DBJOY_MCP_TOKEN 是供本机 shell 使用的示意环境变量;执行前先在当前终端将 DBJOY_MCP_TOKEN 设为从 DBJoy 复制的令牌;例如使用 read -s DBJOY_MCP_TOKEN 隐藏输入,再执行命令。不要把令牌提交到代码库。添加完成后,在 Claude Code 中运行 /mcp 检查连接;之后可以在项目的 CLAUDE.md 写明应使用哪个 DBJoy 连接,例如“数据库是 DBJoy connection Andromeda (dev)”,避免 Agent 在多个共享连接间自行猜测。
可用工具边界也较明确:list_connections 列出共享连接;list_tables 查看 schema 中的表、视图和例程;describe_table 查看列、键、索引、约束和外键;run_query 接受 SELECT、WITH、EXPLAIN、SHOW 或 VALUES,返回最多 100 行。查询超时为 30 秒。
只读不等于“无需治理”
DBJoy 文档说明 MCP 查询会在只读事务中执行,非读取语句会被拒绝,连藏在 CTE 或函数中的写操作也会受到事务只读约束。服务器只绑定 127.0.0.1,请求需带令牌,并拒绝来自其他网站的请求;设置里的 Recent activity 会记录客户端、连接和 SQL。连接可以取消共享,重置令牌则能断开全部客户端。
这些措施降低了误写和凭据扩散风险,但并不意味着可以把敏感数据无条件暴露给模型。只读查询仍可能读取个人信息、商业数据或密钥;应只共享确有需要的开发/测试连接,收紧数据库账号权限,并检查 Agent 的数据访问策略。生产连接应格外谨慎,DBJoy 的桌面 AI 助手对生产连接写入会要求 SQL 审核和确认,但 MCP 文档强调的是只读查询,不能把桌面编辑流程误当成 Agent 的写入授权机制。
适合什么团队
如果开发者常需要询问数据结构、验证只读查询,或让 Claude Code 在开发库中查找上下文,DBJoy 提供了一条不把密码放进项目配置的接入路径。若团队需要跨平台服务端部署、集中身份治理或自动化写库审批,这款 macOS 桌面应用并不能替代完整的数据访问网关;它要求 Apple Silicon Mac 和 DBJoy 本机运行,MCP 服务本身也只监听本机地址。
这个设计的价值在于把 Agent 数据访问拆成可见的授权动作:选择连接、只开放读取、查看每次 SQL,并保留随时撤销的入口。让模型“能查”并不难,值得认真设计的是它究竟能查什么、凭据留在哪里,以及出了问题后能否追溯。
相关链接