jamjet-labs/engram-mcp-server
面向 AI 智能体的持久化内存 —— 时序知识图谱、混合检索、支持 SQLite 或 PostgreSQL。
java-ai-memory.dev · 源代码 · JamJet 文档 · Discord
Engram 是一个面向 AI 智能体的持久化内存层。它从对话中提取事实,将其存储在时序知识图谱中,并通过混合语义+关键词搜索进行检索 —— 支持单个 SQLite 文件或 PostgreSQL 数据库。
此仓库托管 Glama 注册表列表。源代码位于 JamJet 主仓库。
快速入门 —— 30 秒
# Docker — uses local Ollama by default
docker run --rm -i \
-v engram-data:/data \
ghcr.io/jamjet-labs/engram-server:0.5.0或者从 crates.io 安装:
cargo install jamjet-engram-server
engram serveClaude Desktop 配置
添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"engram": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "engram-data:/data",
"ghcr.io/jamjet-labs/engram-server:0.5.0"
]
}
}
}重启后,模型即可使用 11 个 MCP 工具。
MCP 工具 (11)
内存工具 (7)
工具 | 描述 |
| 使用 LLM 驱动的事实提取功能从对话消息中提取并存储事实。副作用:调用配置的 LLM 来解析事实,然后将其写入知识图谱。返回提取的事实 ID。需要 |
| 使用向量相似度对存储的事实进行语义搜索。只读,无副作用。返回匹配查询的排名事实,作用域限定为 |
| 为 LLM 提示词组装一个带有 Token 预算的上下文块,并进行分层事实选择。只读。返回格式化的最相关事实字符串,并限制在指定的 Token 预算内。当你需要现成的提示词片段时,请使用此工具代替 memory_recall。 |
| 使用全文搜索(SQLite FTS5 / Postgres)对事实进行关键词搜索。只读,无副作用。返回匹配精确关键词的事实。当你需要精确术语匹配而非 memory_recall 提供的语义相似度时,请使用此工具。 |
| 通过 ID 软删除事实,并可选择提供原因。副作用:在知识图谱中将事实标记为已删除(不会物理移除)。此工具的操作不可逆。当用户要求删除特定信息时使用。 |
| 获取聚合统计信息:总事实数、有效(未删除)事实数、实体数量和关系数量。只读,无副作用。使用此工具了解内存存储的大小和健康状况。 |
| 对知识图谱运行维护周期 —— 衰减陈旧事实、提升高置信度事实、去重近乎重复的内容并汇总集群。副作用:修改事实评分,并可能合并或归档事实。定期运行以保持内存准确性。 |
消息存储工具 (4)
工具 | 描述 |
| 按 ID 保存对话的聊天消息。副作用:将消息写入存储,并可选择触发事实提取(由 |
| 按 ID 检索对话的所有消息。只读,无副作用。返回有序的消息数组。使用此工具重放或检查过去的对话。 |
| 列出消息存储中的所有对话 ID。只读,无副作用。返回对话 ID 字符串数组。在通过 messages_get 检索之前,使用此工具发现已存储的对话。 |
| 按 ID 删除对话的所有消息。副作用:从存储中永久移除对话消息。不可逆。不会影响已提取的事实 —— 请使用 memory_forget 来处理事实。 |
所有内存工具的作用域均为 (org_id, user_id, session_id) —— org 为最粗粒度,session 为最细粒度。
LLM 提供商
与提供商无关。 单个二进制文件,设置 ENGRAM_LLM_PROVIDER=... 即可使用:
提供商 | 环境变量值 | 备注 |
Ollama |
| 本地、免费、无需 API 密钥 |
OpenAI 兼容 |
| OpenAI, Azure, Groq, Together, Mistral, DeepSeek, vLLM, LM Studio 等 |
Anthropic |
| 通过 Messages API 使用 Claude |
| 通过 generateContent 使用 Gemini | |
Shell 命令 |
| 管道传输至任何外部脚本 |
模拟 |
| 确定性,仅用于测试 |
# Example: use Groq instead of Ollama
docker run --rm -i \
-e ENGRAM_LLM_PROVIDER=openai-compatible \
-e ENGRAM_OPENAI_BASE_URL=https://api.groq.com/openai/v1 \
-e OPENAI_API_KEY=gsk_... \
-v engram-data:/data \
ghcr.io/jamjet-labs/engram-server:0.5.0为什么选择 Engram?
问题 | Engram 的解决方案 |
每个智能体内存库都是 Python 优先 | Rust 核心,提供原生 Python、Java 和 MCP 客户端 |
尝试时需要 Postgres + Qdrant + Neo4j | 单个 SQLite 文件(零基础设施)或按需使用 Postgres |
对话历史不是知识内存 | 事实提取流水线 —— 从消息中提取结构化事实 |
旧事实会漂移并产生冲突 | 冲突检测 + 整合 —— 衰减、提升、去重、汇总 |
内存检索要么是语义的,要么是关键词的 | 混合检索 —— 单次查询中结合向量搜索 + FTS5 |
MCP 支持是事后添加的 | MCP 原生 —— 单个二进制文件暴露 11 个工具 |
无法按用户或租户隔离内存 | 一流的作用域 —— 每个查询内置 org / user / session |
客户端 SDK
语言 | 包 | 安装 |
Python |
|
|
Java |
| Maven Central |
Spring Boot |
| Maven Central |
Rust |
|
|
相关项目
JamJet —— 完整的智能体原生运行时(父项目)
java-ai-memory.dev —— 与 Mem0、Zep、LangChain4j、Spring AI 等的对比
许可证
Apache 2.0 —— 参见 LICENSE。
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/jamjet-labs/engram-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server