mcp-memory
完整文档 -- 指南、工具参考、架构和维护,请访问 cachorro.space
mcp-memory
这是 Anthropic MCP Memory 服务器 的直接替代品,具备 SQLite 持久化、向量嵌入、语义搜索以及用于动态排名的边缘系统评分 (Limbic Scoring)。
为什么选择它? 原始服务器在每次操作时都会将整个知识图谱写入 JSONL 文件,且没有锁定或原子写入机制。在并发访问(多个 MCP 客户端)下,这会导致数据损坏。本服务器将其替换为标准的 SQLite 数据库。
特性
直接兼容 Anthropic 的 8 个 MCP 工具(相同的 API,相同的行为)
SQLite + WAL -- 安全的并发访问,不再有损坏的 JSONL
语义搜索 -- 通过 sqlite-vec + ONNX 嵌入(支持 94+ 种语言)
混合搜索 (FTS5 + KNN) -- 通过倒数排名融合 (Reciprocal Rank Fusion) 结合全文 BM25 和语义向量搜索。可以通过精确术语或语义相似度查找实体,也可以两者同时使用。
边缘系统评分 (Limbic Scoring) -- 结合显著性、时间衰减、共现信号和混合搜索分数的动态重排序。对 API 透明。
语义去重 -- 当余弦相似度 >= 0.85 时,自动对新观察结果标记
similarity_flag(包含针对非对称文本长度的包含评分)整合报告 -- 用于拆分候选对象、标记观察结果、陈旧实体和大型实体的只读健康检查
改进的近因衰减 --
entity_access_log跟踪,带有ALPHA_CONS=0.2的多日整合信号包含修复 -- 在去重评分中正确处理非对称文本长度(比率 >= 2.0)
观察类型 -- 观察结果的语义分类(hallazgo, decision, estado, spec, metrica, metadata, generic)
观察覆盖 -- 显式替换链:新观察结果可以覆盖旧观察结果,旧结果会被标记为已覆盖 (superseded)
实体状态 -- 生命周期跟踪:activo, pausado, completado, archivado(支持状态感知搜索降权)
关系上下文 + 有效期 -- 关系携带可选的上下文、active/ended_at 字段,用于时间有效性
自动反向关系 -- 自动创建 contains/parte_de 对
反思 (Reflections) -- 独立的叙事层:附加到实体/会话/关系/全局的自由格式散文,带有作者和情绪元数据,可通过语义 + FTS5 混合搜索进行搜索
轻量级 -- 总计约 500 MB,而类似解决方案约为 1.4 GB
迁移 -- 一键导入 Anthropic 的 JSONL 格式
零配置 -- 开箱即用,可选模型下载以支持语义搜索
快速入门
1. 添加到您的 MCP 配置
{
"mcpServers": {
"memory": {
"command": ["uvx", "--from", "git+https://github.com/Yarlan1503/mcp-memory", "mcp-memory"]
}
}
}或者克隆并在本地运行:
{
"mcpServers": {
"memory": {
"command": ["uv", "run", "--directory", "/path/to/mcp-memory", "mcp-memory"]
}
}
}2. 启用语义搜索(可选)
cd /path/to/mcp-memory
uv run python scripts/download_model.py这将下载一个多语言句子模型(约 465 MB)到 ~/.cache/mcp-memory-v2/models/。如果没有它,所有工具仍可正常工作,仅 search_semantic 不可用。
3. 迁移现有数据(可选)
如果您有 Anthropic MCP Memory JSONL 文件,请使用 migrate 工具或直接调用它:
uv run python -c "
from mcp_memory.storage import MemoryStore
from mcp_memory.migrate import migrate_jsonl
store = MemoryStore()
store.init_db()
result = migrate_jsonl(store, '~/.config/opencode/mcp-memory.jsonl')
print(result)
"MCP 工具
核心(兼容 Anthropic)
工具 | 描述 |
| 创建或更新实体(冲突时合并观察结果)。接受 |
| 在实体之间创建类型化关系。接受 |
| 向现有实体添加观察结果。接受 |
| 删除实体及其所有关系/观察结果 |
| 从实体中删除特定观察结果 |
| 删除实体之间的特定关系 |
| 按子字符串搜索(名称、类型、观察内容) |
| 按名称检索实体。接受 |
搜索与分析
工具 | 描述 |
| 通过向量嵌入进行语义搜索,并使用 边缘系统评分 进行重排序 |
| 查找实体内的语义重复观察结果(余弦 + 包含) |
| 生成只读整合报告(拆分候选、标记的观察结果、陈旧实体) |
实体管理
工具 | 描述 |
| 从 Anthropic 的 JSONL 格式导入(幂等) |
| 分析实体是否需要拆分(TF-IDF 主题分组) |
| 提出拆分建议,包含建议的实体名称和关系 |
| 执行已批准的拆分(原子事务) |
| 查找所有需要拆分的实体 |
反思 (Reflections)
工具 | 描述 |
| 向任何实体、会话、关系或全局添加叙事反思。接受作者、内容和情绪。 |
| 通过语义 + FTS5 混合 (RRF) 搜索反思。可选过滤器:作者、情绪、target_type。 |
实体类型
8 种规范类型:
类型 | 用途 |
| 长期项目 |
| 工作会话 |
| 系统和工具 |
| 架构/技术决策 |
| 有时间限制的事件 |
| 人员 |
| 外部资源 |
| 默认回退 |
观察类型
观察结果的语义分类:
类型 | 用途 |
| 发现和结论 |
| 已做出的决策 |
| 状态快照 |
| 规范和要求 |
| 定量测量 |
| 系统生成的元数据 |
| 默认(无分类) |
关系类型
4 个类别:
类别 | 类型 | 示例 |
结构 |
| 项目包含会话 |
生产 |
| 会话产生决策 |
依赖 |
| 项目依赖系统 |
继承 |
| 会话延续会话 |
contiene/parte_de 对会自动创建反向关系。
架构
server.py (FastMCP) <-- storage.py (SQLite + sqlite-vec + FTS5)
|
embeddings.py (ONNX Runtime)
|
sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2
(384d, multilingual, cosine similarity)
|
scoring.py (Limbic Scoring + RRF)
salience . temporal decay . co-occurrence存储:带有 WAL 日志的 SQLite,5 秒忙碌超时,CASCADE 删除
嵌入:启动时加载一次的单例 ONNX 模型,L2 归一化余弦搜索
边缘系统评分:使用重要性信号、时间衰减、共现模式和 RRF 分数对混合 (KNN + FTS5) 候选对象进行重排序 -- 对 API 透明
并发:SQLite 内部处理锁定 -- 无 fcntl,无文件系统冲突
反思:用于叙事层的并行 FTS5 (
reflection_fts) 和向量 (reflection_embeddings) 索引,通过相同的 RRF 混合管道进行搜索
工作原理
每个实体都有一个使用 Head+Tail+Diversity 选择策略(预算:480 个 token)从其文本生成的嵌入向量:
"{name} ({entity_type}) | {obs1} | {obs2} | ... | Rel: type -> target; ..."当您调用 search_semantic 时,管道并行运行:
语义 (KNN) -- 查询被编码并与
sqlite-vec中的实体向量进行比较全文 (FTS5) -- 查询针对覆盖名称、类型和观察内容的 BM25 索引进行搜索
合并 (RRF) -- 使用倒数排名融合 (
score(d) = Sum 1/(k + rank)) 合并来自两个分支的结果
合并后的候选对象随后由 边缘系统评分 引擎进行重排序,该引擎考虑:
显著性 -- 频繁访问且连接良好的实体排名更高
时间衰减 -- 最近使用的实体保持新鲜;未触及的实体逐渐淡出
共现 -- 经常一起出现的实体会相互强化
输出包括 limbic_score、scoring(重要性/时间/共现细分),以及当 FTS5 提供结果时的可选 rrf_score。
有关完整技术细节,请参阅 DOCUMENTATION.md -- 包含评分公式、RRF 常量、模式 DDL 和架构图。
测试
uv run pytest tests/ -v在 15 个测试文件中进行了 285 次以上的测试,涵盖所有工具、嵌入、评分和边缘情况。零回归。
要求
Python >= 3.12
uv (包管理器)
依赖
包 | 用途 |
| MCP 服务器框架 |
| 请求/响应验证 |
| SQLite 中的向量相似度搜索 |
| ONNX 模型推理 (CPU) |
| HuggingFace 快速分词器 |
| 向量运算 |
| 模型下载 |
许可证
MIT
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Yarlan1503/mcp-memory'
If you have feedback or need assistance with the MCP directory API, please join our Discord server