← 返回目录
M

MARM Memory MCP Server

社区
为 AI 代理提供本地优先的持久记忆与语义检索
分类
开发工具 第 74 / 438
Stars
★ 422 非常热门
传输方式
stdio(本地进程) · Streamable HTTP
运行环境
Python 3.10+ · Docker 20.10.0+
凭据
可选 API Key
许可证
Apache-2.0
最近提交
工具数
14
63FMRS · C

MARM Memory 是一个本地优先的 MCP 记忆服务器,把会话记忆、代码图谱与概念图谱整合到一个嵌入式 SQLite 存储中,通过 STDIO 或 HTTP 暴露 14 个工具。它适合希望在多个 AI 编码客户端之间共享持久上下文、且不愿把记忆放到云端的自托管用户;召回采用 FTS5 精确通道加语义重排的混合方案,官方基准显示记忆量增长时召回延迟增长缓慢。需要注意的是项目并非官方产品,HTTP 暴露、Docker 挂载与可选的写入合并/压缩功能都带来配置复杂度与性能取舍,部署前应确认密钥、网络绑定与数据目录权限。

最强项 · 文档质量 15/20 最弱项 · 可靠性 10/20

可靠性
10/20
安全与权限
11/20
维护活跃度
13/20
文档质量
15/20
安装易用性
14/20
查看各项评分依据
可靠性 10/20
静态审阅仅见 README、server.json 与仓库元数据,未见任何已提交的测试文件内容、CI 工作流本体或源代码。可验证的可靠性证据包括:14 个工具的声明与 README 中的参数表、降级语义(graph backend unavailable 时其余 9 个工具仍可用)、概念图失败不阻塞核心记忆、1MB 响应限流、显式 recall_scan_truncated 截断标志、写入队列与子进程崩溃重启描述,这些设计意图表述具体且自洽。但均为文档自述,无法在静态条件下复核;README 自承输出存在 run-to-run 方差、并发比 0.63-0.86 被自己判定为噪声,性能数字不可独立验证。README 在 Architecture 一节末尾明显被截断('caught at s'),说明发布内容未完成校订。缺少可见的测试覆盖、fixture 或可复现验证步骤,按校准规则不确定性必须扣分,可靠性不超过 12。综合给 10:正常路径可信度较高,边界与错误路径证据薄弱。
安全与权限 11/20
未触发红线:未发现恶意代码、窃取凭据、隐蔽外传或伪造维护者身份;localhost 默认绑定、Docker HTTP 暴露时强制 MARM_API_KEY 的要求是合理的最小权限取向。但仍有多处扣分项:SERVER_HOST 默认值在 manifest 与 README 中不一致(0.0.0.0 vs 默认 localhost),若以 manifest 为准则是默认对外监听,属潜在暴露面。--profile trusted 明确关闭限流,--expose-network 直接绑定 0.0.0.0,均缺少程序内置的二次确认机制,仅靠文档提醒用户自行配置防火墙与 TLS。README 示例中含 'MARM_API_KEY=test' 与 'Authorization: Bearer your-generated-key' 占位串,非真实密钥,未构成泄露,但把测试密钥写法放在易被复制的位置存在实操风险。零云、数据留存于 ~/.marm 的数据面描述清晰,侧信道与权限边界说明不完整(如控制台导入密钥、并发多进程锁的权限粒度)。综合 11,无红线但权限与暴露面控制不完整。
维护活跃度 13/20
有 Apache-2.0 许可证、明确的作者署名(Ryan Lyell / marm-memory)、语义化版本 2.48.0 并在 manifest、README、Docker 标签间保持一致,附有 Discord 社区、GitHub Issues 与 Discussions 渠道,README 中的变更叙述(v2.44.4 日志通道修复、v2.33.1→v2.44.3 的 LoCoMo 迭代)显示持续发布轨迹。350 stars、12 个 open issue、仓库未归档,说明仍活跃。扣分项:未见源代码级的依赖更新策略、发布签名、SECURITY.md 或安全响应流程;CodeQL 与 Publish 徽章指向 CI 但 CI 内容不在证据中;文档中一处竞品对比表自述参考“Q3 2026”且承认基于公开文档而非实测,时间基准可疑。综合 13:活跃且有归属,但治理与安全响应通道证据不足。
文档质量 15/20
文档层次完整且体量较大:快速开始、六种运行配置(pip HTTP/STDIO、Docker HTTP/STDIO、swarm 配置)、覆盖 Claude Code、VS Code、Cursor、Codex、Gemini、Qwen、Grok 的客户端配置示例、14 个工具的参数表、环境变量说明、架构内部机制(WAL、FTS5、分块嵌入、写入队列、概念图独立库)、故障排查(401/406 语义解释)与备份路径说明,另附文档站点与 API 参考链接。扣分项:(1) SERVER_HOST 默认值在 manifest(0.0.0.0)与 README(默认 localhost)之间存在直接矛盾,属能力与配置描述冲突;(2) 基准数据自述存在运行间波动,LoCoMo 只给区间而不给单点结果,部分说明是“形状而非绝对值”,可复核性受限;(3) README 明显被截断,末尾句子不完整;(4) 成本模型只用 token 叙述,缺少具体预算表。综合 15:可用的分层文档,但存在内部矛盾与未收尾内容。
安装易用性 14/20
安装路径清晰且多样:pip install 后以 marm-memory init / start 启动,或使用 marm-mcp-stdio;Docker 提供 docker run、docker compose、docker stdio-command 及 --dry-run/--data-dir/--repo 等受控参数,并有 key init/key reveal 的密钥落盘方式(写入 ~/.marm/.env 而非 shell 历史),对多平台(Windows/macOS/Linux 及 PowerShell 写法)均有示例。按校准规则,setup 高于 15 需要文件中具备可验证的执行证据(真实 CI 工作流 + 覆盖关键路径的已提交测试),本证据仅见 README 中的徽章引用,无工作流全文与测试文件,故不高于 15。扣分项:默认端口 8001、需同时理解 HTTP/STDIO/Docker/多客户端矩阵,对新手仍有手工步骤;manifest 与 README 的默认主机不一致会增加排障成本;Docker 图索引要求重新挂载容器说明额外复杂度。综合 14:几步可跑通且示例充分,但依赖未验证,且配置语义存在歧义。

