← 返回目录
M

MARM Memory MCP Server

社区
为 AI 代理提供本地优先的持久记忆与语义检索
GitHub 源仓库 ↗
★ 350 Stars 分类 · 开发工具 非常热门
63FMRS · C

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

可靠性
10/20
安全与权限
11/20
维护活跃度
13/20
文档质量
15/20
安装易用性
14/20
查看 FMRS 评分方法 →

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 等速率限制配置档。

工具能力

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
将仓库索引进内置代码图谱,查看索引状态,或列出已索引项目
marm_code_lookup
在已索引仓库中查找符号、源码片段或文本匹配
marm_graph_trace
在已索引代码图谱中追踪调用路径或数据流
marm_graph_architecture
返回高层架构、节点与边摘要、模块以及图谱结构
marm_graph_impact
根据 git diff 上下文与受影响的图谱符号评估变更影响
marm_concept_build
从已存储记忆中提取实体与带类型关系,写入概念图谱
marm_concept_recall
显式查询平台感知的概念实体、关系与关联代码符号

安装接入

  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。
claude_desktop_config.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}"
      }
    }
  }
}

选型与风险

适合谁

  • 希望记忆完全本地保存、不依赖云端向量数据库的开发者
  • 在多个 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 漂移)时相关工具会降级报错

常见排障

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

支持客户端

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