Skip to main content
Glama

完整文档 -- 指南、工具参考、架构和维护,请访问 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)

工具

描述

create_entities

创建或更新实体(冲突时合并观察结果)。接受 status 字段。

create_relations

在实体之间创建类型化关系。接受 context;自动创建定义的反向关系。

add_observations

向现有实体添加观察结果。接受 kindsupersedes 参数,用于语义分类和显式替换。

delete_entities

删除实体及其所有关系/观察结果

delete_observations

从实体中删除特定观察结果

delete_relations

删除实体之间的特定关系

search_nodes

按子字符串搜索(名称、类型、观察内容)

open_nodes

按名称检索实体。接受 kinds 过滤器,include_superseded 标志。返回 reflections 和关系元数据(上下文、active、ended_at)。

搜索与分析

工具

描述

search_semantic

通过向量嵌入进行语义搜索,并使用 边缘系统评分 进行重排序

find_duplicate_observations

查找实体内的语义重复观察结果(余弦 + 包含)

consolidation_report

生成只读整合报告(拆分候选、标记的观察结果、陈旧实体)

实体管理

工具

描述

migrate

从 Anthropic 的 JSONL 格式导入(幂等)

analyze_entity_split

分析实体是否需要拆分(TF-IDF 主题分组)

propose_entity_split_tool

提出拆分建议,包含建议的实体名称和关系

execute_entity_split_tool

执行已批准的拆分(原子事务)

find_split_candidates

查找所有需要拆分的实体

反思 (Reflections)

工具

描述

add_reflection

向任何实体、会话、关系或全局添加叙事反思。接受作者、内容和情绪。

search_reflections

通过语义 + FTS5 混合 (RRF) 搜索反思。可选过滤器:作者、情绪、target_type。

实体类型

8 种规范类型:

类型

用途

Proyecto

长期项目

Sesion

工作会话

Sistema

系统和工具

Decision

架构/技术决策

Evento

有时间限制的事件

Persona

人员

Recurso

外部资源

Generic

默认回退

观察类型

观察结果的语义分类:

类型

用途

hallazgo

发现和结论

decision

已做出的决策

estado

状态快照

spec

规范和要求

metrica

定量测量

metadata

系统生成的元数据

generic

默认(无分类)

关系类型

4 个类别:

类别

类型

示例

结构

contiene / parte_de

项目包含会话

生产

producido_por, contribuye_a

会话产生决策

依赖

depende_de, usa

项目依赖系统

继承

continua, sucedido_por

会话延续会话

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 时,管道并行运行:

  1. 语义 (KNN) -- 查询被编码并与 sqlite-vec 中的实体向量进行比较

  2. 全文 (FTS5) -- 查询针对覆盖名称、类型和观察内容的 BM25 索引进行搜索

  3. 合并 (RRF) -- 使用倒数排名融合 (score(d) = Sum 1/(k + rank)) 合并来自两个分支的结果

合并后的候选对象随后由 边缘系统评分 引擎进行重排序,该引擎考虑:

  • 显著性 -- 频繁访问且连接良好的实体排名更高

  • 时间衰减 -- 最近使用的实体保持新鲜;未触及的实体逐渐淡出

  • 共现 -- 经常一起出现的实体会相互强化

输出包括 limbic_scorescoring(重要性/时间/共现细分),以及当 FTS5 提供结果时的可选 rrf_score

有关完整技术细节,请参阅 DOCUMENTATION.md -- 包含评分公式、RRF 常量、模式 DDL 和架构图。

测试

uv run pytest tests/ -v

在 15 个测试文件中进行了 285 次以上的测试,涵盖所有工具、嵌入、评分和边缘情况。零回归。

要求

  • Python >= 3.12

  • uv (包管理器)

依赖

用途

fastmcp

MCP 服务器框架

pydantic

请求/响应验证

sqlite-vec

SQLite 中的向量相似度搜索

onnxruntime

ONNX 模型推理 (CPU)

tokenizers

HuggingFace 快速分词器

numpy

向量运算

huggingface-hub

模型下载

许可证

MIT

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - A tier

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