Skip to main content
Glama

Memory MCP Server

License: AGPL-3.0-or-later · Copyright (c) 2026 Neige-Neige If you distribute this software or offer it as a network service (modified or not), you must make the complete corresponding source available under AGPL-3.0-or-later. For closed-source commercial licensing, please open an issue. 本ソフトウェアを配布する、またはネットワークサービスとして提供する場合(改変の有無を問わず)、 対応するソースコード全体を AGPL-3.0-or-later で公開する必要があります。 分发本软件或将其作为网络服务提供时(无论是否修改),必须以 AGPL-3.0-or-later 公开完整的对应源代码。

一个通用的 MCP (Model Context Protocol) 记忆服务,为任何支持 MCP 协议的 AI 客户端提供长期记忆能力。支持语义搜索、记忆分类和优先级管理。

特性

  • 语义搜索 - 使用 Gemini gemini-embedding-001(3072维,100+语言支持,免费)

  • 多语言搜索 - 自动翻译查询词,支持中英日跨语言检索

  • 记忆分类 - 7 种预设分类,方便组织管理

  • 优先级系统 - 5 级重要性标记,影响搜索排序

  • 内存缓存 - 启动时加载记忆到内存,搜索更快

  • 自动升级 - 检测旧版 embedding 并自动重新生成

  • 渐进式注入 - 对话初期返回少量记忆,后期返回更多

  • 双版本支持 - 本地 JSON 存储 / 云端 PostgreSQL 存储

  • MCP 标准协议 - 兼容任何 MCP 客户端

Related MCP server: memory-mcp

可用工具

工具

说明

触发场景

save_memory

保存重要的用户信息

用户提到重要个人信息、偏好、习惯

recall_memory

按关键词/语义检索相关记忆

用户问「之前聊过什么」「你还记得吗」

update_memory

更新已保存的记忆

需要修改之前保存的信息

list_all_memories

查看所有已保存的记忆

用户要求列出所有记忆

delete_memory

删除指定记忆

用户要求忘记某些信息

memory_stats

显示记忆统计信息

查看记忆概览和分布

regenerate_embeddings

重新生成所有记忆的 embedding

切换 embedding 模型后使用

记忆优先级

每条记忆可以设置优先级(1-5),搜索时高优先级记忆会获得加成:

级别

说明

显示

1

最高 - 核心个人信息

★★★

2

高 - 重要偏好或习惯

★★☆

3

中 - 一般信息(默认)

★☆☆

4

低 - 临时或次要信息

☆☆☆

5

最低 - 可能过时的信息

·

记忆分类

每条记忆可以归类到以下分类:

  • general - 通用(默认)

  • preference - 偏好设置

  • work - 工作相关

  • personal - 个人信息

  • habit - 习惯

  • skill - 技能

  • goal - 目标

渐进式注入

recall_memory 会根据会话中的调用次数,智能调整返回的记忆数量和类型:

调用次数

返回内容

目的

第 1 次

最多 3 条核心记忆(优先级 1-2 或 personal 分类)

身份确认、关系确认、语言风格

第 2 次

1 条最相关记忆 + 提示剩余数量

聚焦当前话题,提示可查看更多

第 3+ 次

MAX_RESULTS 条(默认 3)

正常搜索,完整返回

会话重置:超过 5 分钟未调用 recall_memory,计数器自动归零

这个设计确保:

  • 对话开始时快速建立用户画像

  • 对话中期聚焦当前话题

  • 对话后期提供完整信息

两种部署方式

1. 本地版本 (memory_server.py)

适合本地运行的 MCP 客户端,使用 stdio 传输协议。

  • 记忆保存在本地 memories.json 文件

  • 使用关键词搜索

  • 数据完全本地化,隐私保护

运行方式:

python memory_server.py

MCP 客户端配置示例:

{
  "mcpServers": {
    "memory": {
      "command": "python",
      "args": ["/path/to/memory_server.py"]
    }
  }
}

2. 云端版本 (memory_server_http.py)

适合远程访问的 MCP 客户端,使用 HTTP/SSE 传输协议。

  • 使用 PostgreSQL 数据库存储

  • 集成 Gemini Embedding API 进行语义搜索

  • 支持多客户端连接

  • 需要部署到云平台(Railway、Render、Fly.io 等)或有公网 IP 的服务器

什么时候需要云端版本?

  • 使用 Claude.ai 网页版 连接 MCP 服务时(需要公网可访问的 URL)

  • 需要从多台设备访问同一份记忆时

  • 本地版本使用 stdio 协议,仅支持 Claude Desktop 等本地客户端

运行方式:

# 设置环境变量
export DATABASE_URL="postgresql://user:pass@host:5432/dbname"
export GEMINI_API_KEY="your-gemini-api-key"  # 可选,用于语义搜索
export PORT=8000

# 可选:设置工具前缀(用于运行多个实例时避免工具名冲突)
export TOOL_PREFIX="work_"      # 工具名将变为 work_save_memory, work_recall_memory 等
export SERVER_NAME="work-memory"  # 服务器名称

python memory_server_http.py

多实例部署

