一款基于 Tauri 2 和 Vue 3 构建的现代化跨平台 MongoDB 图形客户端。 连接管理、查询编写、数据浏览、AI 辅助——全部集成在一个轻量级原生应用中。
- 连接管理 — 多连接保存,凭证加密存储;支持标准 URI、主机端口、副本集
- SSH 隧道 — 通过 SSH 跳板机连接 MongoDB(支持密码与密钥认证)
- 查询编辑器 — Monaco Editor,支持 JavaScript / MongoDB Shell 语法、智能补全与查询历史
- 多视图结果 — Tree / Table / 原始 JSON 三种视图切换,大结果集分页
- CRUD 操作 — 文档增删改查,内置编辑器
- 索引管理 — 查看、创建、删除集合索引
- 服务器监控 — 实时服务器状态、活跃操作、慢查询分析器
- 用户管理 — 列出、创建、删除指定数据库的 MongoDB 用户
- 导入 / 导出 — 查询结果导出为 JSON / CSV / XLSX;JSON / CSV 导入回集合
- AI 辅助 — 自带 API Key,支持 Anthropic / OpenAI Responses / Chat Completions 兼容接口、流式任务和只读查询验证
- 本地 MCP — Claude Code / Codex 可复用已打开的连接和 SSH 隧道,进行只读查询、Schema 分析及编辑器协作
- 国际化 — 界面支持中文和英文
截图待补充,欢迎提交 Pull Request。
- 前往 Releases
- 下载适合你平台的安装包:
- Windows:
.msi或.exe(NSIS) - macOS:
.dmg - Linux:
.AppImage或.deb
- Windows:
- 运行安装程序并启动 MongoPilot。
| 工具 | 最低版本 | 安装地址 |
|---|---|---|
| Node.js | 18+ | https://nodejs.org |
| pnpm | 9+ | npm i -g pnpm |
| Rust(stable) | 1.88+ | https://rustup.rs |
| Tauri 系统依赖 | — | https://tauri.app/start/prerequisites/ |
git clone https://github.com/kingGang/MongoPilot.git
cd MongoPilot
./setup.sh # 检查依赖并安装 Node 包
pnpm tauri dev # 开发模式
# 或
pnpm tauri build # 构建生产版本安装包- 启动 MongoPilot。
- 点击侧边栏的「新建连接」,填写 MongoDB 连接信息。
- 点击「连接」。左侧数据库 / 集合树会自动展开。
- 打开一个集合,在编辑器中使用 MongoDB Shell 语法编写查询,点击「运行」。
- 在 Tree / Table / JSON 视图中浏览结果。
- 如需启用内置 AI,前往「Tools → AI Settings」选择协议、填写服务地址、API Key 和模型 ID。
编辑器脚本支持 process.env.NAME,读取 MongoPilot 启动时继承的环境变量,未设置的变量为 undefined,可使用 || 或 ?? 指定默认值。修改系统环境变量后需重新启动应用。每次执行使用独立快照,脚本内修改不会写回系统环境;此兼容对象仅提供 env,不包含其他 Node.js process API。
编辑器工具栏的“执行预估”会对当前选区(无选区则为整个脚本)做静态边界分析,展示目标库/集合、潜在读写、空条件全量操作、upsert、单条/批量调用和聚合输出目标。不会运行编辑器 JavaScript、load 或模拟写入;动态函数、分支、循环和未支持语法会明确保留为未知。预估窗口绑定打开时的脚本与目标快照,不执行脚本,也不授予写入权限。
“只读检查匹配数量与计划”仅对能静态确定的条件执行限时 countDocuments 和 queryPlanner 等价筛选计划,支持只读连接。一次最多 20 个条件,并发 4 个,计数最多 10001 条、数据库计数时限 1.5 秒;达到上限显示“至少”,错误或超时显示未知。当前计数不是实际 modifiedCount;前序写入、重复调用、并发、collation、索引和文档校验均可能影响实际结果,不能据此承诺整段脚本的影响上限或耗时。只读计数不会应用更新表达式;实际执行仍由用户点击 Run。
模型设置支持原生 Anthropic Messages、OpenAI Responses,以及 Chat Completions 兼容服务。可以从服务加载模型列表,也可以手动填写 ID。自定义本地服务允许不填 API Key;Temperature 留空时使用模型默认值。可配置输出上限(128–32768 tokens)和请求超时(10–300 秒,默认 90 秒)。「测试连接与工具能力」会发送一条简短模型请求,验证流式输出及工具调用,不访问数据库。该请求可能产生模型服务费用;连接成功但工具测试失败的模型不适合执行数据库任务。
内置任务循环由 Rust 管理,会话和每一步结果保存在本机。生成前读取任务目标的采样 Schema、索引、全局规则、目标连接规则及对应作用域的事实;不会混入其他连接的业务约定。任务目标固定在开始时的标签页,用户切换界面焦点不改变它;助手可通过显式工具切换任务目标。查询前必须已成功读取目标 Schema。
助手与 MCP 共用只读数据库工具,可查询、聚合和 Explain,将结果交给模型继续修正。完整查询结果进入独立的 AI 结果标签页和查询历史,交给模型的文档预览有额外大小限制。已有代码通过 Diff 提议修改;新查询写入编辑器后由用户执行。规则提议由用户确认保存。
上下文窗口可按模型实际容量配置(8192–2000000 tokens,默认 65536)。每轮预算包含系统上下文、工具定义、历史和协议续接数据,预留输出与安全余量;未知模型采用 UTF-8 字节数作为保守 token 估算,界面显示估算用量。完整历史保存在 SQLite;超出请求预算时按工具调用/结果成组裁剪,同时从当前目标的原始记录提取早期任务、近期要求、工具状态和历史结论摘要。摘要是有长度限制的摘录,不等同于完整历史,也不能授予权限。
历史按连接、数据库、集合分区;显式切换目标后重新加载对应历史、规则和事实,保留本轮用户任务。旧版未标注目标的记录仍可在本地查看,不自动发送给模型。外部 MCP 客户端的对话摘要和窗口管理由客户端负责。
AI 和 MCP 只提供只读数据库工具,不直接执行修改语句。需要写入时,助手将语句放入编辑器,由用户手动点击 Run;手动运行脚本和操作数据无需额外逐次授权。只读连接仍由 Rust 后端拒绝写入,原有的删除等操作确认保留。脚本按顺序执行,已成功的写入不会因后续失败自动回滚。导出和字段扫描拒绝写入型聚合。
界面显示生成中的文本、当前步骤、工具参数、成功或失败的结果、耗时和服务报告的 token 用量。停止会取消模型请求、数据库工具和等待中的用户交互;任务最多 16 轮,同参数的连续三次相同工具错误会结束任务。模型请求另有 30 秒无数据超时。协议错误、输出截断或无完成标记的流不会执行工具,也不会自动移除工具能力后重试。兼容服务若只返回完整 JSON,能力测试会明确提示没有检测到流式输出。
外部 Claude Code / Codex 使用下方 MCP 接入现有客户端及其账户;内置聊天使用这里配置的模型 API,两种入口可以同时使用。
- 在 MongoPilot 中打开要使用的 MongoDB 连接。
- 打开 Tools → MCP · 外部 AI 接入,启用服务并选择共享连接。默认端口为
17835,仅监听127.0.0.1。 - 如需读取编辑器、提议修改并在应用中展示查询结果,开启「编辑器协作」。只会共享所选连接的标签页。
- 点击「保存并启动」,再点击「生成接入配置」。
- Claude Code:将 JSON 合并到项目根目录
.mcp.json;Codex:将 TOML 合并到~/.codex/config.toml。重新连接客户端中的 MCP。
可以直接告诉外部助手:
使用 mongopilot MCP 查看当前集合的字段和索引,查询最近的订单,并把可复用的查询放到 MongoPilot 编辑器。
外部助手使用自己的模型配置,MongoPilot 无需配置 AI API Key。服务随 MongoPilot 进程退出而停止;已启用的设置会在下次启动时恢复。修改共享范围或重置令牌后,旧 MCP 会话会结束,需要重新连接。
| 工具 | 能力 |
|---|---|
list_connections |
列出共享连接及连接状态,不返回密码、URI 或 SSH 凭证 |
list_databases / list_collections |
浏览明确指定的连接和数据库 |
describe_collection |
读取采样 Schema、索引、全局及目标连接的规则、目标作用域的事实;不返回字段样例值 |
find_documents / aggregate |
使用结构化 Extended JSON 执行只读查询 |
explain |
返回 find 或聚合的 queryPlanner |
get_app_context |
开启编辑器协作后,读取共享标签页、代码选区和版本标识 |
open_query_tab / propose_editor_edit |
新建查询标签页或提议 Diff;不执行查询,不自动应用修改 |
数据库操作必须显式传入 connectionId、database,集合操作还需 collection。输入使用 MongoDB Extended JSON,例如 ObjectId 为 {"$oid":"507f1f77bcf86cd799439011"},日期为 {"$date":"2026-10-16T00:00:00Z"}。返回值使用 Canonical Extended JSON,保留大整数和 Decimal128 等 BSON 类型。
查询默认返回 50 条,最多 200 条;数据库执行上限 5 秒、工具上限 10 秒(另有最多 1 秒的历史记录写入),结果上限约 1 MiB。hasMore、nextOffset 和 truncated 表示后续分页及截断情况。分页时请明确排序。首版不自动计算匹配总数,也不支持任意 JS/mongosh 或数据库管理命令。
聚合使用只读阶段白名单,递归检查 $facet、$lookup 和 $unionWith 的子管道,拒绝 $out、$merge、服务端 JavaScript 及未知阶段。跨集合查询限制在同一数据库。Schema 采样 100 条并缓存 5 分钟,未出现的字段不代表不存在。编辑器上下文可能被截断,会返回相应标记;提议编辑需携带最新 expectedRevision,用户修改内容或切换目标后旧提议失效。
访问令牌在本地加密保存;生成的客户端配置包含令牌。MCP 不开放数据库写操作,即使所共享的连接本身具有写权限。查询会进入应用历史;开启编辑器协作时,成功结果还会进入独立的 MCP 结果标签页。
pnpm test
cd src-tauri && cargo test --lib真实 MongoDB 集成测试默认跳过,仅对隔离、可丢弃的本机实例运行:设置 MONGOPILOT_TEST_MONGO_PORT,再运行 cargo test --lib -- --ignored。分别验证 MCP 与 Rust AI 任务的数据库流程,测试会创建并删除独立测试数据库。三种模型协议通过本机模拟 HTTP 服务验证,不调用付费模型账户。
界面集成验证:先运行 pnpm exec vite --host 127.0.0.1 --port 1499 --strictPort,再运行 node scripts/verify-mcp-ui.mjs 和 node scripts/verify-ai-ui.mjs。验证使用模拟 Tauri 接口,不读取本机保存的数据;需要已安装 Playwright Chromium。
node scripts/verify-preflight-ui.mjs 验证静态跨库边界、只读匹配检查、集合扫描提示,以及预估过程不执行脚本、不触发 Run/写入。
- 凭证加密 — 保存的连接凭证(密码、SSH 密钥)使用 AES-256-GCM 加密, 密钥在首次启动时自动生成并存放在操作系统的应用数据目录中,永不离开你的电脑。
- AI API Key — 使用 AES-256-GCM 加密保存在本地 SQLite 中,旧版明文配置会在读取时迁移;仅会发送给你配置的 AI 服务提供方, 不会传输给任何其他第三方。请自行妥善保管你的 API Key。
| 层级 | 技术 |
|---|---|
| 桌面外壳 | Tauri 2 |
| 前端 | Vue 3 + TypeScript |
| UI 组件库 | Naive UI |
| 代码编辑器 | Monaco Editor |
| 图表 | ECharts + vue-echarts |
| 状态管理 | Pinia |
| 国际化 | vue-i18n |
| 后端 | Rust(stable) |
| MongoDB 驱动 | mongodb crate v3 |
| SSH 隧道 | ssh2 crate |
| 加密 | aes-gcm crate(AES-256-GCM) |
| 本地数据库 | SQLite(via sqlx) |
| 构建工具 | Vite 6 |
| 测试框架 | Vitest + Playwright |
pnpm tauri dev # 启动开发模式(Vite :1420 + Tauri 窗口)
pnpm test # 运行单元测试
pnpm lint # ESLint 检查
pnpm format # Prettier 格式化欢迎贡献!提交 PR 前请先阅读 CONTRIBUTING.md。
MIT — Copyright 2026 MongoPilot Contributors