MCP LangGraph 内存存储
一种与供应商无关的长期记忆层,用于人工智能代理。
这存在两个原因:
- 文件系统是深度智能体中的核心功能,因此这台服务器提供了一个受(某种理念或技术)启发的简单内存文件系统 深度智能体。
- 在您的自有基础设施中存储记忆,以便任何代理(如Cursor、Claude Code、ChatGPT等)都能共享这些记忆。
建立在LangGraph存储之上
特点/功能
- 您选择的后端Redis、PostgreSQL 或 MongoDB
- 文件系统接口像文件一样读取、写入和组织记忆
- 跨工具记忆在不同的AI代理之间共享相同的记忆
- 完全控制你的数据,你的基础设施,你的规则
快速入门
1. 安装依赖项
uv sync2. 配置环境
cp env.example .env
# Edit .env - choose your backend (redis/postgresql/mongodb)3. 启动你的后端
Redis(注:Redis是一个开源的、基于内存的数据结构存储系统,通常用作数据库、缓存和消息中间件)
docker run -d -p 6379:6379 redis:latestPostgreSQL:
docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres:latestMongoDB(注:这是一个专有名词,直接翻译为“Mongo数据库”或保持原名不译,根据上下文决定)
docker run -d -p 27017:27017 mongo:latest4. 启动服务器
对于AI客户端(stdio):
uv run src/server.py对于HTTP访问:
# Set TRANSPORT=streamable-http in .env
uv run src/server.py配置
编辑 .env:
# Backend: Choose your storage
BACKEND=redis # redis, postgresql, or mongodb
# Redis Configuration
REDIS_HOST=your-redis-host
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0
# PostgreSQL Configuration
POSTGRES_HOST=your-postgres-host
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DATABASE=langgraph_store
# MongoDB Configuration
MONGODB_URI=mongodb://your-mongodb-host:27017
MONGODB_DATABASE=langgraph_store
MONGODB_COLLECTION=memory_store
# Transport: 'stdio' for AI clients, 'streamable-http' for HTTP
TRANSPORT=stdio
# Optional: Configuration directory (default: files)
CONFIG_DIR=files内存配置
内存配置在JSON文件中定义 files/ 目录。每个JSON文件代表一个记忆类别,文件名(不含.json扩展名)即为该类别的名称。
设置:
- 这个(或“它”)
files/目录包含您的内存配置 - 每个
.json文件定义了一个类别(例如。,memories.json→ 类别“回忆”) - 在每个JSON文件中,定义单独的文件:
{
"files": [
{
"file_name": "programming-style",
"file_description": "User's programming patterns and preferences",
"read_trigger": "When programming or working on code",
"write_trigger": "When first tracking programming patterns",
"update_trigger": "When errors are corrected or new patterns emerge"
}
]
}结构:
files/
memories.json # Category: "memories"
programming-style.json # Category: "programming-style"
custom-category.json # Category: "custom-category"
*.json.example # Example files (ignored by system)配置字段:
file_name内存文件标识符file_description这段记忆存储了什么read_trigger当人工智能应该读取这段记忆时write_trigger当人工智能应该创建这个记忆时update_trigger当AI应该更新这个记忆时
注: 修改配置文件后,必须重启服务器。
AI客户端集成
Cursor 集成开发环境(IDE)
配置(JSON):
{
"mcpServers": {
"memory-store": {
"command": "uv",
"args": ["run", "src/server.py"],
"cwd": "/absolute/path/to/mcp-langgraph-store-file-system",
"env": {
"REDIS_HOST": "your-redis-host",
"REDIS_PORT": "6379",
"REDIS_PASSWORD": "",
"REDIS_DB": "0"
}
}
}
}Claude Desktop(可译为“克劳德桌面版”或根据具体语境简化为“克劳德桌面”)
配置(JSON):
{
"mcpServers": {
"memory-store": {
"command": "uv",
"args": ["run", "src/server.py"],
"cwd": "/absolute/path/to/mcp-langgraph-store-file-system",
"env": {
"REDIS_HOST": "your-redis-host",
"REDIS_PORT": "6379",
"REDIS_PASSWORD": "",
"REDIS_DB": "0"
}
}
}
}可用工具
ls(memory_category="") - 列出类别/记忆
- 空的内存类别:列出所有内存类别
- 带有 memory_category:列出该类别的记忆
read_file(memory_category, file_name) - 读取内存
- 返回内存的内容和元数据
write_file(memory_category, file_name, content) - 创建/更新内存
- 创建或覆盖内存
edit_file(memory_category, file_name, content) - 更新现有内存
- 更新现有内存(如果不存在则失败)
运输方式
stdio(默认)
对于像Claude Desktop和Cursor这样的AI客户端,服务器通过标准输入/输出进行通信。
streamable-http 可以翻译为“可流式传输的HTTP”或“支持流式传输的HTTP”,具体取决于上下文和语境,但核心意思是描述一种能够以流式方式传输数据的HTTP技术或协议
对于HTTP访问。设置 TRANSPORT=streamable-http 在 .env 并访问于 http://your-host:8000。
项目结构
src/
├── core/ # Foundational infrastructure
│ ├── settings.py # Environment configuration
│ ├── logger.py # Logging
│ └── file_config.py # Memory configuration
├── database/ # Data access layer
│ ├── redis_langgraph_client.py
│ ├── postgresql_langgraph_client.py
│ ├── mongodb_langgraph_client.py
│ └── store_factory.py
├── services/ # Business logic
│ └── file_store.py # Memory operations
└── server.py # MCP server许可证
Apache许可证2.0
