Docs 菜单
Docs 主页
/ /

MongoDB MCP 服务器内存溢出

当MongoDB MCP服务器运行 findaggregate 等工具时,它必须将查询结果暂时保存在内存中,然后才能将其返回给客户端。在以下情况下,这些操作消耗的内存可能超过可用内存,并有内存不足崩溃或服务器性能下降的风险:

  • 获取的文档过多。

  • 获取非常大的文档。

  • 在处理多个并发工具调用的服务器上运行。

为了缓解这些问题,MCP服务器使用:

  • 查询或聚合使用和返回的内存的可配置硬上限。

  • 专用游标迭代器,用于在从MongoDB读取时跟踪文档计数和内存使用情况,并在超过配置的限制之前停止读取。

这些保护措施旨在防止单个工具调用耗尽服务器内存,并鼓励仅返回 LLM 可在其上下文窗口中实际使用的数据的模式。

MCP服务器提供配置点,用于控制允许单个工具调用检索并在内存中保存多少数据。它们分为两组:

  • 服务器限制:适用于服务器处理的所有工具调用。

  • 工具调用限制:针对客户端或代理每次工具调用的次数进行设置。

在 MCP服务器上配置的服务器限制用作所有 findaggregate 调用的内存使用上限。下表描述了可用于限制内存使用的服务器配置:

CLI选项名称
操作系统环境变量名称
默认
说明

maxBytesPerQuery

MDB_MCP_MAX_BYTES_PER_QUERY

16777216

查找或聚合工具调用结果的最大大小(以字节为单位)。 MDB_MCP_MAX_BYTES_PER_QUERY 用作 findaggregateresponseBytesLimit 参数的上限。

maxDocumentsPerQuery

MDB_MCP_MAX_DOCUMENTS_PER_QUERY

100

查找或聚合工具调用可返回的最大文档数。对于查找工具,有效限制将是该值和 工具限制中的较小者。

单个工具调用还可以控制请求的数据量。下表描述了可用于限制内存使用的工具调用参数:

Parameter
工具
默认
说明

limit

find

10

find 调用可以返回的最大文档数。

find.limit 与服务器范围的限制maxDocumentsPerQuery find相结合,以便 响应的有效文档限制是这两个值中较小的一个。

responseBytesLimit

findaggregate

1 MB

查找或聚合工具调用可以返回的最大有效负载。

responseBytesLimit 与全服务器限制maxBytesPerQuery 相结合,使工具调用响应的有效限制为这两个值中较小的一个。

如果在游标从MongoDB读取文档时达到任何配置的限制, MongoDB MCP服务器将停止获取其他文档并返回收集的部分结果设立。

在获取所有文档之前达到配置的内存或文档限制可能会导致接收的文档少于请求的文档。您可能需要:

  • 使用调整后的参数发出后续调用。

  • 减少返回到 LLM 的数据量。示例,通过使用聚合阶段。

  • MongoDB MCP 服务器配置选项

  • MongoDB MCP 服务器配置方法

  • 启用或禁用MongoDB MCP 服务器功能

  • 从MongoDB MCP 服务器导出数据

  • 将MongoDB MCP Server 作为独立服务启动

  • MongoDB MCP 服务器内存溢出

  • MongoDB MCP Server 进行故障排除

后退

独立服务

在此页面上