长记忆使用MCP对接Claude Code
概述
AnalyticDB for PostgreSQL长记忆MCP Server是一个基于MCP(Model Context Protocol)协议的自托管服务,为Claude Code提供跨会话的持久记忆能力。MCP是Anthropic定义的标准协议,允许Claude Code通过统一的工具接口调用外部服务。通过注册AnalyticDB for PostgreSQL长记忆MCP Server,Claude可以在对话中主动调用记忆工具,实现知识的增删改查。
工作原理
adbpgmem MCP Server通过stdio(标准输入输出)方式与Claude Code通信,工作流程如下:
-
注册服务:通过
claude mcp add命令将adbpgmem MCP Server注册到Claude Code。 -
按需启动:Claude Code在需要时通过
uvx(uv包管理器提供的按需运行工具)启动MCP Server子进程,无需预先安装。 -
工具调用:Claude根据对话上下文主动调用
add_memory、search_memories等MCP工具。 -
API转发:MCP Server将工具调用转换为adbpgmem REST API请求,完成实际的记忆操作。
所有MCP工具调用均由Claude自主决策,用户无需手动触发。
六个MCP工具
|
工具名称 |
功能 |
说明 |
|
|
保存记忆到记忆库 |
支持 |
|
|
语义搜索历史记忆 |
按含义匹配而非关键词,找到相关的历史经验 |
|
|
分页列出所有记忆 |
浏览记忆库中的全部记忆 |
|
|
更新指定记忆内容 |
根据memory_id修改已有记忆 |
|
|
删除单条记忆 |
根据memory_id移除过期或无用记忆 |
|
|
批量删除所有记忆 |
安全设计,需 |
适用场景
适合使用MCP工具集成的场景:
-
手动控制记忆内容:您希望精确控制哪些知识被记录,而非全自动后台保存。
-
按需查询历史经验:在需要时让Claude主动搜索记忆库中的相关知识。
-
记忆CRUD操作:需要对记忆进行更新、删除等精细管理。
-
团队共享配置:通过项目级
.mcp.json文件让团队成员共享同一套记忆服务配置。
安装MCP Server
前置要求
-
Claude Code CLI已安装并可正常使用。
-
Python >= 3.10。
-
uv包管理器(用于uvx按需启动,推荐使用)。 -
已获取AnalyticDB for PostgreSQL长记忆服务的API地址和Token。获取方式请参见上下文服务。
-
已获取adbpgmem_mcp_selfhosted项目源码adbpgmem-mcp-server-0.2.0.tar.gz。
请将压缩包解压到指定目录
adbpgmem_mcp_selfhosted,后续步骤中的路径均指向该解压目录。
安装步骤
MCP Server无需预先全局安装,uvx会从本地项目路径按需创建临时虚拟环境并启动服务。只需确保源码路径可访问即可。
# 确认源码路径可用
ls /path/to/adbpgmem_mcp_selfhosted/pyproject.toml
# 应输出文件信息,确认路径正确
配置MCP Server
MCP Server通过环境变量或配置文件获取AnalyticDB for PostgreSQL长记忆服务连接参数,优先级从高到低:
|
优先级 |
配置来源 |
说明 |
|
1 |
|
注册时通过 |
|
2 |
|
环境变量,指向配置文件所在目录 |
|
3 |
|
项目级配置文件 |
|
4 |
|
全局配置文件 |
需要配置的参数
|
参数 |
类型 |
是否必选 |
说明 |
|
|
String |
是 |
adbpgmem长记忆服务的API地址 |
|
|
String |
是 |
服务鉴权Token |
|
|
String |
否 |
用户标识,默认取系统用户名 |
方式一:注册时通过--env注入(推荐)
注册MCP Server时直接通过--env参数注入环境变量,无需额外创建配置文件。详见下方「注册MCP Server」章节。
方式二:手动编写配置文件
全局配置(对所有项目生效):
mkdir -p ~/.claude
cat > ~/.claude/adbpgmem.conf << 'EOF'
ADBPGMEM_API_URL="https://api-longmemory-cn-chengdu.opentrust.net"
ADBPGMEM_API_TOKEN="sk-your-token-here"
ADBPGMEM_USER_ID="your.username"
EOF
项目级配置(仅对当前项目生效):
mkdir -p .claude
cat > .claude/adbpgmem.conf << 'EOF'
ADBPGMEM_API_URL="https://api-longmemory-cn-chengdu.opentrust.net"
ADBPGMEM_API_TOKEN="sk-your-token-here"
ADBPGMEM_USER_ID="your.username"
EOF
adbpgmem.conf包含API Token,请勿提交到Git。建议在.gitignore中添加.claude/adbpgmem.conf。
配置文件说明
配置文件格式为KEY="VALUE",每行一个配置项。配置缺失时MCP Server会记录警告并继续启动,但API调用会失败。
注册MCP Server
MCP Server支持两种注册方式:全局注册和项目级注册。
全局注册(推荐)
写入~/.claude.json,对所有项目生效:
claude mcp add --scope user --transport stdio adbpgmem \
--env ADBPGMEM_API_URL=https://api-longmemory-cn-chengdu.opentrust.net \
--env ADBPGMEM_API_TOKEN=sk-your-token-here \
--env ADBPGMEM_USER_ID=your.username \
-- uvx --from /path/to/adbpgmem_mcp_selfhosted adbpgmem-mcp-server
命令说明:
|
参数 |
说明 |
|
|
向Claude Code客户端注册一个新的MCP Server |
|
|
注册为全局(用户级)配置,对所有项目生效 |
|
|
通信方式为标准输入输出,Claude Code通过子进程stdin/stdout与MCP Server双向通信 |
|
|
为该MCP Server指定的别名,后续可通过此名称管理或移除 |
|
|
|
项目级注册
通过项目根目录的.mcp.json文件注册,仅对当前项目生效,可纳入版本管理供团队共享:
{
"mcpServers": {
"adbpgmem": {
"command": "uvx",
"args": ["--from", "/path/to/adbpgmem_mcp_selfhosted", "adbpgmem-mcp-server"],
"env": {
"ADBPGMEM_API_URL": "https://api-longmemory-cn-chengdu.opentrust.net",
"ADBPGMEM_API_TOKEN": "sk-your-token-here",
"ADBPGMEM_USER_ID": "your.username"
}
}
}
}
项目级注册的.mcp.json可以提交到Git仓库,团队成员clone后即可共享配置(注意不要包含真实的API Token)。
配置CLAUDE.md行为指令(可选)
添加到~/.claude/CLAUDE.md(全局)或项目根目录的CLAUDE.md(项目级),引导Claude主动使用记忆工具。不配置也不影响MCP工具的正常使用,只是Claude不会主动调用。
# MCP Servers
- **adbpgmem**: 持久记忆服务。每次会话开始时先 `search_memories` 搜索相关上下文,
发现架构决策、调试经验、编码模式时用 `add_memory` 保存。
记忆内容变化时用 `update_memory` 更新。宁可多记,不可漏记。
怎么使用MCP工具
验证注册
检查MCP Server是否注册成功:
# 检查 MCP Server 是否注册成功
claude mcp list
# 输出中应包含 adbpgmem
# 启动 Claude Code 后输入 /mcp,查看状态是否为 ✓ Connected
调用方式
MCP工具由Claude根据对话上下文自主决策调用,用户通过自然语言触发:
|
您说的内容 |
Claude调用的工具 |
|
记住:项目使用 PostgreSQL 15 |
|
|
搜索之前关于数据库配置的记忆 |
|
|
列出所有记忆 |
|
|
更新这条记忆的内容 |
|
|
删除这条记忆 |
|
各工具详细使用说明
add_memory(保存记忆)
用途:将开发知识保存到adbpgmem记忆库,支持跨会话检索。
参数:
|
参数 |
类型 |
默认值 |
说明 |
|
|
String |
- |
要保存的记忆内容(必填) |
|
|
String |
配置值 |
用户标识,默认使用配置中的user_id |
使用示例:
你: 记住:这个项目使用 Go 1.22 + Gin 框架,ORM 使用 GORM v2,数据库是 PostgreSQL 15
Claude 调用 add_memory → 服务端存储记忆
search_memories(语义搜索记忆)
用途:从记忆库中按语义搜索相关的历史记忆,按含义匹配而非关键词。
参数:
|
参数 |
类型 |
默认值 |
说明 |
|
|
String |
- |
搜索查询文本(必填) |
|
|
String |
配置值 |
用户标识 |
|
|
Int |
5 |
返回结果数量 |
使用示例:
你: 搜索一下之前关于数据库选型的记忆
Claude 调用 search_memories → 返回语义匹配的历史记忆
list_memories(列出记忆)
用途:分页列出记忆库中的所有记忆。
参数:
|
参数 |
类型 |
默认值 |
说明 |
|
|
String |
配置值 |
用户标识 |
|
|
Int |
1 |
页码 |
|
|
Int |
50 |
每页数量 |
update_memory(更新记忆)
用途:根据memory_id更新指定记忆的内容。
参数:
|
参数 |
类型 |
说明 |
|
|
String |
记忆的UUID(必填) |
|
|
String |
新的记忆内容(必填) |
delete_memory(删除单条记忆)
用途:根据memory_id删除指定的单条记忆。
参数:
|
参数 |
类型 |
说明 |
|
|
String |
记忆的UUID(必填) |
delete_all_memories(批量删除)
用途:安全地批量删除指定用户的所有记忆。采用逐条删除方式,不会清空整个collection。
参数:
|
参数 |
类型 |
默认值 |
说明 |
|
|
String |
配置值 |
用户标识 |
|
|
Bool |
false |
确认删除,必须设为 |
典型场景使用案例
场景一:搜索历史调试经验
背景:您遇到了一个Docker容器内存溢出的问题,想查看之前有没有相关经验。
操作:
你: 搜索一下之前有没有遇到过 Docker 容器 OOM 的问题
Claude行为:
-
识别到搜索意图。
-
调用
search_memories(query="Docker 容器 OOM 内存溢出")。 -
返回匹配的历史记忆。
输出示例:
找到 1 条相关记忆:
1. [score: 0.91] Java 应用在 Docker 容器中需设置 -XX:MaxRAMPercentage=75.0
和 -XX:+UseContainerSupport,否则 JVM 无法正确识别容器内存限制,
导致超出容器 limit 被 kill。
场景二:跨会话知识复用
背景:上一次会话中确定了API设计规范,这次会话需要开发新的API端点。
会话1:
你: 记住:我们的 API 统一使用 RESTful 风格,分页参数用 page/page_size,
排序用 sort=field:asc|desc,错误响应包含 type/title/status/detail 四个字段
会话2(几天后,新的会话):
你: 帮我设计一个新的用户管理 API 端点
Claude: 根据之前保存的 API 设计规范,我来设计用户管理端点:
- 列表接口支持分页和排序
- 错误响应统一使用四字段格式
- 遵循 RESTful 命名风格
[自动按照团队规范输出设计,无需您重复说明]
Claude自动从记忆库中找到上次确定的规范,新会话无需重复沟通,直接复用团队共识。