LLM持久记忆服务器

MCP Memory Server是一个为大型语言模型提供持久记忆能力的服务,支持跨会话存储和检索概念、代码片段、笔记等信息。

  • by jvreagan
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 jvreagan/mcp-memory-server

使用说明

MCP内存服务器

一种模型上下文协议(MCP)服务器,为大型语言模型提供持久内存功能。存储概念、代码片段、注释以及您希望LLM在对话中记住的任何信息。

特性

  • 🧠 持久存储器 -信息在LLM会话中持续存在
  • 🏷️ 智能组织 -对内存进行分类和标记,以便于检索
  • 🔍 自然语言搜索 -使用会话查询查找记忆
  • 📊 使用情况分析 -追踪哪些记忆访问最频繁
  • 🔒 本地存储 -所有数据都保留在您的机器上
  • ⚡ 快速访问 -用于快速检索的内存索引
  • 🔧 易于配置 -基于环境变量的配置
  • 🛡️ 线程安全 -具有适当锁定的并发访问

快速开始

先决条件

  • 转到1.19或更高版本
  • Claude桌面应用程序

安装

  1. 克隆并构建服务器:
git clone https://github.com/yourusername/mcp-memory-server.git
cd mcp-memory-server
go build -o mcp-memory-server cmd/server/main.go
  1. 配置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 查看包含所有可用配置选项的完整示例。

  1. 重新启动克劳德桌面

内存服务器现在将在您的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界面 -基于浏览器的内存管理
  • [ ] 导入/导出 -备份和恢复功能
  • [ ] 内存过期 -自动清除旧记忆
  • [ ] 加密 -敏感信息的安全存储
  • [ ] 多用户支持 -为不同用户提供单独的内存空间
  • [ ] 高级搜索 -布尔查询和过滤器

贡献

欢迎投稿!请随时提交拉取请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

致谢

  • 为 模型上下文协议
  • 旨在与Claude Desktop无缝协作
  • 受到LLM对话中持久记忆需求的启发

支持

如果您遇到任何问题或有疑问:

  1. 检查 故障排除部分
  2. 搜索现有 GitHub问题
  3. 使用有关您问题的详细信息创建新问题

由以下材料制成❤️ 对于MCP社区