Memstate AI
公式エージェントメモリにgitライクなバージョン管理を実装。カスタムLLMが会話を構造化された事実に変換し、自動競合検出を実行。エージェントは4つの矛盾するテキストブロックではなく、意思決定の変遷を把握可能。RAG/グラフシステムと比較して80%のトークン削減。MCP + REST対応。
Memstate AI MCPで何ができますか?
- タスクの要約や決定事項を保存する — マークダウンノート、決定事項、タスク結果を
memstate_rememberで保存し、サーバーにキーパスの抽出と競合の自動検出を任せます。 - 個別の設定値を設定する —
memstate_setを使用して、特定のキーパス(例:config.port = 8080)に短い値を書き込みます。 - 作業開始前にプロジェクトメモリを参照する —
memstate_getを使用してプロジェクトまたはサブツリーのすべてのメモリを取得し、現在のコンテキストを理解します。 - 意味でメモリを検索する — 正確なキーパスがわからない場合、
memstate_searchを使用して意味的な検索を行います。 - 知識が時間とともにどのように変化したかを監査する —
memstate_historyを使用して任意のキーパスの完全なバージョンチェーンを表示し、何がいつ変更されたかを確認します。 - 古くなったメモリを安全に削除する —
memstate_deleteまたはmemstate_delete_projectを使用してキーパスまたはプロジェクト全体をソフトデリートし、完全な履歴を保持します。
ドキュメント
Memstate AI - MCP
AIエージェントのためのバージョン管理されたメモリ。 事実を保存し、矛盾を検出し、意思決定が時間とともにどう変化したかを追跡 — ホスト型MCPサーバーとして提供。
なぜMemstateか?
| RAG(他の多くのメモリシステム) | Memstate AI | |
|---|---|---|
| 会話あたりのトークン使用量 | ~7,500 | ~1,500 |
| エージェントの可視性 | ブラックボックス | 完全な透明性 |
| メモリのバージョン管理 | なし | 完全な履歴 |
| メモリ規模に応じたトークン増加 | O(n) | O(1) |
| 必要なインフラ | あり | なし — ホスト型SaaS |
他のメモリシステムはすべてをコンテキストウィンドウに詰め込み、うまくいくことを期待します。Memstateはエージェントに構造化されバージョン管理された知識ベースを提供し、正確にナビゲートします — 必要なものだけをロードし、何が変わったかを把握し、事実が矛盾するタイミングを知ることができます。
ベンチマーク
エージェントメモリにとって実際に重要なことをテストするオープンソースのベンチマークスイートを構築しました:システムは事実を保存し、セッションをまたいで正確に想起し、変更時の矛盾を検出し、プロジェクトの進化に合わせてコンテキストを維持できるか。
直接対決: Memstate AI vs Mem0
両システムは同一条件下で、同じエージェント(Claude Sonnet 4.6、温度0)、同じシナリオ、同じ評価基準を用いてテストされました。
| 指標 | Memstate AI | Mem0 | 勝者 |
|---|---|---|---|
| 総合スコア | 69.1 | 15.4 | Memstate |
| 正確性(事実の想起) | 74.1 | 12.6 | Memstate |
| 矛盾検出 | 85.5 | 19.0 | Memstate |
| コンテキスト継続性 | 63.7 | 10.1 | Memstate |
| トークン効率 | 22.3 | 30.6 | Mem0 |
評価の重み付け: 正確性 40%、矛盾検出 25%、コンテキスト継続性 25%、トークン効率 10%。
シナリオ別内訳
ベンチマークは、マルチセッションのエージェントワークフローをシミュレートする5つの実世界シナリオを実行します:
| シナリオ | Memstate AI | Mem0 |
|---|---|---|
| Webアプリアーキテクチャの進化 | 43.2 | 55.6 |
| 認証システムの移行 | 66.2 | 10.2 |
| データベーススキーマの進化 | 72.7 | 7.0 |
| APIバージョン管理の矛盾 | 86.5 | 0.9 |
| チームの意思決定撤回 | 77.2 | 3.3 |
Mem0は最初のシナリオ(シンプルなアーキテクチャ追跡)で勝利しましたが、矛盾処理、クロスセッションコンテキスト、意思決定撤回の追跡を必要とするシナリオでは大きく苦戦し、5つのシナリオ中3つでほぼゼロに近いスコアとなりました。
Memstateが勝つ理由
ベンチマークは根本的なアーキテクチャの違いを明らかにします:
Mem0は埋め込みベースのセマンティック検索を使用。 事実はチャンク化され、埋め込まれ、類似性によって取得されます。これは単純な検索には有効ですが、以下の場合に破綻します:
- 事実が以前の事実と矛盾する場合(システムは現在のものと古いものを区別できない)
- 正確な想起が必要な場合(埋め込みは「類似した」結果を返し、正確なものではない)
- 書き込みから読み取りまでのレイテンシが重要な場合(新しいメモリが検索可能になるまでに数秒かかる)
Memstateは構造化されバージョン管理されたキーバリューストレージを使用。 すべての事実は明示的なキーパスに存在し、完全なバージョン履歴を持ちます。これにより:
- 矛盾検出が組み込まれている — 新しい事実が古いものと矛盾する場合、システムはそれを認識し、両方のバージョンを保持します
- 想起は決定論的 — 保存されたものとまったく同じものが返され、近似一致ではありません
- クロスセッションの継続性が信頼できる — エージェントは、セマンティック検索が適切なコンテキストを表示することを期待するのではなく、構造化されたツリーをナビゲートします
- トークンコストはO(1)を維持 — エージェントは最初にサマリーをロードし、必要な場合にのみ詳細に掘り下げます。潜在的にすべての関連埋め込みをコンテキストウィンドウにダンプする代わりに。
公平性に関する注意
- 両システムは同じエージェントモデル、温度、評価基準を使用しました
- Mem0には、非同期埋め込みパイプラインを考慮して、書き込みと読み取りの間に10秒の取り込み遅延が与えられました
- Mem0のトークン効率スコアは高いですが、この指標は文脈で読む必要があります — トークン使用量が少ないことは、単に返される情報が少ないことを反映している可能性があります。不完全または不正確な事実を取得するシステムは、応答あたりのトークン数は少なくなりますが、同じ回答に到達するためにより多くのフォローアップコールが必要になり、最終的により多くのトークンを消費する可能性があります
- ベンチマークのソースコードは、完全な再現性のためにこのリポジトリに含まれています
- Mem0は、カスタム設定や異なる埋め込みモデルで異なるパフォーマンスを示す可能性があります
クイックスタート
memstate.ai/dashboardでAPIキーを取得し、MCPクライアント設定に追加してください:
{
"mcpServers": {
"memstate": {
"command": "npx",
"args": ["-y", "@memstate/mcp"],
"env": {
"MEMSTATE_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
Docker不要。データベース不要。インフラ不要。60秒で実行開始。
クライアント設定
Claude Desktop
設定場所:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"memstate": {
"command": "npx",
"args": ["-y", "@memstate/mcp"],
"env": { "MEMSTATE_API_KEY": "YOUR_API_KEY_HERE" }
}
}
}
Claude Code
claude mcp add memstate npx @memstate/mcp -e MEMSTATE_API_KEY=YOUR_API_KEY_HERE
Cursor
Cursor設定 → MCP → サーバーを追加 — 上記のClaude Desktopと同じJSON形式です。
Cline / Windsurf / Kilo Code / Roo Code
すべて同じstdio MCP設定形式をサポートしています。クライアントのMCP設定ファイルに追加してください。
コアツール
| ツール | 使用するタイミング |
|---|---|
memstate_remember | マークダウン、タスクサマリー、意思決定を保存。サーバーがキーパスを自動抽出し、矛盾を検出します。ほとんどの書き込みに使用。 |
memstate_set | 単一のキーパスに短い値を設定(例: config.port = 8080)。散文には使用しません。 |
memstate_get | プロジェクトまたはサブツリーのすべてのメモリを参照。すべてのタスクの開始時に使用。 |
memstate_search | 正確なキーパスがわからない場合の意味によるセマンティック検索。 |
memstate_history | 知識が時間とともにどのように変化したかを確認 — 完全なバージョンチェーン。 |
memstate_delete | キーパスをソフトデリート。トゥームストーンを作成し、完全な履歴は保持されます。 |
memstate_delete_project | プロジェクト全体とそのすべてのメモリをソフトデリート。 |
キーパスの仕組み
メモリは階層的なドット表記で整理されます:
project.my_app.database.schema
project.my_app.auth.provider
project.my_app.deploy.environment
キーパスは自動的にプレフィックスが付与されます: keypath="database" with project_id="my_app" → project.my_app.database。エージェントは必要なものに正確に掘り下げることができます — 全コンテキストのダンプは不要です。
仕組み
Agent: memstate_remember(project_id="my_app", content="## Auth\nUsing SuperTokens...")
↓
Server extracts keypaths: [project.my_app.auth.provider, ...]
↓
Conflict detection: compare against existing memories at those keypaths
↓
New version stored — old version preserved in history chain
↓
Next session: memstate_get(project_id="my_app") → structured summaries only
↓
Agent drills into project.my_app.auth only when it needs auth details
トークンコストは、存在するメモリの総数に関係なく一定に保たれます。
エージェント指示に追加
AGENTS.mdまたはシステムプロンプトにコピーしてください:
## Memory (Memstate MCP)
### Before each task
- memstate_get(project_id="my_project") — browse existing knowledge
- memstate_search(query="topic", project_id="my_project") — find by meaning
### After each task
- memstate_remember(project_id="my_project", content="## Summary\n- ...", source="agent")
### Tool guide
- memstate_remember — markdown summaries, decisions, task results (preferred)
- memstate_set — single short values only (config flags, status)
- memstate_get — browse/retrieve before tasks
- memstate_search — semantic lookup when keypath unknown
- memstate_history — audit how knowledge evolved
- memstate_delete — remove outdated memories (history preserved)
環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
MEMSTATE_API_KEY | (必須) | memstate.ai/dashboardからのAPIキー |
MEMSTATE_MCP_URL | https://mcp.memstate.ai | セルフホストデプロイメント用のオーバーライド |
接続の確認
MEMSTATE_API_KEY=your_key npx @memstate/mcp --test
利用可能なすべてのツールを表示し、APIキーが機能することを確認します。
自分が何を知っているかを知るに値するAIエージェントのために構築されました。