项目简介
ENGRAM (Extended Neural Graph for Recall and Memory) 是一款功能强大的MCP服务器,专为提升AI系统和大型语言模型(LLM)的记忆和上下文管理能力而设计。它通过实现神经网络和时间感知的方法,提供了短期记忆、长期记忆、语义搜索、记忆冲突解决及智能洞察生成等核心功能,旨在作为AI系统的认知骨干。ENGRAM通过标准化的MCP协议与LLM客户端通信,提供安全、可扩展的上下文服务。
主要功能点
- 上下文记忆管理: 跨会话存储、检索和管理对话上下文。
- 语义搜索: 基于向量的搜索,快速找到相关历史上下文。
- 时间理解: 追踪并关联跨时间的信息。
- 记忆冲突解决: 自动检测并解决记忆中的冲突信息。
- 洞察生成: 处理现有记忆以提取模式和可操作的洞察。
- 多租户支持: 为不同用户或应用程序提供隔离的记忆空间。
- OAuth集成: 提供安全的身份验证和授权。
- 分析仪表板: 监控记忆使用情况、模式和系统健康状况(未来功能)。
安装步骤
ENGRAM服务器基于Node.js和TypeScript构建,并利用Docker Compose管理其基础设施依赖(PostgreSQL、Redis、Qdrant)。
- 克隆仓库:
git clone https://github.com/osirison/engram.git cd engram - 安装依赖: 确保您已安装Node.js 20+、Docker、Docker Compose和pnpm 8+。
pnpm install - 配置环境变量: 复制示例配置文件,并根据需要编辑。
cp .env.example .env # 可根据您的需求修改 .env 文件中的数据库凭据等 - 启动基础设施服务: 这将启动PostgreSQL数据库、Redis缓存和Qdrant向量数据库。
请等待所有服务状态显示为"healthy"(可通过 'pnpm docker:ps' 查看)。pnpm docker:up - 运行数据库迁移: 在服务就绪后,应用数据库迁移。
pnpm db:migrate - 启动开发服务器:
服务器默认监听 'http://localhost:3000' 端口。pnpm dev
服务器配置(供MCP客户端使用)
一旦ENGRAM服务器运行起来,您可以将其配置到任何兼容MCP协议的客户端中,例如Claude Desktop。以下是示例配置信息:
{ "name": "ENGRAM", "command": [ "pnpm", "exec", "node", "apps/mcp-server/dist/main.js" ], "args": [], "env": { "NODE_ENV": "production", "PORT": "3000", "DATABASE_URL": "postgresql://engram:dev_password@localhost:5432/engram", "REDIS_URL": "redis://localhost:6379", "QDRANT_URL": "http://localhost:6333", "JWT_SECRET": "your-secret-key-change-in-production-min-32-chars" }, "debug": false, "cwd": "/path/to/your/engram/repo" }
- name: MCP服务器的友好名称,客户端会显示此名称。
- command: 启动ENGRAM服务器的命令。这里使用了pnpm和Node.js来运行编译后的主文件。
- args: 传递给启动命令的额外参数,目前为空。
- env: 运行服务器所需的环境变量。请根据您的实际部署环境更新这些值,特别是:
- 'NODE_ENV': 运行环境模式('development', 'production', 'test')。
- 'PORT': 服务器监听的端口。
- 'DATABASE_URL': PostgreSQL数据库的连接字符串。
- 'REDIS_URL': Redis缓存的连接字符串。
- 'QDRANT_URL': Qdrant向量数据库的连接字符串。
- 'JWT_SECRET': 用于JWT的密钥,在生产环境必须更改为复杂且保密的值。
- debug: 是否启用调试模式。
- cwd: ENGRAM仓库的根目录路径。请务必将其替换为您的实际路径。
基本使用方法
配置完成后,重启您的MCP客户端(如Claude Desktop)。您可以尝试以下操作来测试连接和功能:
- 测试连接: 向您的LLM客户端提问:“你能调用ping工具测试ENGRAM的连接吗?”
- 服务器应返回一个包含 '{"status": "pong", "timestamp": "..."}' 的响应,表明连接成功。
- 查询可用工具: 向LLM客户端提问:“ENGRAM提供了哪些MCP工具?”
- 服务器应返回一个包含可用工具列表的响应,目前至少包括 'ping' 工具。
ENGRAM将进一步扩展其工具集,以支持更高级的记忆管理和上下文检索功能。
信息
分类
AI与计算