mcpField
R
RemembrallMCP

RemembrallMCP

本地服务
github.com/cdnsteve记忆与知识3513 周前更新

关于 RemembrallMCP

RemembrallMCP 为 AI 编码 Agent 提供整个代码库的知识,包括字段级代码图谱和跨会话的持久记忆。基于 Rust、Postgres 与 pgvector 构建,适合需要理解大型项目结构的开发者。

主要功能

  1. 01字段感知的代码依赖图谱
  2. 02支持 9 种编程语言
  3. 03影响范围分析,可追踪到单个字段
  4. 04跨会话持久记忆
  5. 05语义与全文混合检索
  6. 06从 GitHub PR 与 Markdown 文档冷启动导入

适用场景

  1. 01查询修改某个函数或字段会影响哪些文件
  2. 02让编码 Agent 记住过去会话中的架构决策
  3. 03从历史 PR 和文档初始化项目记忆

MCP 相关

RemembrallMCP 以 MCP 服务的形式运行,向 MCP 客户端暴露 9 个工具,用于记忆存取、代码索引、影响分析和符号查找。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cdnsteve-remembrallmcp": {
"command": "npx",
"args": [
"-y",
"remembrallmcp"
],
"env": {
"DATABASE_URL": "<DATABASE_URL>"
}
}
}
}
启动命令npx -y remembrallmcp
需要配置的环境变量
DATABASE_URL密钥PostgreSQL connection string with pgvector extension

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmremembrallmcp0.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

RemembrallMCP

License: MIT Crates.io CI Docker

为 AI 编码 Agent 提供完整代码库知识。基于 Rust、Postgres + pgvector 构建,包含字段感知代码图谱和持久记忆,并通过 MCP 提供服务。

问题: AI 编码 Agent 每次会话只能看到书中的几页。它们需要从头开始 grep、阅读并重新推导代码库各部分如何协作——没有调用关系图谱,不知道更改会导致什么问题,也不记得过去会话中做出的决定。

解决方案: RemembrallMCP 为 Agent 提供完整代码库——跨 9 种语言的字段感知依赖图(函数、类、方法、字段及其相互引用),以及可跨会话保留的持久记忆。

1. 字段感知代码图谱 - 使用 tree-sitter 构建的实时代码库地图。涵盖 9 种语言中的函数、类、方法和数据字段,以及调用、导入、定义、继承和字段引用关系。询问“如果更改这个,会有什么影响?”——精确到单个结构体字段——即可在毫秒内得到答案,Agent 无需触碰任何内容。

2. 持久记忆 - 可跨会话保留的决策、模式和组织知识。混合语义 + 全文搜索可即时找到相关上下文。

remembrall_recall("authentication middleware patterns")
-> 3 relevant memories from past sessions

remembrall_index("/path/to/project", "myapp")
-> Builds dependency graph: 847 symbols, 1,203 relationships

remembrall_impact("AuthMiddleware", direction="upstream")
-> 12 files depend on AuthMiddleware (with confidence scores)

remembrall_impact("amount", direction="upstream")
-> methods that read self.amount, across the whole codebase

remembrall_store("Switched from JWT to session tokens because...")
-> Decision stored for future sessions
为什么代码图谱很重要

没有 RemembrallMCP 时,Agent 每次会话都要从头探索代码库。Claude Code 会启动 Explore Agent,Codex 会读取数十个文件,Cursor 会在目录中 grep——仅仅为了弄清楚调用关系,就要耗费 token 和时间。单是一个“找出此函数的所有调用方”任务,就可能通过多次工具调用消耗数千个 token。

有了 RemembrallMCP,同样的查询只需调用一次 remembrall_impact,不到 1ms 即可返回,且无需消耗探索 token。依赖图已经构建完成,随时可用。