静态评测 · 未实际运行收录于 2026-09-10

查看 FMRS 评分方法 →

选型与风险

能访问什么读取本地文件连接数据库

适合谁

  • 希望记忆完全本地保存、不依赖云端向量数据库的开发者
  • 在多个 MCP 客户端之间切换、需要延续上下文的用户
  • 需要代码结构理解与变更影响分析能力的编码代理使用者
  • 愿意自行运行 Python 或 Docker 服务的自托管用户

不适合谁

  • 需要官方托管云服务或 SLA 保障的团队
  • 不使用 MCP 客户端的纯 API 集成场景
  • 无法运行本地进程或容器的受限环境
  • 期望开箱即用的图形化管理后台以外的零配置云方案的用户

所需权限

  • 读写本地数据目录(默认 ~/.marm/,Windows 为 %USERPROFILE%\.marm\),其中包含 SQLite 记忆库、索引库与日志
  • HTTP 模式默认绑定 localhost:8001,可通过 SERVER_HOST=0.0.0.0 暴露到网络
  • Docker 运行时需要挂载数据卷,代码索引需要以只读方式挂载仓库路径
  • 首次使用代码图谱时会下载图谱引擎二进制(约 269MB),需要网络访问
  • Docker HTTP 模式需要 MARM_API_KEY 环境变量用于 Bearer 认证

风险与副作用

  • 若以 SERVER_HOST=0.0.0.0 暴露 HTTP 端口且未配置防火墙与 TLS 代理,记忆数据可能被未授权访问
  • 记忆内容与代码结构索引存放在本地明文 SQLite 中,任何能读取该目录的进程都可访问
  • Docker 环境下的代码图谱工具只能看到挂载进容器的路径,误用宿主机路径会导致索引失败
  • 开启写入时合并(CONSOLIDATION_ENABLED=1)会显著增加写入延迟(中位数约 6.5ms 升至 58.1ms)
  • 概念图谱积压回填期间召回延迟会暂时升高(实测中位数约 8ms 升至 16ms)
  • 代码图谱引擎启动失败(首次下载无网络、磁盘已满、schema 漂移)时相关工具会降级报错

安装接入

准备工作

运行环境:Python 3.10+ · Docker 20.10.0+

