RemembrallMCP
👁 License: MIT
👁 Crates.io
👁 CI
👁 Docker
为 AI 智能体提供持久化知识记忆和代码智能。基于 Rust 核心,使用 Postgres + pgvector,支持 MCP 协议。
问题所在: AI 编码智能体是无状态的。每次会话都从零开始——没有对过去决策的记忆,不了解代码库的结构,也不知道修改代码会引发什么后果。
解决方案: RemembrallMCP 为智能体提供了大多数记忆工具所不具备的两项核心能力:
1. 持久化记忆 - 在会话之间保留决策、模式和组织知识。通过语义 + 全文混合搜索,即时找到相关上下文。
2. 代码依赖图 - 使用 tree-sitter 构建的实时代码库映射。涵盖 8 种语言的函数、类、导入和调用关系。询问“如果我修改这个,会破坏什么?”并在毫秒内得到答案——在智能体进行任何操作之前。
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_store("Switched from JWT to session tokens because...")
-> Decision stored for future sessions为什么代码图谱很重要
如果没有 RemembrallMCP,智能体每次会话都要从头开始探索你的代码库。Claude Code 会生成 Explore 智能体,Codex 会读取数十个文件,Cursor 会在目录中进行 grep 搜索——所有这些都在消耗 Token 和时间,仅仅是为了弄清楚谁调用了谁。一个简单的“查找该函数的所有调用者”任务,在多次工具调用中可能会消耗数千个 Token。
有了 RemembrallMCP,同样的查询只需一次 remembrall_impact 调用,在 1 毫秒内即可返回,且零探索 Token 消耗。依赖图已经构建好并随时待命。
没有 RemembrallMCP | 使用 RemembrallMCP | |
“谁调用了 UserService?” | 智能体 grep 搜索,读取 8-15 个文件,生成子智能体 |
|
“auth 中间件在哪里定义?” | 智能体 glob 匹配,读取匹配项,过滤 |
|
“我们关于缓存做了什么决定?” | 智能体没有上下文,询问你 |
|
典型的探索成本 | 每个问题 5,000-20,000 Token | ~200 Token(工具调用 + 响应) |
节省的成本随代码库规模扩大而增加。在小型项目中,智能体可以通过 grep 和阅读来完成任务。但在 500 个文件的单体仓库中,这种探索会成为瓶颈——智能体会触及上下文限制、生成多个子智能体,或者完全遗漏跨模块的依赖关系。RemembrallMCP 的图查询无论项目规模大小,都能保持在 10 毫秒以内,因为结构已预先索引在 Postgres 中,而不是在运行时发现。
这就是“每次都探索代码库的智能体”与“已经理解代码库的智能体”之间的区别。
基准测试
RemembrallMCP 目前在两个维度上进行了基准测试:
代码任务中的智能体生产力 - 在 pallets/click v8.1.7(594 个符号,1,589 个关系)上进行测试。在有和没有 RemembrallMCP 的情况下运行五个相同的编码任务。完整报告。
记忆召回质量 - 针对 31 个真实查询运行本地召回测试,涵盖搜索质量、过滤、边缘情况、排序和延迟。
指标 | 没有 RemembrallMCP | 使用 RemembrallMCP | 差异 |
总工具调用次数(5 个任务) | 112 | 5 | -95.5% |
预估 Token | ~56,000 | ~1,000 | -98.2% |
每个问题的平均工具调用次数 | 22.4 | 1.0 | -95.5% |
在更大的代码库中,节省效果会叠加。Click 项目约有 90 个文件——在 500+ 文件的单体仓库中,没有 RemembrallMCP 的智能体需要成比例地增加探索调用,而图查询无论规模大小都保持在 10 毫秒以内。
记忆召回指标 | 结果 |
通过的查询 | 31 / 31 |
Recall@5 | 0.917 |
Precision@5 | 0.619 |
MRR | 0.908 |
p95 延迟 | 14ms |
亲自运行基准测试:查看 benchmarks/ 获取测试工具和任务定义。
关于记忆检索、长程记忆、代码图正确性和智能体生产力的更广泛基准策略,请参阅 docs/benchmark-roadmap.md。
要求
Docker(最简单的设置方式)或带有 pgvector 的 PostgreSQL 16
GitHub 导入:安装并认证 GitHub CLI (
gh)
Related MCP server: smriti
快速开始
选项 1:Docker Compose(最简单)
git clone https://github.com/cdnsteve/remembrallmcp.git
cd remembrallmcp
# Start Postgres + initialize schema + download embedding model
docker compose up -d
# Verify it's running
docker compose exec remembrall remembrall status就是这样。带有 pgvector 的 Postgres、模式和嵌入模型都会自动设置。数据库和模型缓存会在重启后持久保存。
运行 MCP 服务器:
docker compose run --rm remembrall选项 2:下载预构建二进制文件
# macOS (Apple Silicon)
curl -fsSL https://github.com/cdnsteve/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/cdnsteve/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"]
}
}
}如果从源码运行(未安装到 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 工具
记忆
工具 | 描述 |
| 搜索记忆 - 使用 RRF 融合的语义 + 全文混合搜索 |
| 使用向量嵌入存储决策、模式和知识 |
| 更新现有记忆(内容、摘要、标签或重要性) |
| 通过 UUID 删除记忆 |
| 从 GitHub 仓库批量导入已合并的 PR 描述 |
| 扫描目录中的 Markdown 文件并将其作为记忆导入 |
代码智能
工具 | 描述 |
| 将项目目录解析为依赖图(8 种语言) |
| 爆炸半径分析 - “如果我修改这个,会破坏什么?” |
| 在整个项目中查找函数或类的定义位置 |
支持的语言
语言 | 扩展名 | 质量评分 |
Python | .py | A (94.1) |
Java | .java | A (92.6) |
JavaScript | .js, .jsx | A (92.0) |
Rust | .rs | A (91.0) |
Go | .go | A (90.7) |
Ruby | .rb | B (87.9) |
TypeScript | .ts, .tsx | B (84.3) |
Kotlin | .kt, .kts | B (82.9) |
评分基于真实开源项目(Click, Gson, Axios, bat, Cobra, Sidekiq, Hono, Exposed)使用自动化基准测试得出。
冷启动
新的 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
(8 languages) (GitHub PRs, Markdown docs)
| |
v v
+--------------------------------------------------+
| Postgres + pgvector |
| |
| memories (text + embeddings + metadata) |
| symbols (functions, classes, methods) |
| relationships (calls, imports, inherits) |
+--------------------------------------------------+
|
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 命令
命令 | 描述 |
| 设置数据库、模式和嵌入模型 |
| 运行 MCP 服务器(未指定子命令时的默认值) |
| 启动 Docker 数据库容器 |
| 停止 Docker 数据库容器 |
| 显示记忆数量、符号数量、连接状态 |
| 检查常见问题(Docker, pgvector, 模式, 模型) |
| 删除并重新创建模式(删除所有数据) |
| 打印版本和配置路径 |
配置
配置文件:~/.remembrall/config.toml(由 remembrall init 创建)
环境变量会覆盖配置文件中的值:
变量 | 描述 |
| PostgreSQL 连接字符串 |
| 数据库模式名称(默认: |
项目结构
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 8 languages
tests/ # Recall test fixtures性能
操作 | 时间 |
记忆存储 | 7ms |
语义搜索 (HNSW) | <1ms |
全文搜索 | <1ms |
混合召回 (端到端) | ~25ms |
影响分析 | 4-9ms |
符号查找 | <1ms |
索引 89 个 Python 文件 | 2.3s |
许可证
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
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/roboticforce/remembrallmcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
