MCP Memory Server について
MCP Memory Serverは、会話をまたいで情報を保持するLLM向けのMCPサーバーです。ローカル保存に対応し、分類検索や利用統計を提供します。
主な機能
- 01セッションをまたぐメモリ保持
- 02メモリの分類とタグ付け
- 03自然言語によるメモリ検索
- 04メモリ利用統計
- 05ローカルファイル保存
活用シーン
- 01会話をまたいだプロジェクトメモの保持
- 02会話形式で保存情報を検索
- 03メモリの利用状況の確認
MCP 対応
メモリの保存、検索、削除、一覧表示と利用統計の取得を行うツールをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Memory Server
大規模言語モデルに永続的なメモリ機能を提供する、Model Context Protocol(MCP)サーバーです。概念、コードスニペット、メモ、その他会話をまたいでLLMに記憶させたい情報を保存できます。
機能
- 🧠 永続メモリ - 情報はLLMのセッションをまたいで保持されます
- 🏷️ スマートな整理 - メモリを分類してタグ付けし、簡単に検索できます
- 🔍 自然言語検索 - 会話形式のクエリを使ってメモリを見つけられます
- 📊 使用状況の分析 - 最も頻繁にアクセスされるメモリを追跡します
- 🔒 ローカルストレージ - すべてのデータはお使いのマシン上に保存されます
- ⚡ 高速アクセス - メモリ内インデックスにより、すばやく取得できます
- 🔧 簡単な設定 - 環境変数に基づいて設定できます
- 🛡️ スレッドセーフ - 適切なロックにより、並行アクセスに対応します
クイックスタート
前提条件
- Go 1.19以降
- Claude Desktopアプリケーション
インストール
- サーバーをクローンしてビルドします:
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 Desktopを設定します:
以下をClaude DesktopのMCP設定ファイルに追加します:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %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 Desktopを再起動します
これで、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 | ログレベル(debug、info、warn、error) | info |
MCP_LOG_FORMAT | ログ形式(json、text) | 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 インターフェイス - ブラウザベースのメモリー管理
- インポート/エクスポート - バックアップと復元機能
- メモリーの有効期限 - 古いメモリーの自動クリーンアップ
- 暗号化 - 機密情報を安全に保存
- マルチユーザー対応 - ユーザーごとに個別のメモリー領域を提供
- 高度な検索 - ブール検索とフィルター
コントリビューション
コントリビューションを歓迎します!お気軽にプルリクエストを送信してください。大きな変更の場合は、まず issue を作成し、変更内容について相談してください。
- リポジトリをフォークします
- フィーチャーブランチを作成します(
git checkout -b feature/amazing-feature) - 変更をコミットします(
git commit -m 'Add some amazing feature') - ブランチにプッシュします(
git push origin feature/amazing-feature) - プルリクエストを作成します
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については、LICENSE ファイルを参照してください。
謝辞
- Model Context Protocol 向けに構築されています
- Claude Desktop とシームレスに連携するよう設計されています
- LLM の会話に永続的なメモリーが必要であることに着想を得ています
サポート
問題が発生した場合や質問がある場合は、次の手順をお試しください。
- トラブルシューティングのセクションを確認します
- 既存の GitHub issues を検索します
- 問題の詳細を記載して、新しい issue を作成します
MCP コミュニティのために ❤️ を込めて作成
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。