当MongoDB MCP服务器运行 find 和 aggregate 等工具时,它必须将查询结果暂时保存在内存中,然后才能将其返回给客户端。在以下情况下,这些操作消耗的内存可能超过可用内存,并有内存不足崩溃或服务器性能下降的风险:
获取的文档过多。
获取非常大的文档。
在处理多个并发工具调用的服务器上运行。
为了缓解这些问题,MCP服务器使用:
查询或聚合使用和返回的内存的可配置硬上限。
专用游标迭代器,用于在从MongoDB读取时跟踪文档计数和内存使用情况,并在超过配置的限制之前停止读取。
这些保护措施旨在防止单个工具调用耗尽服务器内存,并鼓励仅返回 LLM 可在其上下文窗口中实际使用的数据的模式。
配置
MCP服务器提供配置点,用于控制允许单个工具调用检索并在内存中保存多少数据。它们分为两组:
服务器限制:适用于服务器处理的所有工具调用。
工具调用限制:针对客户端或代理每次工具调用的次数进行设置。
服务器限制
在 MCP服务器上配置的服务器限制用作所有 find 和 aggregate 调用的内存使用上限。下表描述了可用于限制内存使用的服务器配置:
CLI选项名称 | 操作系统环境变量名称 | 默认 | 说明 |
|---|---|---|---|
|
|
| 查找或聚合工具调用结果的最大大小(以字节为单位)。 |
|
|
| 查找或聚合工具调用可返回的最大文档数。对于查找工具,有效限制将是该值和 工具限制中的较小者。 |
工具调用限制
单个工具调用还可以控制请求的数据量。下表描述了可用于限制内存使用的工具调用参数:
内存溢出行为
如果在游标从MongoDB读取文档时达到任何配置的限制, MongoDB MCP服务器将停止获取其他文档并返回收集的部分结果设立。
在获取所有文档之前达到配置的内存或文档限制可能会导致接收的文档少于请求的文档。您可能需要:
使用调整后的参数发出后续调用。
减少返回到 LLM 的数据量。示例,通过使用聚合阶段。