不使用 RemembrallMCP使用 RemembrallMCP
“谁调用了 UserService?”Agent 使用 grep,读取 8-15 个文件,启动子 Agentremembrall_impact - 1 次调用,<1ms
“身份验证中间件定义在哪里?”Agent 使用 glob,读取匹配项并筛选remembrall_lookup_symbol - 1 次调用,<1ms
“谁引用了 amount 字段?”Agent 搜索 self.amount,遗漏 ORM 和跨模块用法remembrall_impact - 1 次调用,<1ms
“我们对缓存做了什么决定?”Agent 没有上下文,只能询问你remembrall_recall - 1 次调用,约 25ms
典型探索成本每个问题 5,000-20,000 个 token约 200 个 token(工具调用 + 响应)

代码库越大,节省越多。在小型项目中,Agent 可以通过 grep 和阅读来逐步了解代码。在包含 500 个文件的单体仓库中,这种探索会成为瓶颈——Agent 会达到上下文限制、启动多个子 Agent,或完全遗漏跨模块依赖。RemembrallMCP 的图谱查询无论项目大小都能保持在 10ms 以内,因为结构已预先索引到 Postgres 中,而不是在运行时才发现。

这就是每次都只读书中几页的 Agent,与已经掌握整个代码库的 Agent 之间的区别。

基准测试

RemembrallMCP 目前针对两个方面进行了基准测试:

  • 代码任务中的 Agent 效率 - 在 pallets/click v8.1.7(594 个符号、1,589 个关系)上进行测试。分别在使用和不使用 RemembrallMCP 的情况下运行五项相同的编码任务。完整报告。
  • 记忆召回质量 - 使用本地召回测试框架,对涵盖搜索质量、筛选、边界情况、排序和延迟的 31 条真实查询进行测试。
指标不使用 RemembrallMCP使用 RemembrallMCP差值
工具调用总数(5 项任务)1125-95.5%
预估 Token 数~56,000~1,000-98.2%
每个问题的平均工具调用次数22.41.0-95.5%

在更大的代码库上,节省效果会进一步累积。Click 约有 90 个文件——在拥有 500 多个文件的单体代码库中,不使用 RemembrallMCP 的 Agent 需要按比例进行更多探索调用,而图查询无论规模大小都能保持在 10ms 以内。

记忆召回指标结果
通过的查询数31 / 31
Recall@50.917
Precision@50.619
MRR0.908
p95 延迟14ms

亲自运行基准测试:请参阅 benchmarks/,了解测试框架和任务定义。

如需了解涵盖记忆检索、长时程记忆、代码图正确性和 Agent 效率的整体基准测试策略,请参阅 docs/benchmark-roadmap.md。

要求

  • Docker(最简单的设置方式),或安装了 pgvector 的 PostgreSQL 16
  • 如需采集 GitHub 数据:安装并完成身份验证的 GitHub CLI(gh)

快速开始

选项 1:Docker Compose(最简单)
git clone https://github.com/roboticforce/remembrallmcp.git
cd remembrallmcp

# Start Postgres, initialize the schema, download the embedding model,
# and run the MCP server. The remembrall container stays up after setup.
docker compose up -d

# Verify it's running (database connected, schema ready)
docker compose exec remembrall remembrall status

就是这样。Postgres、pgvector、架构和嵌入模型都会自动完成设置。数据库和模型缓存会在重启后保留。

remembrall 容器启动时会运行 remembrall init(幂等设置),然后运行 remembrall serve,因此它会持续运行,且 docker compose exec 可用于执行状态检查、doctor 和其他命令。

要将 MCP 客户端(Claude Code、Cursor、Codex)连接到服务,请参阅下文的连接到 MCP 客户端。

选项 2:下载预构建二进制文件
# macOS (Apple Silicon)
curl -fsSL https://github.com/roboticforce/remembrallmcp/releases/latest/download/remembrall-aarch64-apple-darwin.tar.gz | tar xz
sudo mv remembrall /usr/local/bin/

# Linux (x86_64)
curl -fsSL https://github.com/roboticforce/remembrallmcp/releases/latest/download/remembrall-x86_64-unknown-linux-gnu.tar.gz | tar xz
sudo mv remembrall /usr/local/bin/

