使用说明
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()
);
开发与调试
- 准备 PostgreSQL,并保证连接串与
DATABASE_URL匹配。 - 运行
go mod tidy下载依赖,再执行go run .。 - 如需热加载或自定义日志,可在 MCP 客户端侧配合使用。
至此,你就拥有了一个可复用的记忆管理 MCP 服务器 🚀
