← 返回公开榜单
mo

furey/mongodb-lens

🍃🔎 MongoDB Lens: Full Featured MCP Server for MongoDB Databases

本周新增
23 星
近 3 周倍数
—
距上次推送
564 天
距上次发布
564 天
许可证
MIT

星标增长

每根柱子是这个周期记录下来的 star 增长:优先取逐个 stargazer 到达时间分桶的到达数,还没被 stargazer 扫描覆盖的仓库改用该周期的 star 净增;两个写者都没记录的周期画成虚线空档,而不是当成 0。柱高按各自窗口的峰值归一,两张图不共用坐标轴。指向任意一根柱子, tooltip 里是该周期的九项指标:当前值与周期内的净增。

指向或点击一根柱子,看当天的九项指标。

12/1712/301/111/242/62/193/33/16

2026 年 3 月 16 日 新增 23 个星标

窗口内最高的一天是 2026 年 3 月 16 日,新增 23 个星标。

证据时间轴

这个项目还没有记录到异动、发布或许可证变化。

README
该仓库存储的文档,若已生成中文翻译则一并显示

MongoDB Lens

License Docker Hub Version NPM Version Buy Me a Coffee

MongoDB Lens 是一个本地模型上下文协议 (MCP) 服务器,它使用自然语言通过 LLM 全功能访问 MongoDB 数据库,以执行查询、运行聚合、优化性能等。

内容

快速入门

功能

工具

其他功能

其他功能:概述

MongoDB Lens 包括许多其他功能:

  • 配置文件: 通过 ~/.mongodb-lens.[jsonc|json] 进行自定义配置
  • 环境变量覆盖: 通过 process.env.CONFIG_* 覆盖配置设置
  • 确认系统: 两步验证以执行可能导致数据丢失的破坏性操作
  • 多个 MongoDB 连接: 定义和切换命名的 URI 别名
  • 组件禁用: 选择性地禁用工具、提示或资源
  • 连接弹性:自动重连并使用指数退避
  • 查询保护:可配置的限制和性能保护
  • 错误处理:全面的 JSONRPC 错误代码和消息
  • 模式推断:使用智能采样进行高效的模式分析
  • 凭据保护:在日志中混淆连接字符串密码
  • 内存管理:自动监控和清理大型操作
  • 智能缓存:针对模式、索引、字段和集合进行优化的缓存
  • 向后兼容:支持现代和遗留 MongoDB 版本
其他功能:新的数据库元数据

MongoDB Lens 在它创建的每个数据库中插入一个 metadata 集合。

这个 metadata 集合存储一个包含上下文信息的单个文档,它充当数据库起源的永久记录,同时确保新的空数据库在 MongoDB 存储系统中持续存在。

示例元数据文档
{
    "_id" : ObjectId("67d5284463788ec38aecee14"),
    "created" : {
        "timestamp" : ISODate("2025-03-15T07:12:04.705Z"),
        "tool" : "MongoDB Lens v5.0.7",
        "user" : "anonymous"
    },
    "mongodb" : {
        "version" : "3.6.23",
        "connectionInfo" : {
            "host" : "unknown",
            "readPreference" : "primary"
        }
    },
    "database" : {
        "name" : "example_database",
        "description" : "Created via MongoDB Lens"
    },
    "system" : {
        "hostname" : "unknown",
        "platform" : "darwin",
        "nodeVersion" : "v22.14.0"
    },
    "lens" : {
        "version" : "5.0.7",
        "startTimestamp" : ISODate("2025-03-15T07:10:06.084Z")
    }
}

一旦你已将你自己的集合添加到你的新数据库中,你可以安全地通过 drop-collection 工具删除 metadata 集合:

  • "删除新数据库的元数据集合"
    ➥ 使用 drop-collection 工具(带确认)

安装

MongoDB Lens 可以通过多种方式安装和运行:

安装:NPX

[!NOTE]
NPX 要求你的系统上安装并运行 Node.js(建议使用 Volta)。

运行 MongoDB Lens 最简单的方法是使用 NPX。

首先,确保已安装 Node.js:

node --version # 理想情况下 >= v22.x,但 MongoDB Lens >= v18.x 兼容

然后,通过 NPX 运行 MongoDB Lens:

# 使用默认连接字符串 mongodb://localhost:27017
npx -y mongodb-lens@latest

# 使用自定义连接字符串
npx -y mongodb-lens@latest mongodb://your-connection-string

# 使用 "@latest" 以保持包最新
npx -y mongodb-lens@latest

[!TIP]
如果你遇到 npx 的权限错误,请在运行 npx -y mongodb-lens 之前运行 npx clear-npx-cache(这会清除缓存并重新下载包)。

安装:Docker Hub

[!NOTE]
Docker Hub 要求你的系统上安装并运行 Docker。

首先,确保已安装 Docker:

docker --version # 理想情况下 >= v27.x

然后,通过 Docker Hub 运行 MongoDB Lens:

# 使用默认连接字符串 mongodb://localhost:27017
docker run --rm -i --network=host furey/mongodb-lens

# 使用自定义连接字符串
docker run --rm -i --network=host furey/mongodb-lens mongodb://your-connection-string

# 使用 "--pull" 以保持 Docker 镜像最新
docker run --rm -i --network=host --pull=always furey/mongodb-lens

安装:从源代码安装 Node.js

[!NOTE]
从源代码安装 Node.js 要求你的系统上安装并运行 Node.js(建议使用 Volta)。

  1. 克隆 MongoDB Lens 存储库:
    git clone https://github.com/furey/mongodb-lens.git
    
  2. 进入克隆的存储库目录:
    cd /path/to/mongodb-lens
    
  3. 确保 Node.js 已安装:
    node --version # 理想情况下 >= v22.x,但 MongoDB Lens >= v18.x 兼容
    
  4. 安装 Node.js 依赖项:
    npm ci
    
  5. 启动服务器:
    # 使用默认连接字符串 mongodb://localhost:27017
    node mongodb-lens.js
    
    # 使用自定义连接字符串
    node mongodb-lens.js mongodb://your-connection-string
    

安装:从源代码安装 Docker

[!NOTE]
从源代码安装 Docker 要求你的系统上安装并运行 Docker。

  1. 克隆 MongoDB Lens 存储库:
    git clone https://github.com/furey/mongodb-lens.git
    
  2. 进入克隆的存储库目录:
    cd /path/to/mongodb-lens
    
  3. 确保 Docker 已安装:
    docker --version # 理想情况下 >= v27.x
    
  4. 构建 Docker 镜像:
    docker build -t mongodb-lens .
    
  5. 运行容器:
    # 使用默认连接字符串 mongodb://localhost:27017
    docker run --rm -i --network=host mongodb-lens
    
    # 使用自定义连接字符串
    docker run --rm -i --network=host mongodb-lens mongodb://your-connection-string
    

安装验证

要验证安装,请将以下 JSONRPC 消息粘贴到服务器的 stdio 中:

{"method":"resources/read","params":{"uri":"mongodb://your-mongodb-uri"},"jsonrpc":"2.0","id":1}

服务器应响应你的 MongoDB 实例中的数据库列表,例如:

