长记忆使用MCP对接Qoder
概述
AnalyticDB for PostgreSQL长记忆MCP Server是一个基于MCP(Model Context Protocol,模型上下文协议)协议的服务,为Qoder AI编程助手提供跨会话的持久记忆能力。MCP是Anthropic定义的标准协议,Qoder原生支持该协议。通过注册adbpgmem MCP Server,Qoder AI可以在对话中主动调用记忆工具,实现知识的增删改查。
工作原理
AnalyticDB for PostgreSQL长记忆MCP Server通过stdio(标准输入输出)方式与Qoder通信,工作流程如下:
-
注册服务:在Qoder的MCP设置页面或
settings.json中配置adbpgmem MCP Server。 -
按需启动:Qoder在需要时通过
uvx(uv包管理器提供的按需运行工具)启动MCP Server子进程,无需预先安装。 -
工具调用:Qoder AI根据对话上下文主动调用
add_memory、search_memories等MCP工具。 -
API转发:MCP Server将工具调用转换为REST API请求,完成实际的记忆操作。
所有MCP工具调用均由Qoder AI自主决策,用户无需手动触发。
六个MCP工具
|
工具名称 |
功能 |
说明 |
|
|
保存记忆 |
支持 |
|
|
语义搜索记忆 |
按含义匹配而非关键词,找到相关的历史经验 |
|
|
分页列出所有记忆 |
浏览记忆库中的全部记忆 |
|
|
更新指定记忆 |
根据 |
|
|
删除单条记忆 |
根据 |
|
|
批量删除所有记忆 |
安全设计,需 |
适用场景
-
手动控制记忆内容:你希望精确控制哪些知识被记录,而非全自动后台保存。
-
按需查询历史经验:在需要时让Qoder AI主动搜索记忆库中的相关知识。
-
记忆CRUD操作:需要对记忆进行更新、删除等精细管理。
-
团队共享配置:通过项目级
.qoder/settings.json文件让团队成员共享同一套记忆服务配置。
安装MCP Server
前置要求
-
Qoder IDE或Qoder 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长记忆服务连接参数。
需要配置的参数
|
参数 |
类型 |
必填 |
说明 |
|
|
string |
是 |
AnalyticDB for PostgreSQL长记忆服务的API地址 |
|
|
string |
是 |
服务鉴权Token(敏感信息) |
|
|
string |
否 |
用户标识,默认取系统用户名 |
配置来源优先级
|
优先级 |
配置来源 |
说明 |
|
1 |
环境变量 |
MCP注册时通过 |
|
2 |
|
环境变量,指向配置文件所在目录 |
|
3 |
|
项目级配置文件 |
|
4 |
|
全局配置文件 |
方式一:通过MCP注册时的env字段注入(推荐)
注册MCP Server时直接在settings.json的env字段中注入环境变量,无需额外创建配置文件。详见注册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"
}
}
}
}
字段说明
|
字段 |
说明 |
|
|
启动命令,使用 |
|
|
命令参数, |
|
|
环境变量,注入连接参数,优先级高于配置文件 |
项目级注册
在项目根目录创建.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 IDE的MCP设置页面检查adbpgmem的状态,应显示为已连接(Connected)。
调用方式
MCP工具由Qoder AI根据对话上下文自主决策调用,用户通过自然语言触发:
|
你说的内容 |
Qoder AI调用的工具 |
|
记住:项目使用PostgreSQL 15 |
|
|
搜索之前关于数据库配置的记忆 |
|
|
列出所有记忆 |
|
|
更新这条记忆的内容 |
|
|
删除这条记忆 |
|
各工具详细使用说明
add_memory(保存记忆)
将开发知识保存到AnalyticDB for PostgreSQL长记忆库,支持跨会话检索。
|
参数 |
类型 |
默认值 |
说明 |
|
|
string |
- |
要保存的记忆内容(必填) |
|
|
string |
配置值 |
用户标识,默认使用配置中的 |
|
|
bool |
|
是否让服务端提取原子事实 |
使用示例
你: 记住:这个项目使用 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(语义搜索记忆)
从记忆库中按语义搜索相关的历史记忆,按含义匹配而非关键词。
|
参数 |
类型 |
默认值 |
说明 |
|
|
string |
- |
搜索查询文本(必填) |
|
|
string |
配置值 |
用户标识 |
|
|
int |
|
返回结果数量 |
使用示例
你: 搜索一下之前关于数据库选型的记忆
Qoder AI 调用 search_memories → 返回语义匹配的历史记忆
list_memories(列出记忆)
分页列出记忆库中的所有记忆。
|
参数 |
类型 |
默认值 |
说明 |
|
|
string |
配置值 |
用户标识 |
|
|
int |
|
页码 |
|
|
int |
|
每页数量 |
update_memory(更新记忆)
根据memory_id更新指定记忆的内容。
|
参数 |
类型 |
说明 |
|
|
string |
记忆的UUID(必填) |
|
|
string |
新的记忆内容(必填) |
delete_memory(删除单条记忆)
根据memory_id删除指定的单条记忆。
|
参数 |
类型 |
说明 |
|
|
string |
记忆的UUID(必填) |
delete_all_memories(批量删除)
安全地批量删除指定用户的所有记忆。采用逐条删除方式,不会清空整个collection。
|
参数 |
类型 |
默认值 |
说明 |
|
|
string |
配置值 |
用户标识 |
|
|
bool |
|
确认删除,必须设为 |
confirm参数必须显式设为true,否则操作会被拒绝。
典型场景使用案例
场景一:保存项目技术栈信息
你开始了一个新项目,希望将技术栈信息记录下来供后续会话使用。
你: 记住:这个项目使用 Python 3.11 + FastAPI,数据库是 PostgreSQL 15,
缓存用 Redis 7,消息队列用 Kafka 3.5
Qoder AI 调用 add_memory → 将技术栈信息保存到记忆库
Qoder AI 行为:
-
识别到用户要求保存知识。
-
调用
add_memory,将技术栈信息保存到记忆库。 -
输出:已保存记忆。
场景二:跨会话知识复用
上一次会话中确定了API设计规范,这次会话需要开发新的API端点。
会话 1:
你: 记住:我们的 API 统一使用 RESTful 风格,分页参数用 page/page_size,
排序用 sort=field:asc|desc,错误响应包含 type/title/status/detail 四个字段会话 2(几天后,新的会话):
你: 帮我设计一个新的用户管理 API 端点
Qoder AI: 根据之前保存的 API 设计规范,我来设计用户管理端点……
[自动按照团队规范输出设计,无需重复说明]
Qoder AI自动从记忆库中找到上次确定的规范,新会话无需重复沟通,直接复用团队共识。