长记忆使用MCP对接Claude Code

更新时间:
复制 MD 格式

概述

AnalyticDB for PostgreSQL长记忆MCP Server是一个基于MCP(Model Context Protocol)协议的自托管服务,为Claude Code提供跨会话的持久记忆能力。MCPAnthropic定义的标准协议,允许Claude Code通过统一的工具接口调用外部服务。通过注册AnalyticDB for PostgreSQL长记忆MCP Server,Claude可以在对话中主动调用记忆工具,实现知识的增删改查。

工作原理

adbpgmem MCP Server通过stdio(标准输入输出)方式与Claude Code通信,工作流程如下:

  1. 注册服务:通过claude mcp add命令将adbpgmem MCP Server注册到Claude Code。

  2. 按需启动:Claude Code在需要时通过uvxuv包管理器提供的按需运行工具)启动MCP Server子进程,无需预先安装。

  3. 工具调用:Claude根据对话上下文主动调用add_memorysearch_memoriesMCP工具。

  4. API转发:MCP Server将工具调用转换为adbpgmem REST API请求,完成实际的记忆操作。

所有MCP工具调用均由Claude自主决策,用户无需手动触发。

六个MCP工具

工具名称

功能

说明

add_memory

保存记忆到记忆库

支持infer=true让服务端自动提取原子事实

search_memories

语义搜索历史记忆

按含义匹配而非关键词,找到相关的历史经验

list_memories

分页列出所有记忆

浏览记忆库中的全部记忆

update_memory

更新指定记忆内容

根据memory_id修改已有记忆

delete_memory

删除单条记忆

根据memory_id移除过期或无用记忆

delete_all_memories

批量删除所有记忆

安全设计,需confirm=true确认

适用场景

适合使用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

--env环境变量

注册时通过claude mcp add --env注入,优先级最高

2

$ADBPGMEM_CONFIG_DIR

环境变量,指向配置文件所在目录

3

./.claude/adbpgmem.conf

项目级配置文件

4

~/.claude/adbpgmem.conf

全局配置文件

需要配置的参数

参数

类型

是否必选

说明

ADBPGMEM_API_URL

String

adbpgmem长记忆服务的API地址

ADBPGMEM_API_TOKEN

String

服务鉴权Token

ADBPGMEM_USER_ID

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 mcp add

Claude Code客户端注册一个新的MCP Server

--scope user

注册为全局(用户级)配置,对所有项目生效

--transport stdio

通信方式为标准输入输出,Claude Code通过子进程stdin/stdoutMCP Server双向通信

adbpgmem

为该MCP Server指定的别名,后续可通过此名称管理或移除

-- uvx --from ...

--后的部分是实际启动命令,uvx从本地项目路径创建临时虚拟环境并运行入口函数

项目级注册

通过项目根目录的.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

搜索之前关于数据库配置的记忆

search_memories

列出所有记忆

list_memories

更新这条记忆的内容

update_memory

删除这条记忆

delete_memory

各工具详细使用说明

add_memory(保存记忆)

用途:将开发知识保存到adbpgmem记忆库,支持跨会话检索。

参数:

参数

类型

默认值

说明

content

String

-

要保存的记忆内容(必填)

user_id

String

配置值

用户标识,默认使用配置中的user_id

使用示例:

你: 记住:这个项目使用 Go 1.22 + Gin 框架,ORM 使用 GORM v2,数据库是 PostgreSQL 15

Claude 调用 add_memory → 服务端存储记忆

search_memories(语义搜索记忆)

用途:从记忆库中按语义搜索相关的历史记忆,按含义匹配而非关键词。

参数:

参数

类型

默认值

说明

query

String

-

搜索查询文本(必填)

user_id

String

配置值

用户标识

top_k

Int

5

返回结果数量

使用示例:

你: 搜索一下之前关于数据库选型的记忆

Claude 调用 search_memories → 返回语义匹配的历史记忆

list_memories(列出记忆)

用途:分页列出记忆库中的所有记忆。

参数:

参数

类型

默认值

说明

user_id

String

配置值

用户标识

page

Int

1

页码

page_size

Int

50

每页数量

update_memory(更新记忆)

用途:根据memory_id更新指定记忆的内容。

参数:

参数

类型

说明

memory_id

String

记忆的UUID(必填)

text

String

新的记忆内容(必填)

delete_memory(删除单条记忆)

用途:根据memory_id删除指定的单条记忆。

参数:

参数

类型

说明

memory_id

String

记忆的UUID(必填)

delete_all_memories(批量删除)

用途:安全地批量删除指定用户的所有记忆。采用逐条删除方式,不会清空整个collection。

参数:

参数

类型

默认值

说明

user_id

String

配置值

用户标识

confirm

Bool

false

确认删除,必须设为true

典型场景使用案例

场景一:搜索历史调试经验

背景:您遇到了一个Docker容器内存溢出的问题,想查看之前有没有相关经验。

操作:

你: 搜索一下之前有没有遇到过 Docker 容器 OOM 的问题

Claude行为:

  1. 识别到搜索意图。

  2. 调用search_memories(query="Docker 容器 OOM 内存溢出")

  3. 返回匹配的历史记忆。

输出示例:

找到 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自动从记忆库中找到上次确定的规范,新会话无需重复沟通,直接复用团队共识。