如果需要同时运行多个 Memory MCP 实例(例如工作记忆和个人记忆分开存储),需要设置不同的 TOOL_PREFIX 避免工具名冲突:

实例 1 - 工作记忆:

export TOOL_PREFIX="work_"
export SERVER_NAME="work-memory"
export DATABASE_URL="postgresql://..."  # 工作数据库

实例 2 - 个人记忆:

export TOOL_PREFIX="personal_"
export SERVER_NAME="personal-memory"
export DATABASE_URL="postgresql://..."  # 个人数据库

这样工具名会变成:

  • work_save_memory, work_recall_memory, ...

  • personal_save_memory, personal_recall_memory, ...

MCP 客户端连接:

  • SSE 端点: http://your-server:8000/sse

  • 健康检查: http://your-server:8000/health

安装

pip install -r requirements.txt

依赖说明:

  • mcp - MCP 协议库

  • starlette, uvicorn - HTTP 服务器(云端版本)

  • psycopg2-binary - PostgreSQL 驱动(云端版本)

  • numpy - 向量计算

  • requests - HTTP 客户端

云端部署

Railway 部署

  1. Fork 此仓库到你的 GitHub

  2. 在 Railway 创建新项目,连接 GitHub 仓库

  3. 添加 PostgreSQL 数据库服务

  4. 设置环境变量:

    • DATABASE_URL - 自动由 Railway 设置

    • GEMINI_API_KEY - 你的 Gemini API 密钥(可选)

  5. 部署完成后获取服务 URL

其他云平台

项目包含 Procfile,兼容 Heroku、Render 等平台:

web: python memory_server_http.py

使用示例

保存记忆

"记住我喜欢用 TypeScript 写代码"
"我的项目用的是 React + Vite,这是工作相关的"
"记住我不喜欢在代码里加太多注释,优先级设为高"

回忆信息

"我之前告诉过你什么编程偏好?"
"你还记得我的项目用什么技术栈吗?"
"只在工作分类里找一下相关记忆"

更新记忆

"把记忆 3 的优先级改成最高"
"更新记忆 5,把分类改成 work"

查看统计

"显示记忆统计"
"列出所有 work 分类的记忆"

数据格式

本地 JSON 格式

[
  {
    "id": 1,
    "content": "用户喜欢喝咖啡",
    "tags": ["偏好", "饮食"],
    "priority": 2,
    "category": "preference",
    "created_at": "2024-01-01T12:00:00",
    "updated_at": "2024-01-01T12:00:00"
  }
]

云端数据库 Schema

CREATE TABLE memories (
    id SERIAL PRIMARY KEY,
    content TEXT NOT NULL,
    tags TEXT[] DEFAULT '{}',
    embedding FLOAT8[],
    priority INTEGER DEFAULT 3,
    category VARCHAR(50) DEFAULT 'general',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)

API 端点(云端版本)

端点

方法

说明

/sse

GET

MCP SSE 连接端点

/messages/

POST

MCP 消息处理

/health

GET

健康检查

健康检查响应示例:

{
  "status": "ok",
  "service": "memory-mcp",
  "storage": "postgresql",
  "semantic_search": "enabled"
}

技术架构

┌──────────────────────────────────────────────────────────┐
│                    MCP Client (任意)                      │
│         (Claude Desktop, API Client, Custom App)         │
└─────────────────────────┬────────────────────────────────┘
                          │ MCP Protocol
          ┌───────────────┴───────────────┐
          ▼                               ▼
┌─────────────────────┐      ┌─────────────────────────────┐
│   本地版本 (stdio)   │      │     云端版本 (HTTP/SSE)     │
│  memory_server.py   │      │   memory_server_http.py     │
├─────────────────────┤      ├─────────────────────────────┤
│ - JSON 文件存储      │      │ - PostgreSQL 数据库          │
│ - 关键词搜索         │      │ - Gemini Embedding 语义搜索  │
│ - 优先级/分类管理    │      │ - 优先级/分类管理             │
└─────────────────────┘      └─────────────────────────────┘

兼容的 MCP 客户端

本服务兼容任何支持 MCP 协议的客户端,包括但不限于:

  • Claude Desktop

  • 自定义 API 客户端

  • MCP Inspector(调试工具)

  • 其他 MCP 兼容应用

使用建议

关于客户端内置记忆功能

部分 MCP 客户端(如 Claude Desktop)自带记忆功能,其内置记忆的权重通常比外部 MCP 服务更高。

  • 建议:根据自身需求决定是否关闭客户端的内置记忆功能

  • 注意:如果关闭客户端内置记忆,所有记忆检索都会走本服务的 recall_memory,响应时间可能会稍长(需要进行语义搜索和数据库查询)

请根据实际使用场景自行权衡。

故障排除

语义搜索不工作

  1. 检查 GEMINI_API_KEY 环境变量是否设置

  2. 查看服务日志中的 [EMBEDDING] 相关信息

  3. 如果 API 出错,会自动降级为关键词搜索

数据库连接失败

  1. 检查 DATABASE_URL 格式是否正确

  2. 确认数据库服务正在运行

  3. 检查网络连接和防火墙设置

