对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs 菜单

将 MCP 客户端连接到内存

任何模型上下文协议 (MCP)客户端(例如 Claude Code 或 Codex)都可以直接连接到内存,而无需使用agentic-platform-memory SDK。使用此 MCP 连接为客户端提供内存,而无需自己针对 SDK 编写Python代码。在本指南中,您可以学习;了解如何将 MCP客户端连接到内存以及如何记录和调出对话轮次。

提示

要学习;了解有关内存的更多信息,请参阅为代理添加内存指南中的内存工作原理。

MCP服务器提供三种工具:

  • record_turn:记录一个短期对话轮次。这是三个工具中唯一的写入操作。

  • build_context:查询相关的内存并将其格式化为上下文。

  • search_memories:按类型搜索长期记忆。

背景进程会从记录的回合中异步提取长期记忆。要直接创建长期内存而不是等待提取,请使用使用独立内存服务中描述的 agentic-platform-memory SDK。

开始之前,请确保您具备以下先决条件:

  • Atlas Agent Engine 上的项目。要查找您的项目ID,请参阅 查看项目。

  • 已在该项目上启用内存,这需要以下组件:

    • 作为项目密钥上传的 MONGODB_URI、VOYAGE_API_KEY 和 LLM API密钥(例如 ANTHROPIC_API_KEY)。

    • 运行时内存。如果您没有运行时,运行agentengine memory apply --wait 命令以预配运行时。等待运行时报告准备就绪,然后再继续。

    要学习;了解如何配置这些先决条件,请参阅配置内存。

  • 具有 PROJECT_OWNER角色的项目服务帐户。运行以下命令创建一个帐户,并将 <name> 替换为服务帐户的名称:

    agentengine service-account create <name> --role PROJECT_OWNER

    重要

    保存命令返回的客户端ID和客户端密钥。 Atlas Agent Engine 仅显示客户端密钥一次。

要获取访问权限令牌,运行以下命令,并将 <client-id> 替换为您的服务帐户的客户端ID:

read -r -p "Client ID: " CLIENT_ID
curl --fail-with-body --silent --show-error --user "$CLIENT_ID" \
--data grant_type=client_credentials \
https://agentengine.mongodb.com/api/v1/oauth/token

curl 提示输入客户端密钥,而不将其回显到终端。从返回的JSON对象中复制 access_token 字段的值,以便在下一部分中使用。

重要

访问权限令牌会在一小时后过期。如果您在 MCP客户端配置中对令牌进行硬编码,则连接将在过期后停止工作。要恢复连接,请重新运行前面的命令以获取新令牌,然后更新配置。

任何支持 Streamable HTTP传输的 MCP客户端都可以使用以下URL连接到内存。将 <project_id> 替换为您的项目ID。

https://agentengine.mongodb.com/api/v1/projects/<project_id>/mcp

将上一节中的访问权限令牌作为 Authorization: Bearer <access-token> 标头发送。

选择与 MCP客户端对应的标签页,查看添加服务器时发送访问权限令牌的示例:

运行以下命令,将内存添加为 MCP服务器,并将 <project_id> 和 <access-token> 替换为您的项目ID和访问权限令牌。 --scope user 标志使服务器在每个项目中都可用。

claude mcp add --scope user --transport http project-memory \
https://agentengine.mongodb.com/api/v1/projects/<project_id>/mcp \
--header "Authorization: Bearer <access-token>"

或者,将以下配置添加到 ~/.claude.json,Claude Code CLI和 Claude Code VS Code扩展股票该配置:

{
"mcpServers": {
"project-memory": {
"type": "http",
"url": "https://agentengine.mongodb.com/api/v1/projects/<project_id>/mcp",
"headers": {
"Authorization": "Bearer <access-token>"
}
}
}
}

Codex 从环境变量而不是 add 命令上的标头发送持有者令牌。导出启动 Codex 的环境中的访问权限令牌,然后运行以下命令以添加内存作为 MCP服务器。将 <project_id> 替换为您的项目ID。

export AGENTIC_MEMORY_TOKEN=<access-token>
codex mcp add project-memory \
--url https://agentengine.mongodb.com/api/v1/projects/<project_id>/mcp \
--bearer-token-env-var AGENTIC_MEMORY_TOKEN

或者,将下表添加到 ~/.codex/config.toml 中,并将 <project_id> 替换为您的项目ID:

[mcp_servers.project-memory]
url = "https://agentengine.mongodb.com/api/v1/projects/<project_id>/mcp"
bearer_token_env_var = "AGENTIC_MEMORY_TOKEN"

添加 MCP服务器后,重新启动 MCP客户端并确认它列出了三个内存工具并且记录的回合变为可搜索。

1

打开 MCP客户端,确认它列出了来自 project-memory服务器的三个工具:record_turn、build_context 和 search_memories。

2

使用特殊事实调用 record_turn 两次、一次 user_id 和一次 session_id。记录 user角色轮次,然后记录 assistant角色轮次。以下示例记录了有关归属机场的事实:

record_turn(user_id="user_1", session_id="session_1", role="user", content="I always fly out of Boston.")
record_turn(user_id="user_1", session_id="session_1", role="assistant", content="Got it, Boston is saved as your home airport.")
3

使用与上一步相同的 user_id 和 session_id 以及与记录的事实匹配的查询来调用 build_context。记录的回合会立即出现,因为 build_context 包括最近的短期回合:

build_context(user_id="user_1", session_id="session_1", query="Where should the flight book from?")
4

等待几分钟,以便背景提取进程将记录的回合合并到长期记忆中。然后,使用相同的 user_id、匹配的查询和内存类型来调用 search_memories:

search_memories(user_id="user_1", query="home airport", type="semantic")

如果事实没有出现,请等待更长的时间并再次搜索。提取是异步运行的,在记录转弯后可能不会立即完成。