使用说明
MCP内存服务器
一种模型上下文协议(MCP)服务器,为大型语言模型提供持久内存功能。存储概念、代码片段、注释以及您希望LLM在对话中记住的任何信息。
特性
- 🧠 持久存储器 -信息在LLM会话中持续存在
- 🏷️ 智能组织 -对内存进行分类和标记,以便于检索
- 🔍 自然语言搜索 -使用会话查询查找记忆
- 📊 使用情况分析 -追踪哪些记忆访问最频繁
- 🔒 本地存储 -所有数据都保留在您的机器上
- ⚡ 快速访问 -用于快速检索的内存索引
- 🔧 易于配置 -基于环境变量的配置
- 🛡️ 线程安全 -具有适当锁定的并发访问
快速开始
先决条件
- 转到1.19或更高版本
- Claude桌面应用程序
安装
- 克隆并构建服务器:
git clone https://github.com/yourusername/mcp-memory-server.git
cd mcp-memory-server
go build -o mcp-memory-server cmd/server/main.go
- 配置Claude桌面:
将以下内容添加到您的Claude Desktop MCP配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
窗户: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"memory": {
"command": "/absolute/path/to/your/mcp-memory-server",
"args": [],
"env": {
"MCP_DATA_DIR": "/Users/yourusername/.mcp-memory"
}
}
}
}
看 config.example.json 查看包含所有可用配置选项的完整示例。
- 重新启动克劳德桌面
内存服务器现在将在您的Claude对话中可用!
用法
配置后,您可以在Claude Desktop中使用这些命令:
商店信息
Remember this: The scraping project uses Go with Playwright for browser automation.
The architecture follows domain-driven design with repositories and services.
Category: project
Tags: go, scraping, web-automation
搜索记忆
What do you remember about Go web scraping?
按类别列出
Show me all my project memories
获取统计信息
What are my memory usage statistics?
可用工具
MCP服务器为Claude提供以下工具:
| 工具 | 说明 | 参数 |
|---|---|---|
remember |
存储新信息 | content (必填), summary, category, tags |
recall |
搜索存储的记忆 | query (必填), category, tags, limit |
forget |
按ID删除内存 | id (必填) |
list_memories |
列出所有带有过滤功能的记忆 | category, tags, limit |
memory_stats |
获取使用统计信息 | 无 |
配置
使用环境变量配置服务器:
存储配置
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_DATA_DIR |
存储内存文件的目录 | ~/.mcp-memory |
MCP_MAX_FILE_SIZE |
内存文件的最大大小(字节) | 104857600 (100MB) |
MCP_MAX_STORAGE_SIZE |
总存储限制(字节) | 107374182400 (100GB) |
异步行为配置
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_ENABLE_ASYNC |
启用异步保存操作 | true |
MCP_QUEUE_SIZE |
异步保存队列的大小 | 1000 |
MCP_WORKER_THREADS |
异步保存的工作线程数 | 2 |
压缩配置
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_ENABLE_COMPRESSION |
为内存文件启用gzip压缩 | true |
MCP_COMPRESSION_LEVEL |
Gzip压缩级别(1-9,其中9为最大值) | 6 |
加密配置
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_ENABLE_ENCRYPTION |
为内存文件启用AES-256-GCM加密 | false |
MCP_ENCRYPTION_KEY_PATH |
加密密钥文件的路径 | ~/.mcp-memory/encryption.key |
其他配置
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_LOG_LEVEL |
日志记录级别(调试、信息、警告、错误) | info |
MCP_LOG_FORMAT |
日志格式(json、文本) | json |
MCP_MAX_RESULTS |
返回的最大搜索结果数 | 20 |
MCP_ENABLE_EMBEDDINGS |
启用语义搜索(未来) | false |
MCP_EMBEDDING_MODEL |
OpenAI嵌入模型 | text-embedding-ada-002 |
数据存储
内存存储在您配置的数据目录中:
~/.mcp-memory/
├── memories/ # Individual memory JSON files
├── index/ # Search indexes (future enhancement)
├── logs/ # Application logs
└── encryption.key # Encryption key (if encryption is enabled)
每个存储器包括:
- 基于内容的唯一ID(SHA256哈希)
- 内容和可选摘要
- 组织的类别和标签
- 创建和更新时间戳
- 访问统计和上次访问时间
- 自定义元数据
内存文件包括:
- 使用gzip压缩(可配置)
- 使用AES-256-GCM加密(可选)
- 为确保可靠性,存储为单独的JSON文件
性能调整
服务器可以针对不同的用例进行调整:
对于高通量场景:
{
"env": {
"MCP_ENABLE_ASYNC": "true",
"MCP_QUEUE_SIZE": "5000",
"MCP_WORKER_THREADS": "4",
"MCP_COMPRESSION_LEVEL": "1"
}
}
对于低延迟场景:
{
"env": {
"MCP_ENABLE_ASYNC": "false",
"MCP_ENABLE_COMPRESSION": "false"
}
}
对于存储受限的环境:
{
"env": {
"MCP_ENABLE_COMPRESSION": "true",
"MCP_COMPRESSION_LEVEL": "9",
"MCP_MAX_STORAGE_SIZE": "1073741824"
}
}
建筑
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Claude LLM │◄──►│ MCP Protocol │◄──►│ Memory Store │
│ │ │ (JSON-RPC) │ │ (File-based) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
▼
┌──────────────────┐
│ Local Storage │
│ ~/.mcp-memory/ │
└──────────────────┘
发展
项目结构
mcp-memory-server/
├── cmd/server/ # Main application entry point
├── internal/
│ ├── config/ # Configuration management
│ ├── mcp/ # MCP protocol implementation
│ └── memory/ # Memory storage and retrieval
├── pkg/logger/ # Logging utilities
├── go.mod
└── README.md
从源头构建
# Clone the repository
git clone https://github.com/yourusername/mcp-memory-server.git
cd mcp-memory-server
# Install dependencies
go mod tidy
# Build
go build -o mcp-memory-server cmd/server/main.go
# Run tests
go test ./...
测试服务器
您可以使用JSON-RPC手动测试MCP服务器:
# List available tools
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | ./mcp-memory-server
# Store a memory
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"remember","arguments":{"content":"Test memory","category":"test"}}}' | ./mcp-memory-server
故障排除
服务器未启动:
- 验证二进制文件是否具有执行权限
- 检查数据目录是否可写
- 查看数据目录中的日志
Claude未连接到服务器:
- 确保路径
claude_desktop_config.json是绝对的 - 验证服务器二进制文件是否存在并且可执行
- 检查Claude Desktop日志中的连接错误
- 配置更改后重新启动Claude Desktop
内存不持久:
- 检查数据目录中的文件权限
- 验证
MCP_DATA_DIR环境变量设置正确 - 在服务器日志中查找错误消息
未来的增强功能
- [ ] 语义搜索 -向量嵌入以获得更好的搜索相关性
- [ ] web界面 -基于浏览器的内存管理
- [ ] 导入/导出 -备份和恢复功能
- [ ] 内存过期 -自动清除旧记忆
- [ ] 加密 -敏感信息的安全存储
- [ ] 多用户支持 -为不同用户提供单独的内存空间
- [ ] 高级搜索 -布尔查询和过滤器
贡献
欢迎投稿!请随时提交拉取请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
致谢
- 为 模型上下文协议
- 旨在与Claude Desktop无缝协作
- 受到LLM对话中持久记忆需求的启发
支持
如果您遇到任何问题或有疑问:
由以下材料制成❤️ 对于MCP社区