# Initialize (sets up Postgres via Docker, creates schema, downloads model)
remembrall init
选项 3:从源代码构建(需要 Rust 1.94+)
cargo build -p remembrall-server --release
# Binary is at target/release/remembrall

remembrall init
连接到 MCP 客户端
Codex

Codex 使用相同的 MCP 服务定义格式。将服务注册为 remembrall,并将其指向已安装的二进制文件或本地发布版本构建。

如果 remembrall 已安装在 PATH 中:

{
  "mcpServers": {
    "remembrall": {
      "command": "remembrall"
    }
  }
}

如果从本地源代码检出目录运行:

{
  "mcpServers": {
    "remembrall": {
      "command": "/path/to/remembrallmcp/target/release/remembrall",
      "env": {
        "DATABASE_URL": "postgres://postgres:postgres@localhost:5450/remembrall"
      }
    }
  }
}

如果在 Codex 中使用 Docker Compose:

{
  "mcpServers": {
    "remembrall": {
      "command": "docker",
      "args": ["compose", "-f", "/path/to/remembrallmcp/docker-compose.yml", "run", "--rm", "-T", "remembrall"]
    }
  }
}

添加服务后,重启 Codex,以便它重新连接并加载工具。

Claude Code、Cursor 和其他 MCP 客户端

将配置添加到项目的 .mcp.json 中(适用于 Claude Code、Cursor 和任何兼容 MCP 的客户端)。

如果使用预构建二进制文件或从源代码构建:

{
  "mcpServers": {
    "remembrall": {
      "command": "remembrall"
    }
  }
}

如果使用 Docker Compose:

{
  "mcpServers": {
    "remembrall": {
      "command": "docker",
      "args": ["compose", "-f", "/path/to/remembrallmcp/docker-compose.yml", "run", "--rm", "-T", "remembrall"]
    }
  }
}

每次调用都会启动一个全新的容器,运行 remembrall init(幂等;其输出会发送到 stderr,因此不会破坏 MCP 流),然后通过 stdio 运行 remembrall serve。必须使用 -T 标志,以禁用 TTY 分配,确保 JSON-RPC 能够正常传递。db 服务会通过 depends_on 自动启动。

如果从源代码运行(未安装到 PATH):

{
  "mcpServers": {
    "remembrall": {
      "command": "/path/to/remembrallmcp/target/release/remembrall",
      "env": {
        "DATABASE_URL": "postgres://postgres:postgres@localhost:5450/remembrall"
      }
    }
  }
}

重启 MCP 客户端。全部 9 个工具将自动可用。

试用
> "Store a memory: We chose Postgres over MongoDB because our query patterns
   are relational. Type: decision, tags: database, architecture"

> "Recall what we know about database decisions"

> "Index this project and show me the impact of changing UserService"

MCP 工具

记忆
工具描述
remembrall_recall搜索记忆——结合语义搜索与全文搜索,并使用 RRF 融合
remembrall_store使用向量嵌入存储决策、模式和知识
remembrall_update更新现有记忆(内容、摘要、标签或重要性)
remembrall_delete按 UUID 删除记忆
remembrall_ingest_github从 GitHub 仓库批量导入已合并 PR 的描述
remembrall_ingest_docs扫描目录中的 Markdown 文件,并将其导入为记忆
代码智能
工具描述
remembrall_index将项目目录解析为具备字段感知能力的代码图(涵盖 9 种语言中的函数、类、方法和字段)
remembrall_impact影响范围分析——“如果我更改此处,会有哪些内容出问题?”适用于函数、类、方法和字段
remembrall_lookup_symbol查找项目中函数、类、方法或字段的定义位置

支持的语言

语言扩展名质量评分
Python.pyA (94.1)
Java.javaA (92.6)
JavaScript.js, .jsxA (92.0)
Rust.rsA (91.0)
Go.goA (90.7)
Ruby.rbB (87.9)
TypeScript.ts, .tsxB (84.3)
Kotlin.kt, .ktsB (82.9)
C#.csA (96.8)

