8000 GitHub - kingGang/MongoPilot: mongo桌面工具 · GitHub
[go: up one dir, main page]

Skip to content

About

mongo桌面工具

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

MongoPilot

一款基于 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。


安装

方式一:下载发行版(推荐)

  1. 前往 Releases
  2. 下载适合你平台的安装包:
    • Windows:.msi 或 .exe(NSIS)
    • macOS:.dmg
    • Linux:.AppImage 或 .deb
  3. 运行安装程序并启动 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    # 构建生产版本安装包

快速开始

  1. 启动 MongoPilot。
  2. 点击侧边栏的「新建连接」,填写 MongoDB 连接信息。
  3. 点击「连接」。左侧数据库 / 集合树会自动展开。
  4. 打开一个集合,在编辑器中使用 MongoDB Shell 语法编写查询,点击「运行」。
  5. 在 Tree / Table / JSON 视图中浏览结果。
  6. 如需启用内置 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。

内置 AI 助手

模型设置支持原生 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,两种入口可以同时使用。

使用 Claude Code / Codex 连接 MCP

  1. 在 MongoPilot 中打开要使用的 MongoDB 连接。
  2. 打开 Tools → MCP · 外部 AI 接入,启用服务并选择共享连接。默认端口为 17835,仅监听 127.0.0.1。
  3. 如需读取编辑器、提议修改并在应用中展示查询结果,开启「编辑器协作」。只会共享所选连接的标签页。
  4. 点击「保存并启动」,再点击「生成接入配置」。
  5. 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 结果标签页。

AI / 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

About

mongo桌面工具

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

0