SSE 连接问题

  1. 确认客户端支持 SSE 传输

  2. 检查 CORS 设置(如果是跨域访问)

  3. 确认端口没有被占用

自定义 Embedding 服务

本项目默认使用 Google Gemini Embedding API(免费),但你可以替换为其他 embedding 服务。

当前默认行为

  • 有 GEMINI_API_KEY: 使用 Gemini gemini-embedding-001 模型进行语义搜索

    • 3072 维向量,精度更高

    • 支持 100+ 语言,跨语言检索效果更好

    • 启动时自动检测旧版 embedding (768维) 并升级

  • 无 GEMINI_API_KEY: 自动降级为关键词搜索(仍然可用)

替换为其他 Embedding 服务

如果你想使用 OpenAI、Cohere、本地模型等其他 embedding 服务,需要修改 memory_server_http.py 中的 get_embedding() 函数:

def get_embedding(text: str) -> list[float] | None:
    """获取文本的 embedding 向量"""
    # 替换为你的 embedding API 调用
    # 返回值应为 float 列表,如 [0.1, 0.2, ...]
    # 返回 None 表示失败,会降级为关键词搜索
    pass

常见替代方案:

  • OpenAI text-embedding-3-small

  • Cohere embed-multilingual-v3.0

  • 本地部署的 sentence-transformers

  • 其他支持中文的 embedding 模型

后续优化方向

  • 语义搜索(Gemini Embedding)

  • 多语言搜索(中英日跨语言检索)

  • 记忆优先级

  • 记忆分类管理

  • 记忆更新功能

  • 记忆统计功能

  • Embedding 自动升级

  • 记忆过期机制

  • 记忆导出/导入

  • 记忆关联功能

  • WebSocket 传输支持

License

Copyright (c) 2026 Neige-Neige

This project is licensed under the GNU Affero General Public License, version 3 or (at your option) any later version (AGPL-3.0-or-later). See LICENSE for the full text.

What triggers the copyleft

AGPL is triggered by distribution and by offering the software as a network service — not by "commercial use" as such. Concretely:

  • Running an unmodified or modified copy privately, without distributing it and without offering it to others over a network → no obligation, even commercially

  • Distributing the software, modified or not → you must provide the complete corresponding source under AGPL-3.0-or-later

  • Offering it as a network service (SaaS, hosted MCP endpoint, bot, etc.), modified or not → you must make the complete corresponding source available to its users, even though you never hand out a copy of the software itself. This is the clause that distinguishes AGPL from plain GPL.

  • In all of the above you must retain this copyright notice and license

Commercial licensing

If you want to distribute this project, or run it as a service, without releasing your source code, AGPL-3.0-or-later does not permit that. A separate commercial license is available — please open an issue to discuss.

中文

本项目采用 AGPL-3.0-or-later(GNU Affero 通用公共许可证第 3 版或任何更新版本)授权。

触发 copyleft 的是"分发"和"以网络服务提供",而不是"商业使用"本身:

  • 私下运行(不分发、不对外提供网络服务)→ 无义务,即使是商业环境

  • 分发本软件(无论是否修改)→ 必须以 AGPL-3.0-or-later 提供完整的对应源代码

  • 作为网络服务提供(SaaS、托管 MCP 端点、bot 等,无论是否修改)→ 必须向使用者公开 完整的对应源代码,即使你从未分发过软件本体。这是 AGPL 区别于普通 GPL 的核心条款

  • 以上任何情形都必须保留原始的版权声明与授权条款

如需在不公开源代码的前提下分发或提供服务,AGPL 不允许,请开 issue联系作者 获取单独的商业授权。

日本語

本プロジェクトは AGPL-3.0-or-later ライセンスで公開されています。

copyleft が発動するのは「配布」と「ネットワークサービスとしての提供」であり、 「商用利用」そのものではありません:

  • 私的に実行するだけ(配布せず、ネットワーク経由で他者に提供しない)→ 商用でも義務なし

  • 配布する場合(改変の有無を問わず)→ 対応するソースコード全体を AGPL-3.0-or-later で提供

  • ネットワークサービスとして提供する場合(改変の有無を問わず)→ ソフトウェア本体を 配布していなくても、利用者に対して対応するソースコード全体を開示する義務があります

  • いずれの場合も著作権表示とライセンスの保持が必要です

ソースコードを公開せずに配布・サービス提供をご希望の場合は、issue にて 商用ライセンスをご相談ください。


Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides a local, persistent long-term memory service for MCP-compatible AI agents, enabling them to store, search, and recall information across sessions.
    1
    GPL 3.0
  • A
    license
    A
    quality
    D
    maintenance
    Provides persistent memory for AI assistants via MCP, enabling them to store and recall facts, preferences, and tasks across conversations using either local file storage or a cloud backend with semantic search.
    5
    6 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Persistent memory MCP server for AI agents that stores, recalls, and searches conversation history, key-value context, and long-term entries across sessions with semantic search and FIFO queues.
    48 npm
    1
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    A general-purpose MCP memory server that gives AI clients long-term memory with semantic search, memory classification, priority management, and progressive injection, supporting local JSON or cloud PostgreSQL storage.
    AGPL 3.0