使用说明
内存服务器-用于持久内存管理的MCP服务器
基于TypeScript的模型上下文协议(MCP)服务器,使用SQLite数据库提供持久内存管理。该服务器公开MCP工具和RESTful API端点,用于存储和检索带有元数据的会话上下文。
特性
- SQLite数据库集成:具有自动模式创建和索引功能的持久存储
- MCP协议合规性:完全支持MCP工具注册和执行
- RESTful API:用于程序化访问的HTTP端点
- TypeScript:完全类型安全和现代异步/等待模式
- 日志记录:具有可配置级别的全面日志记录
- 错误处理:强大的错误处理和输入验证
- 数据库连接池:优化了数据库性能
- 模块化架构:明确区分关注点
数据库模式
服务器会自动创建具有以下模式的SQLite数据库:
CREATE TABLE memory (
id INTEGER PRIMARY KEY AUTOINCREMENT,
content TEXT NOT NULL,
timestamp TEXT NOT NULL,
session_id TEXT NOT NULL,
content_hash TEXT NOT NULL UNIQUE,
metadata TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- Indexes for performance optimization
CREATE INDEX idx_session_id ON memory(session_id);
CREATE INDEX idx_timestamp ON memory(timestamp);
CREATE INDEX idx_content_hash ON memory(content_hash);
CREATE INDEX idx_created_at ON memory(created_at);
安装
- 克隆或创建项目目录
- 安装依赖项:
npm install
- 构建TypeScript代码:
npm run build
用法
MCP模式(标准传输)
要使用stdio传输作为MCP服务器运行:
npm start -- --mcp
# or
MCP_MODE=true npm start
HTTP服务器模式
要作为独立的HTTP服务器运行,请执行以下操作:
npm start
服务器将于启动 http://localhost:3000 默认情况下。
环境变量
PORT:HTTP服务器端口(默认值:3000)HOST:HTTP服务器主机(默认:localhost)DB_PATH:SQLite数据库文件路径(默认:./data/memory.db)DB_MAX_CONNECTIONS:最大数据库连接数(默认值:10)LOG_LEVEL:日志记录级别(调试、信息、警告、错误)(默认值:信息)CORS_ORIGIN:逗号分隔的允许CORS源列表MCP_MODE:设置为“true”以在MCP模式下运行NODE_ENV:环境(开发、生产)
MCP工具
服务器提供以下MCP工具:
save_memory
使用元数据将内容保存到内存中。
参数:
content(string,必填):要保存的内容session_id(字符串,必填):用于分组的会话标识符metadata(对象,可选):其他元数据
例子:
{
"content": "User prefers dark mode and uses TypeScript",
"session_id": "user-123-session-1",
"metadata": {
"category": "preferences",
"importance": "high"
}
}
read_memory
使用可选筛选检索存储的内存。
参数:
session_id(字符串,可选):按会话ID筛选start_date(字符串,可选):从日期筛选(ISO格式)end_date(字符串,可选):过滤到日期(ISO格式)limit(数字,可选):要返回的最大记录数(1-1000)offset(数字,可选):分页时要跳过的记录
get_memory_count
获取内存记录的总数。
参数:
session_id(字符串,可选):特定会话的计数
删除记忆
删除特定的内存记录。
参数:
id(number,必填):要删除的内存记录的ID
REST API端点
POST/api/内存/保存
保存新的内存记录。
请求正文:
{
"content": "Content to save",
"session_id": "session-identifier",
"metadata": {
"key": "value"
}
}
GET/api/内存/读取
使用可选查询参数读取内存记录:
session_id:按会话筛选start_date:从日期筛选end_date:过滤到日期limit:最大记录数offset:分页偏移
GET/api/内存/计数
使用可选功能获取内存计数 session_id 查询参数。
DELETE/api/内存/:id
按ID删除特定内存记录。
GET/api/内存/健康
健康检查端点。
MCP服务器配置
要将此服务器与MCP客户端一起使用,请将其添加到MCP设置中:
{
"mcpServers": {
"memory-server": {
"command": "node",
"args": ["path/to/memory-server/build/index.js", "--mcp"],
"env": {
"DB_PATH": "path/to/memory.db",
"LOG_LEVEL": "info"
}
}
}
}
发展
脚本
npm run build:将TypeScript编译为JavaScriptnpm run dev:观看模式用于开发npm start:启动服务器
项目结构
memory-server/
├── src/
│ ├── index.ts # Main server entry point
│ ├── database.ts # SQLite database operations
│ ├── api.ts # REST API routes
│ ├── mcp-tools.ts # MCP tool handlers
│ ├── logger.ts # Logging utility
│ └── types.ts # TypeScript interfaces
├── build/ # Compiled JavaScript (generated)
├── data/ # Database files (generated)
├── package.json
├── tsconfig.json
└── README.md
错误处理
服务器包括全面的错误处理:
- 所有端点和工具的输入验证
- 数据库连接错误处理
- SIGTERM/SIGINT上的优雅关机
- 详细的错误记录
- 正确的HTTP状态代码
性能优化
- 频繁查询列上的数据库索引
- 数据库操作的连接池
- 高效的查询模式
- 内容哈希以防止重复
- 可配置的限制和分页
安全考虑
- 输入验证和净化
- CORS配置
- 内容哈希验证
- 通过参数化查询防止SQL注入
- 生产中的错误消息清理
许可证
MIT许可证