MARM_API_KEY 可选密钥 Docker 或对外暴露的 HTTP 模式所需的 Bearer 密钥;本地 pip/STDIO 模式不需要。可用 marm-memory key init 或 docker run --rm lyellr88/marm-mcp-server --generate-key 生成。
其他可选配置项(19 个)
MARM_DB_PATH 可选 SQLite 数据库文件路径,默认 /app/data/marm_memory.db。
MARM_LOG_LEVEL 可选 日志级别(DEBUG/INFO/WARNING/ERROR),默认 INFO。
SERVER_HOST 可选 服务器绑定的主机地址,默认 0.0.0.0;仅本地使用时无需密钥。
SERVER_PORT 可选 HTTP 端口,默认 8001。
RECALL_SCAN_LIMIT 可选 语义回退扫描的嵌入记忆上限(默认 10000),超过会返回 recall_scan_truncated=true。
MARM_PROJECT 可选 覆盖自动从工作目录检测的项目归属。
MARM_PLATFORM 可选 覆盖自动检测的客户端平台归属。
GRAPH_ENABLED 可选 设为 false 可禁用代码/概念图引擎,使图工具进入降级模式。
CONCEPT_AUTO_INDEX 可选 设为 false 可停止新记忆自动进入概念图,改为手动构建。
CONCEPT_INDEX_DEBOUNCE_SECONDS 可选 概念图后台索引的去抖间隔,默认 30 秒。
CONCEPT_INDEX_BATCH_SIZE 可选 概念图索引每批处理的记忆数,默认 20。
CONCEPT_BUILD_ROW_CAP 可选 概念图全量构建的分页行数上限,默认 500。
CONSOLIDATION_ENABLED 可选 设为 1 开启写入时去重/合并(约 9 倍写入成本),默认关闭。
CONSOLIDATION_THRESHOLD 可选 语义合并判定所需的余弦相似度阈值。
COMPACTION_ENABLED 可选 设为 1 开启会话记忆压缩候选检测。
COMPACTION_STAGING_TTL_HOURS 可选 已暂存压缩摘要的过期时间(小时)。
MAX_QUEUE_SIZE 可选 内部串行写队列的容量上限。
FTS_CANDIDATE_LIMIT 可选 混合召回中 FTS 预筛候选数量上限,默认 200。
GRAPH_AUTO_INDEX 可选 仓库自动重索引的环境变量开关;persistent 开关优先级更高。
  1. 安装 Python 包:pip install marm-mcp-server(要求 Python 3.10 及以上)。
  2. 初始化并写入客户端配置:marm-memory init --g-claude --g-codex --g-gemini(也支持 --g-qwen、--g-kiro;不带参数则在当前项目目录安装)。
  3. 也可以让 AI 代理使用 marm-init 技能在对话中完成 Python/Docker、HTTP/STDIO、密钥与客户端配置的交互式设置。
  4. 手动启动:HTTP 使用 marm-memory start,随后执行客户端命令,如 claude mcp add --transport http marm-memory http://localhost:8001/mcp;Codex 使用 codex mcp add marm-memory --url http://localhost:8001/mcp。
  5. 私有 STDIO 模式:运行 marm-mcp-stdio(或 python -m marm_mcp_server.server_stdio),再执行 claude mcp add --transport stdio marm-memory-stdio marm-mcp-stdio。
  6. Docker HTTP 需要先生成密钥(docker run --rm lyellr88/marm-mcp-server:latest --generate-key),运行容器时挂载 ~/.marm:/home/marm/.marm 并设置 MARM_API_KEY,然后在客户端添加 Authorization: Bearer 头。
  7. Docker STDIO 无需密钥:docker run --rm -i -v ~/.marm:/home/marm/.marm --entrypoint python lyellr88/marm-mcp-server:latest -m marm_mcp_server.server_stdio。
  8. 验证:curl http://localhost:8001/health。
.mcp.json
{
  "mcpServers": {
    "marm-memory-local": {
      "type": "http",
      "url": "http://localhost:8001/mcp"
    },
    "marm-memory-docker": {
      "type": "http",
      "url": "http://localhost:8001/mcp",
      "headers": {
        "Authorization": "Bearer ${env:MARM_API_KEY}"
      }
    }
  }
}

以 Claude Code 为例。其他客户端的配置文件位置或字段可能不同(如 VS Code 使用 servers 字段),可用下方配置生成器转换。

.vscode/mcp.json
{
  "servers": {
    "marm-memory-local": {
      "type": "http",
      "url": "http://localhost:8001/mcp"
    },
    "marm-memory-docker": {
      "type": "http",
      "url": "http://localhost:8001/mcp",
      "headers": {
        "Authorization": "Bearer ${env:MARM_API_KEY}"
      }
    }
  }
}

写入项目的 .vscode/mcp.json(VS Code 使用 servers 字段)。

Terminal
claude mcp add --transport http marm-memory-local http://localhost:8001/mcp
claude mcp add --transport http marm-memory-docker http://localhost:8001/mcp --header 'Authorization: Bearer ${env:MARM_API_KEY}'

在终端运行;先把 <…> 占位符换成你自己的值。

验证是否装好

运行 marm-memory start 后执行 curl http://localhost:8001/health 确认服务健康;连接客户端后应能看到 marm_log_entry、marm_smart_recall 等 14 个工具,并可让 agent 调用 marm_log_entry 记录一条测试记忆再用 marm_smart_recall 检索验证。