{"result":{"contents":[{"uri":"mongodb://your-mongodb-uri","text":"Databases (12):\n- admin (180.00 KB)\n- config (108.00 KB)\n- local (40.00 KB)\n- sample_airbnb (51.88 MB)\n- sample_analytics (9.46 MB)\n- sample_geospatial (980.00 KB)\n- sample_guides (40.00 KB)\n- sample_mflix (108.90 MB)\n- sample_restaurants (7.73 MB)\n- sample_supplies (968.00 KB)\n- sample_training (40.85 MB)\n- sample_weatherdata (2.69 MB)"}],"jsonrpc":"2.0","id":1}

MongoDB Lens 现在已安装并准备好接受 MCP 请求。

安装:较旧的 MongoDB 版本

如果连接到 MongoDB 实例的版本 < 4.0,MongoDB Lens 使用的最新版本的 MongoDB Node.js 驱动程序将不兼容。具体来说,MongoDB Node.js 驱动程序版本 4.0.0 及以上要求 MongoDB 版本 4.0 或更高版本。

要使用 MongoDB Lens 与较旧的 MongoDB 实例一起使用,您需要使用 3.x 系列(例如 3.7.4)的 MongoDB Node.js 驱动程序。

较旧的 MongoDB 版本:从源代码运行

  1. 克隆 MongoDB Lens 存储库:
    git clone https://github.com/furey/mongodb-lens.git
    
  2. 进入克隆的存储库目录:
    cd /path/to/mongodb-lens
    
  3. 修改 package.json:
    "dependencies": {
      ...
    -  "mongodb": "^6.15.0",  // Or whatever newer version is listed
    +  "mongodb": "^3.7.4",   // Or whatever 3.x version is compatible with your older MongoDB instance
      ...
    }
    
  4. 安装 Node.js 依赖项:
    npm install
    
  5. 启动 MongoDB Lens:
    node mongodb-lens.js mongodb://older-mongodb-instance
    

这将使用与你的 MongoDB 实例兼容的旧驱动程序版本。

[!NOTE]
你可能还需要回滚 这个提交 以添加回 useNewUrlParser 和 useUnifiedTopology MongoDB 配置选项。

较旧的 MongoDB 版本:使用 NPX 或 Docker

如果你更喜欢使用 NPX 或 Docker,你需要使用与兼容的旧版本的 MongoDB Lens 发布版。

例如,MongoDB Lens 8.3.0 使用 MongoDB Node.js 驱动程序 3.7.4(参见 package-lock.json)。

要使用 NPX 运行 MongoDB Lens 的旧版本,请指定版本标签:

npx -y mongodb-lens@8.3.0

类似地,对于 Docker:

docker run --rm -i --network=host furey/mongodb-lens:8.3.0

配置

配置:MongoDB 连接字符串

服务器接受 MongoDB 连接字符串作为其唯一的参数。

示例 NPX 使用:

npx -y mongodb-lens@latest mongodb://your-connection-string

MongoDB 连接字符串的格式如下:

mongodb://[username:password@]host[:port][/database][?options]

示例连接字符串:

  • 本地连接:
    mongodb://localhost:27017
  • 连接到 mydatabase 并使用 admin 数据库的凭据:
    mongodb://username:password@hostname:27017/mydatabase?authSource=admin
  • 连接到 mydatabase 并使用各种其他选项:
    mongodb://hostname:27017/mydatabase?retryWrites=true&w=majority

如果未提供连接字符串,服务器将尝试通过本地连接连接。

配置:配置文件

MongoDB Lens 支持通过 JSON 配置文件进行广泛的自定义。

[!NOTE]
配置文件是可选的。如果未提供配置文件,MongoDB Lens 将使用默认设置运行。

[!TIP]
你只需要在配置文件中包含你想自定义的设置。MongoDB Lens 将为省略的值使用默认设置。

[!TIP]
MongoDB Lens 支持两种格式的配置文件:.json 和 .jsonc(带注释的 JSON)。

示例配置文件
{
  "mongoUri": "mongodb://localhost:27017",         // 默认 MongoDB 连接字符串或别名-URI 对象
  "connectionOptions": {
    "maxPoolSize": 20,                             // 连接池中的最大连接数
    "retryWrites": false,                          // 是否重试写操作
    "connectTimeoutMS": 30000,                     // 连接超时(毫秒)
    "socketTimeoutMS": 360000,                     // 套接字超时(毫秒)
    "heartbeatFrequencyMS": 10000,                 // 多久 ping 服务器以检查状态
    "serverSelectionTimeoutMS": 30000              // 服务器选择超时
  },
  "defaultDbName": "admin",                        // 如果 URI 中未指定,则默认数据库
  "connection": {
    "maxRetries": 5,                               // 初始连接尝试的最大次数
    "maxRetryDelayMs": 30000,                      // 重试尝试的最大延迟
    "reconnectionRetries": 10,                     // 连接丢失时的最大重连尝试次数
    "initialRetryDelayMs": 1000                    // 重试的初始延迟
  },
  "disabled": {
    "tools": [],                                   // 要禁用或全部禁用工具的数组
    "prompts": [],                                 // 要禁用或全部禁用提示的数组
    "resources": []                                // 要禁用或全部禁用资源的数组
  },
  "enabled": {
    "tools": true,                                 // 要启用或全部启用的工具的数组
    "prompts": true,                               // 要启用或全部启用的提示的数组
    "resources": true                              // 要启用或全部启用的资源的数组
  },
  "cacheTTL": {
    "stats": 15000,                                // 统计缓存的生命周期(毫秒)
    "fields": 30000,                               // 字段缓存的生命周期(毫秒)
    "schemas": 60000,                              // 模式缓存的生命周期(毫秒)
    "indexes": 120000,                             // 索引缓存的生命周期(毫秒)
    "collections": 30000,                          // 集合列表缓存的生命周期(毫秒)
    "serverStatus": 20000                          // 服务器状态缓存的生命周期(毫秒)
  },
  "enabledCaches": [                               // 要启用的缓存列表
    "stats",                                       // 统计缓存
    "fields",                                      // 集合字段缓存
    "schemas",                                     // 集合模式缓存
    "indexes",                                     // 集合索引缓存
    "collections",                                 // 数据库集合缓存
    "serverStatus"                                 // MongoDB 服务器状态缓存
  ],
  "memory": {
    "enableGC": true,                              // 是否启用垃圾回收
    "warningThresholdMB": 1500,                    // 警告的内存阈值(MB)
    "criticalThresholdMB": 2000                    // 关闭缓存的内存阈值(MB)
  },
  "logLevel": "info",                              // 日志级别(info 或 verbose)
  "disableDestructiveOperationTokens": false,      // 是否跳过确认破坏性操作
  "watchdogIntervalMs": 30000,                     // 连接监控间隔(毫秒)
  "defaults": {
    "slowMs": 100,                                 // 慢查询检测阈值(毫秒)
    "queryLimit": 10,                              // 查询结果的默认限制
    "allowDiskUse": true,                          // 允许操作使用磁盘进行大型数据集
    "schemaSampleSize": 100,                       // 模式推断的采样大小
    "aggregationBatchSize": 50                     // 聚合操作的批处理大小
  },
  "security": {
    "tokenLength": 4,                              // 确认令牌的长度
    "tokenExpirationMinutes": 5,                   // 令牌过期时间(分钟)
    "strictDatabaseNameValidation": true           // 强制严格数据库名称验证
  },
  "tools": {
    "transaction": {
      "readConcern": "snapshot",                   // 事务的读取隔离级别
      "writeConcern": {
        "w": "majority"                            // 事务的写入隔离级别
      }
    },
    "bulkOperations": {
      "ordered": true                              // 是否按顺序执行批量操作
    },
    "export": {
      "defaultLimit": -1,                          // 导出的默认限制(-1 = 无限制)
      "defaultFormat": "json"                      // 导出的默认格式(json 或 csv)
    },
    "watchChanges": {
      "maxDurationSeconds": 60,                    // 更改流的最大持续时间(秒)
      "defaultDurationSeconds": 10                 // 更改流的默认持续时间(秒)
    },
    "queryAnalysis": {
      "defaultDurationSeconds": 10                 // 查询分析的默认持续时间(秒)
    }
  }
}

默认情况下,MongoDB Lens 在以下位置查找配置文件:

  • ~/.mongodb-lens.jsonc 首先查找,如果不存在则回退到
  • ~/.mongodb-lens.json 如果前者不存在

要自定义配置文件路径,将环境变量 CONFIG_PATH 设置为所需的文件路径。

示例 NPX 使用:

CONFIG_PATH='/path/to/config.json' npx -y mongodb-lens@latest

示例 Docker Hub 使用:

docker run --rm -i --network=host --pull=always -v /path/to/config.json:/root/.mongodb-lens.json furey/mongodb-lens

配置:配置文件生成

你可以使用 config:create 脚本自动生成配置文件:

# NPX 使用(推荐)
npx -y mongodb-lens@latest config:create

# Node.js 使用
npm run config:create

# 强制覆盖现有文件
npx -y mongodb-lens@latest config:create -- --force
npm run config:create -- --force

此脚本提取上面的示例配置文件并保存到: ~/.mongodb-lens.jsonc

配置文件生成:自定义路径

你可以使用 CONFIG_PATH 环境变量指定自定义输出位置。

  • 如果 CONFIG_PATH 没有文件扩展名,则将其视为目录并追加 .mongodb-lens.jsonc
  • 如果 CONFIG_PATH 以 .json(不是 `.

页面上的每个数字都来自记录下来的 stargazer 到达时间,没有评分公式,也没有 AI 判定。 任何结论都可以用 /api/v1/repos/{id}/stats 里的原始增量自己重算。