这些评分是通过自动化基准测试,针对真实开源项目(Click、Gson、Axios、bat、Cobra、Sidekiq、Hono、Exposed、MediatR)测得的。C# 评分以 MediatR 12.4.1 为基准(69 个符号、48 个关系、9 个影响查询、10 个边界案例):符号、导入和边界案例的准确率均为 100%;差距来自泛型接口继承(: IPipelineBehavior<TRequest, TResponse> 被解析为合成 UUID,而非类符号)以及一次字段分派调用解析错误。C# 字段级引用通过字段捕获测试夹具单独验证,准确率为 100%。

冷启动

新的 RemembrallMCP 实例不包含任何知识。使用导入工具,从现有项目历史中进行初始化。

从 GitHub PR 历史导入:

> remembrall_ingest_github repo="myorg/myrepo" limit=100

通过 gh 获取已合并的 PR,将标题和正文整理为记忆,并按项目添加标签。正文少于 50 个字符的 PR 会被跳过。基于内容指纹进行去重,避免重复运行时再次导入相同内容。

从 Markdown 文档导入:

> remembrall_ingest_docs path="/path/to/project"

遍历目录树,查找所有 .md 文件,按 H2 章节标题拆分,并将每个章节存储为可搜索的记忆。跳过 node_modules、.git、target 等目录。适用于 README、ARCHITECTURE、ADR 和各类文档。

每个项目运行一次这两种导入。导入后,remembrall_recall 即可立即获取上下文。

架构

Source Code                   Organizational Knowledge
    |                                 |
    v                                 v
Tree-sitter Parsers           Ingestion Pipeline
(9 languages)                 (GitHub PRs, Markdown docs)
    |                                 |
    v                                 v
+--------------------------------------------------+
|              Postgres + pgvector                  |
|                                                   |
|  memories (text + embeddings + metadata)          |
|  symbols (functions, classes, methods, fields)    |
|  relationships (calls, imports, defines,          |
|                 inherits, references)             |
+--------------------------------------------------+
                          |
                    MCP Server (stdio)
                          |
              Any MCP-compatible AI agent
  • 解析: tree-sitter(Rust 绑定,处理流水线中不使用 Python)
  • 嵌入: fastembed(all-MiniLM-L6-v2,384 维,进程内 ONNX Runtime)
  • 搜索: 混合 RRF(语义余弦相似度 + 全文 tsvector)
  • 图查询: 带环检测和置信度衰减的递归 CTE
  • 传输: 通过 rmcp 使用 stdio

CLI 命令

命令描述
remembrall init设置数据库、架构和嵌入模型
remembrall serve运行 MCP 服务(未指定子命令时的默认命令)
remembrall start启动 Docker 数据库容器
remembrall stop停止 Docker 数据库容器
remembrall status显示记忆数量、符号数量和连接状态
remembrall doctor检查常见问题(Docker、pgvector、架构、模型)
remembrall reset --force删除并重新创建架构(删除所有数据)
remembrall version输出版本和配置路径

配置

配置文件:~/.remembrall/config.toml(由 remembrall init 创建)

环境变量会覆盖配置文件中的值:

变量描述
REMEMBRALL_DATABASE_URL 或 DATABASE_URLPostgreSQL 连接字符串
REMEMBRALL_SCHEMA数据库架构名称(默认值:remembrall)

项目结构

crates/
  remembrall-core/          # Library - parsers, memory store, graph store, embedder
  remembrall-server/        # MCP server + CLI binary
  remembrall-test-harness/  # Parser quality testing against ground truth
  remembrall-recall-test/   # Search quality testing
docs/                       # Architecture and test plan docs
test-fixtures/              # Ground truth TOML files for 9 languages
tests/                      # Recall test fixtures

性能

操作耗时
存储记忆7ms
语义搜索(HNSW)<1ms
全文搜索<1ms
混合召回(端到端)~25ms
影响分析4-9ms
符号查找<1ms
为 89 个 Python 文件建立索引2.3s

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。