记忆存储与搜索工具

Memory Context Provider(MCP)是一个提供存储、获取与搜索用户记忆的工具,支持PostgreSQL持久化和结构化输入/输出。

  • by mem-mcp
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 mem-mcp/mem-mcp

使用说明

mem-mcp

使用 mcp-go 构建的 Memory Context Provider,提供存储、获取与搜索用户记忆的工具能力。

功能特点

  • ✅ MCP 原生实现:通过 mcp-go 暴露工具而非 REST API。
  • ✅ PostgreSQL 持久化:启动时自动执行内置 SQL 迁移,保障表结构。
  • ✅ 结构化输入/输出:工具使用 JSON Schema 描述参数,便于 LLM 客户端理解。

环境变量

变量名 默认值 说明
DATABASE_URL postgres://postgres:postgres@localhost:5432/mcp_memories?sslmode=disable PostgreSQL 连接串(可覆盖)
MCP_TRANSPORT stdio MCP 传输方式:stdio 或 http(streamable HTTP)
LISTEN_ADDR :8080 当 MCP_TRANSPORT=http 时的监听地址
SHUTDOWN_PERIOD_SECONDS 10 HTTP 模式下的优雅关闭超时时间

未设置 DATABASE_URL 时会回退到本地开发默认值。

启动方式

STDIO(默认)

go run .

适合与支持 MCP stdio 的客户端直接集成。

Streamable HTTP

MCP_TRANSPORT=http go run .

服务将监听 LISTEN_ADDR,客户端应使用 MCP Streamable HTTP 协议进行通信。

构建可执行文件

./scripts/build.sh

脚本会自动将构建产物输出到 target/mem-mcp,保持仓库根目录整洁。若需要额外的 go build 参数,可追加在脚本命令后。

提供的工具

工具名 描述 关键参数 返回
store_memory 为指定用户保存一条新的记忆 user_id、content,可选 title、metadata 新建的记忆记录
get_memory 按 ID 获取用户的一条记忆 user_id、memory_id 目标记忆记录
search_memory 使用文本查询搜索记忆 user_id、query,可选 limit 匹配的记忆列表及计数

所有工具均返回结构化内容(structuredContent),并附带简短的文本描述,方便客户端 fallback。

数据库

启动时会自动应用 internal/db/migrations 下的迁移,创建以下表结构:

CREATE TABLE memories (
    id BIGSERIAL PRIMARY KEY,
    user_id TEXT NOT NULL,
    title TEXT,
    content TEXT NOT NULL,
    metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

开发与调试

  1. 准备 PostgreSQL,并保证连接串与 DATABASE_URL 匹配。
  2. 运行 go mod tidy 下载依赖,再执行 go run .。
  3. 如需热加载或自定义日志,可在 MCP 客户端侧配合使用。

至此,你就拥有了一个可复用的记忆管理 MCP 服务器 🚀