常见排障

  1. 返回 401 Unauthorized 表示密钥缺失或不匹配;确认 MARM_API_KEY 一致并在修改环境变量后重启客户端
  2. Docker HTTP 冒烟测试中 GET /mcp 返回 406 Not Acceptable 属于正常,说明认证已到达 MCP 端点
  3. Codex 的 --bearer-token-env-var 接受的是环境变量名而非密钥本身,设置后需在同一 shell 中启动或重启 Codex
  4. 召回结果出现 recall_scan_truncated=true 表示语义回退触及 RECALL_SCAN_LIMIT 上限,可缩小会话范围或调高该环境变量
  5. 图谱工具提示 graph backend unavailable 时,检查网络与磁盘空间,或确认 GRAPH_ENABLED 未被设为 false;其余 9 个工具仍可正常使用
  6. 概念工具异常时先运行 marm-memory knowledge status,必要时重装 MARM
  7. 使用 marm-memory doctor 诊断本地安装问题,运行 marm-memory upgrade --check 与 PyPI 版本比对

试试这样问

连接成功后,可以直接对 AI 助手这样说:

  • 把这次关于数据库设计的讨论记录到会话 auth-research-2025-01 里
  • 搜索一下我们昨天讨论过的 JWT 认证相关内容
  • 为这个仓库建立代码索引,然后说明它的整体架构
  • 帮我删除笔记本里名为 jwt-validation-pattern 的条目

工具能力 14

marm_log_entry 写入
将重要信息记录到 MARM 记忆系统
marm_smart_recall 只读
混合记忆召回,在可用时附带受限的概念与关联代码上下文
marm_summary 只读
基于记忆数据生成智能摘要
marm_notebook 写入
统一笔记本——新增、使用、显示、状态、清空或保存条目(必须提供 action 参数)
marm_log_show 只读
显示记忆日志条目
marm_delete 破坏性
删除日志会话、日志条目或笔记本条目(type='log'|'notebook')
marm_compaction 破坏性
审查、暂存、应用或丢弃代理辅助的记忆压缩候选
marm_graph_index 写入
将仓库索引进内置代码图谱,查看索引状态,或列出已索引项目
展开其余 6 个工具
marm_code_lookup 只读
在已索引仓库中查找符号、源码片段或文本匹配
marm_graph_trace 只读
在已索引代码图谱中追踪调用路径或数据流
marm_graph_architecture 只读
返回高层架构、节点与边摘要、模块以及图谱结构
marm_graph_impact 只读
根据 git diff 上下文与受影响的图谱符号评估变更影响
marm_concept_build 写入
从已存储记忆中提取实体与带类型关系,写入概念图谱
marm_concept_recall 只读
显式查询平台感知的概念实体、关系与关联代码符号

使用场景

在多个 AI 客户端(Claude Code、Codex、Gemini 等)之间共享同一份项目记忆与决策记录
为编码代理提供代码库结构索引,减少反复 grep 与整文件读取的 token 消耗
通过概念图谱把跨会话的决策、错误、工具与人员关联起来
离线或隐私敏感环境下运行本地 SQLite 记忆服务,不进行云端同步
多代理协作场景下通过 swarm 配置档共享记忆并限制 HTTP 写入速率

支持客户端

Claude Code
VS Code / GitHub Copilot Agent
Cursor
Codex
Gemini CLI
Qwen Code
xAI / Grok Remote MCP部分支持

依据项目文档列出,未经本站实测。

详细介绍

MARM Memory 是一个本地优先的 MCP 服务器,为 Claude Code、Codex、Grok、Gemini、VS Code 和 Cursor 等客户端提供持久记忆能力。它把会话历史、代码库索引与概念图谱三部分融合在一个嵌入式 SQLite 存储中,实现零云端、隐私优先的上下文保留与即时召回,并支持多代理共享同一份记忆。服务器提供 14 个 MCP 工具:7 个核心记忆工具(记录、混合召回、摘要、笔记本、日志查看、删除、压缩整理)、5 个代码图谱工具(仓库索引、符号查找、调用链追踪、架构概览、变更影响分析)以及 2 个概念图谱工具(实体与关系构建、图谱查询)。记忆召回采用 FTS5 BM25 精确通道加语义重排序的混合流水线,较长的记忆会被切分成重叠块进行嵌入,召回时再折叠回父记忆。服务器同时支持 STDIO 与 HTTP 传输,HTTP 提供 swarm、swarm-max、trusted 等速率限制配置档。

同类可选方案

Context7 80 · B

Upstash 官方维护,为 AI 编码助手提供实时更新的第三方库文档

★ 63.3k · 工具数 2 与当前对比 →

源版本 97871d57ce7a 数据同步于 2026-10-19 查看 FMRS 评分方法