长记忆使用MCP对接Qoder

更新时间:
复制 MD 格式

概述

AnalyticDB for PostgreSQL长记忆MCP Server是一个基于MCP(Model Context Protocol,模型上下文协议)协议的服务,为Qoder AI编程助手提供跨会话的持久记忆能力。MCPAnthropic定义的标准协议,Qoder原生支持该协议。通过注册adbpgmem MCP Server,Qoder AI可以在对话中主动调用记忆工具,实现知识的增删改查。

工作原理

AnalyticDB for PostgreSQL长记忆MCP Server通过stdio(标准输入输出)方式与Qoder通信,工作流程如下:

  1. 注册服务:在QoderMCP设置页面或settings.json中配置adbpgmem MCP Server。

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

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

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

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

六个MCP工具

工具名称

功能

说明

add_memory

保存记忆

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

search_memories

语义搜索记忆

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

list_memories

分页列出所有记忆

浏览记忆库中的全部记忆

update_memory

更新指定记忆

根据memory_id修改已有记忆

delete_memory

删除单条记忆

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

delete_all_memories

批量删除所有记忆

安全设计,需confirm=true确认

适用场景

  • 手动控制记忆内容:你希望精确控制哪些知识被记录,而非全自动后台保存。

  • 按需查询历史经验:在需要时让Qoder AI主动搜索记忆库中的相关知识。

  • 记忆CRUD操作:需要对记忆进行更新、删除等精细管理。

  • 团队共享配置:通过项目级.qoder/settings.json文件让团队成员共享同一套记忆服务配置。

安装MCP Server

前置要求

  • Qoder IDEQoder 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长记忆服务连接参数。

需要配置的参数

参数

类型

必填

说明

ADBPGMEM_API_URL

string

AnalyticDB for PostgreSQL长记忆服务的API地址

ADBPGMEM_API_TOKEN

string

服务鉴权Token(敏感信息)

ADBPGMEM_USER_ID

string

用户标识,默认取系统用户名

配置来源优先级

优先级

配置来源

说明

1

环境变量

MCP注册时通过env字段注入,优先级最高

2

$ADBPGMEM_CONFIG_DIR

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

3

./.qoder/adbpgmem.conf

项目级配置文件

4

~/.qoder/adbpgmem.conf

全局配置文件

方式一:通过MCP注册时的env字段注入(推荐)

注册MCP Server时直接在settings.jsonenv字段中注入环境变量,无需额外创建配置文件。详见注册MCP Server。

方式二:手动编写配置文件

创建~/.qoder/adbpgmem.conf(全局)或.qoder/adbpgmem.conf(项目级)配置文件:

# 全局配置(对所有项目生效)
mkdir -p ~/.qoder
cat > ~/.qoder/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 .qoder
cat > .qoder/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中添加.qoder/adbpgmem.conf

配置文件说明

配置文件格式为KEY="VALUE",每行一个配置项。配置缺失时MCP Server会记录警告并继续启动,但API调用会失败。

注册MCP Server

Qoder通过settings.json文件注册MCP Server,支持全局注册和项目级注册两种方式。

全局注册(推荐)

编辑~/.qoder/settings.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"
      }
    }
  }
}

字段说明

字段

说明

command

启动命令,使用uvx按需创建临时虚拟环境并运行MCP Server

args

命令参数,--from指定本地源码路径,末尾为入口函数名

env

环境变量,注入连接参数,优先级高于配置文件

项目级注册

在项目根目录创建.qoder/settings.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"
      }
    }
  }
}
说明

项目级注册的.qoder/settings.json可以提交到Git仓库,团队成员clone后即可共享配置(注意不要包含真实的API Token)。

配置AGENTS.md行为指令(可选)

添加到项目根目录的AGENTS.md(Qoder项目级AI行为规范文件,每次会话时自动加载),引导Qoder AI主动使用记忆工具。不配置也不影响MCP工具的正常使用,只是AI不会主动调用。

# MCP Servers

- **adbpgmem**: 持久记忆服务。每次会话开始时先 search_memories 搜索相关上下文,
  发现架构决策、调试经验、编码模式时用 add_memory 保存。
  记忆内容变化时用 update_memory 更新。宁可多记,不可漏记。

怎么使用MCP工具

验证注册

Qoder IDEMCP设置页面检查adbpgmem的状态,应显示为已连接(Connected)。

调用方式

MCP工具由Qoder AI根据对话上下文自主决策调用,用户通过自然语言触发:

你说的内容

Qoder AI调用的工具

记住:项目使用PostgreSQL 15

add_memory

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

search_memories

列出所有记忆

list_memories

更新这条记忆的内容

update_memory

删除这条记忆

delete_memory

各工具详细使用说明

add_memory(保存记忆)

将开发知识保存到AnalyticDB for PostgreSQL长记忆库,支持跨会话检索。

参数

类型

默认值

说明

content

string

-

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

user_id

string

配置值

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

infer

bool

false

是否让服务端提取原子事实

使用示例

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

Qoder AI 调用 add_memory → 服务端存储记忆

启用infer=true时,服务端会自动从内容中提取原子事实:

你: 记住以下项目决策:我们选择 Kafka 而非 RabbitMQ,因为需要消息回溯能力;
    数据库选用 PostgreSQL 因为需要 JSONB 支持;前端用 React + TypeScript

Qoder AI 调用 add_memory(infer=true) → 服务端提取出 3 条独立的原子事实分别存储

search_memories(语义搜索记忆)

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

参数

类型

默认值

说明

query

string

-

搜索查询文本(必填)

user_id

string

配置值

用户标识

top_k

int

5

返回结果数量

使用示例

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

Qoder AI 调用 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

重要

confirm参数必须显式设为true,否则操作会被拒绝。

典型场景使用案例

场景一:保存项目技术栈信息

你开始了一个新项目,希望将技术栈信息记录下来供后续会话使用。

你: 记住:这个项目使用 Python 3.11 + FastAPI,数据库是 PostgreSQL 15,
    缓存用 Redis 7,消息队列用 Kafka 3.5

Qoder AI 调用 add_memory → 将技术栈信息保存到记忆库

Qoder AI 行为

  1. 识别到用户要求保存知识。

  2. 调用 add_memory,将技术栈信息保存到记忆库。

  3. 输出:已保存记忆。

场景二:跨会话知识复用

上一次会话中确定了API设计规范,这次会话需要开发新的API端点。

会话 1:
你: 记住:我们的 API 统一使用 RESTful 风格,分页参数用 page/page_size,
    排序用 sort=field:asc|desc,错误响应包含 type/title/status/detail 四个字段
会话 2(几天后,新的会话):
你: 帮我设计一个新的用户管理 API 端点

Qoder AI: 根据之前保存的 API 设计规范,我来设计用户管理端点……
         [自动按照团队规范输出设计,无需重复说明]

Qoder AI自动从记忆库中找到上次确定的规范,新会话无需重复沟通,直接复用团队共识。