关于 SafeSelect MCP
SafeSelect MCP 为编码 Agent 提供 PostgreSQL 和 MongoDB 的只读数据库访问,适合需要真实数据库上下文的调试与排查。它通过本地策略、结果限制和超时控制读取,并将数据库凭据保存在聊天之外。
主要功能
- 01以只读工具访问 PostgreSQL 和 MongoDB
- 02发现表、集合与索引
- 03导入 DBeaver、Docker Compose 和 Compass 连接
- 04按项目设置访问规则、结果上限和超时
- 05通过 MCP stdio 在本地运行
适用场景
- 01根据数据库上下文排查代码问题
- 02检查表结构、集合和索引
- 03查看与问题相关的少量数据或查询计划
MCP 相关
SafeSelect 通过 MCP stdio 向编码 Agent 暴露 PostgreSQL 和 MongoDB 的只读工具;内置安装流程可配置多种 MCP 客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
SafeSelect
为编码 Agent 提供 PostgreSQL 和 MongoDB 只读访问权限。
借助真实数据库上下文进行调试,无需暴露写入工具。
导入现有连接。避免在聊天中泄露凭据。
开始使用 → · 演示 · Agent · 安全与质量 · 文档 · 网站
为什么选择 SafeSelect?
为编码 Agent 提供调查错误、了解架构或检查查询计划所需的数据库上下文。SafeSelect 为 PostgreSQL 和 MongoDB 提供只读工具,并支持本地策略和有界结果。
- 借助数据库上下文进行调试。 在读取与任务相关的行或文档之前,先发现表、集合和索引。
- 从现有连接开始。 从 DBeaver、Docker Compose 或 MongoDB Compass 导入,包括基于 SSH 的连接。
- 掌控访问权限。 设置项目专属的访问规则、行数限制和超时。密码保存在 macOS Keychain 或环境变量中。
- 在本地运行。 Agent 通过 MCP stdio 连接,不会启动 MCP 网络监听器。即使配置的数据库凭据允许写入,SafeSelect 也会强制限制其只读工具范围。
重要
SafeSelect 的只读边界仅涵盖其数据库工具。Agent 的 shell、其他 MCP 服务和直接凭据不受此边界限制。 请使用最小权限数据库用户,并从开发数据或经过脱敏的副本开始。请参阅威胁模型和限制。
实际演示
从 Homebrew 安装到连接 Agent:导入 DBeaver 连接,将密码保存在 Keychain 中,然后让 OpenCode 通过只读工具检查一笔订单。 如需了解更多客户端、MongoDB 和 Linux 入门流程,请参阅演示集。
快速开始
在仓库根目录运行设置。你需要一个 PostgreSQL 或 MongoDB 连接,以及用于数据库命令的 Java 17+ 运行时。
1. 安装
在 macOS 上使用 Homebrew:
brew install antonillos/tap/safeselect
有关 Linux、预构建二进制文件、asdf、Java 设置或从源代码构建,请参阅安装指南。
2. 导入连接
选择你已在使用的连接来源:
| 连接来源 | 命令 |
|---|---|
| DBeaver 导出文件 | safeselect import-dbeaver ~/Downloads/dbeaver-export.zip |
| Docker Compose 中的 PostgreSQL | safeselect import-compose |
| MongoDB Compass | safeselect import-compass --path "$HOME/.config/MongoDB Compass" |
使用你实际的导出文件或 Compass 目录,然后按照导入程序的驱动和密码设置步骤操作。请勿将机密信息放入项目文件或聊天中。 如需完整的 SSH 连接示例,请参阅 DBeaver → Codex 操作指南。
3. 连接你的 Agent
# Verify connectivity; this can open SSH tunnels and contact databases.
safeselect check
# Replace codex with opencode, or choose another supported client below.
safeselect agent install codex
safeselect agent status
如果你有多个环境,请在 check 和 agent install 命令中都添加 --environment <name>,以选择目标数据库。不指定时,check 会测试所有环境;只有在恰好存在一个环境时,安装才会推断目标环境。
打开或重启你的 Agent,并在出现提示时批准 MCP 服务。默认使用用户级范围安装;在支持的情况下,添加 --local 可使用项目级范围。
请参阅客户端配置与范围。
4. 试用
向你的 Agent 提问:
使用 SafeSelect 识别已连接的后端。对于 PostgreSQL,列出表并使用目录元数据描述其中一张表。对于 MongoDB,仅列出数据库和集合。读取行或抽样文档前请停止。
成功标志: Agent 能报告数据库身份以及可用的表或集合,无需在对话中提供数据库密码。 然后让它针对某个具体问题进行调查,并进行小规模、有针对性的读取。 MongoDB 架构推断会抽样文档,因此只有在你准备好读取数据时才包含这一步。
需要帮助? 运行 safeselect doctor --environment <name> 并按照下一步操作。诊断可能会连接数据库。请参阅连接诊断或Agent 恢复指南。
支持的 Agent
OpenAI Codex · OpenCode · Claude Code · Cursor · Windsurf · GitHub Copilot · Gemini CLI
SafeSelect 可与通过 stdio 通信的 MCP 客户端配合使用。内置安装功能支持上述客户端;集成指南介绍了配置、范围和手动设置。Codex 和 OpenCode 还会获得四个可移植的工作流技能。更新 SafeSelect 后,运行 safeselect agent upgrade <client> 并重新加载客户端。
安全性与质量证据
SafeSelect 会在数据库执行前根据项目策略验证请求。 普通策略拒绝会返回错误;严重安全攻击以及内部验证或审计失败会导致服务停止。结果限制和超时会约束读取操作,查询文本会经过哈希处理并记录到审计记录中。
数据库安全测试套件会针对一次性 PostgreSQL 和 MongoDB 测试数据运行。拒绝测试用例会检查预期错误,并将生成的数据库状态与基线进行比较,因此仅返回拒绝响应不足以通过测试。
| 检查内容 | 查看证据 |
|---|---|
| SQL 写入、堆叠语句和具有副作用的函数 | PostgreSQL 安全测试 |
| MongoDB 写入阶段、服务器端 JavaScript 和访问边界 | MongoDB 安全测试 |
| 格式错误的 MCP 请求、策略拒绝和关闭行为 | MCP 回归测试 |
| Rust 和 Java 复杂度及测试覆盖率 | CRAP 报告和 CI 工件 |
| 提交签名和消息格式 | 提交策略 |
请参阅如何验证 CI 执行,查看与特定提交对应的结果。测试源代码描述了检查内容;匹配的成功运行则提供执行证据。待运行或已跳过的测试套件均未经过验证,徽章也可能对应不同的修订版本。
请阅读威胁模型与限制、安全模型或架构,了解这些控制措施的范围。 有关替代方案及其权衡,请参阅数据库 MCP 对比。
文档
| 我想要…… | 从这里开始 |
|---|---|
| 安装、更新或卸载 | 安装指南 |
| 设置我的编码 Agent | AI Agent 集成 |
| 导入由 SSH 支持的 DBeaver 连接 | DBeaver → Codex 操作指南 |
| 查看示例 | 演示集锦 · 可视化命令集锦 |
| 查找命令或 MCP 工具 | CLI 参考 · MCP 工具 |
| 配置策略、环境或密码 | 配置 |
| 了解安全边界 | 威胁模型和限制 · 架构 |
| 查看质量检查和安全测试 | CI 和 CRAP 报告 · 安全测试套件 |
| 查找软件包和目录列表 | 分发 |
| 构建或参与贡献 | 贡献指南 · 更新日志 |
反馈与贡献
遇到设置问题或有功能请求?提交问题。 如果反馈设置问题,请注明所用客户端、操作系统和出错步骤;请勿提供 凭据、连接导出内容或数据库内容。 请通过安全政策报告安全漏洞。
欢迎贡献——请参阅贡献指南开始参与。
许可证
MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。