MMW Managed Memory Workspace について
MMWは、個人や組織向けのMCPメモリサービスで、AIエージェントがクライアントやセッションをまたいで事実、決定事項、合意を保存・検索できます。競合、古くなった記録、出典を示してレビューを支援し、セッション同期には明示的な同意が必要です。
主な機能
- 01メモリ記録の保存と検索
- 02競合や古い記録の検出
- 03出典と事実の版を追跡
- 04出典ハッシュによる鮮度確認
- 05組織スペースと可視性の管理
活用シーン
- 01異なるクライアントのセッション間でプロジェクト情報を再利用
- 02同じ事実の競合する版を発見
- 03出典の変更でメモリが古くなったか確認
- 04組織内のメモリアクセスと引き継ぎを管理
MCP 対応
MMWはStreamable HTTP経由のリモートMCPサーバーと、MCPクライアントを接続するローカルのmmw-agentを提供します。サーバーはメモリ操作ツールを公開し、mmw-agentはセッション同期の状態確認ツールも提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.mmwhub.tech/mcpclaude mcp add --transport http msingatullin-mmw https://mcp.mmwhub.tech/mcp{"mcpServers":{"msingatullin-mmw":{"type":"http","url":"https://mcp.mmwhub.tech/mcp"}}}Cursor で開く{"servers":{"msingatullin-mmw":{"type":"http","url":"https://mcp.mmwhub.tech/mcp"}}}VS Code で開く{"mcpServers":{"msingatullin-mmw":{"type":"http","url":"https://mcp.mmwhub.tech/mcp"}}}{"mcpServers":{"msingatullin-mmw":{"serverUrl":"https://mcp.mmwhub.tech/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.mmwhub.tech/mcp認証が必要ツール
詳細
MMW(Managed Memory Workspace)— MCP 接続キット
MMW の接続ガイドとクライアント設定 — 信頼できる AI エージェントのためのメモリーです。
ユーザードキュメント:https://docs.mmwhub.tech · Русская версия:README.ru.md
MMW とは
MMW は、Model Context Protocol(MCP)のメモリーサーバーです。エージェント(Claude、Codex、Cursor、その他の MCP クライアント)が事実、決定事項、合意事項を MMW に保存し、後のセッションで再び見つけられるようにします。メモリーは特定のモデルやコンピューターに紐付けられません。
すべてのユーザーに個人用スペースがあります。企業は、部門、役割、閲覧ルール、退職時のナレッジ引き継ぎを設定した組織を作成できます。
コンポーネント:
- メモリーサーバー:
https://mcp.mmwhub.tech/mcp— Streamable HTTP による MCP、ステートレス(各リクエストは独立)、JSON レスポンス、API キー認証です。 - ローカルエージェント
mmw-agent: MCP クライアントを stdio 経由でサーバーに接続し、同意した場合に限り、Claude Code と Codex のセッション履歴をアップロードします。 - アカウント: https://app.mmwhub.tech — API キー、プロジェクト、メモリーレコード、組織、プランを管理します。
MMW が行わないこと:
- 会話を自動で読み取ることはありません。メモリーに含まれるのは、エージェントが
rememberで保存した内容と、アップロードを明示的に許可したセッションのみです。 - アップロードしたセッションの検索と、そこからの自動的な事実抽出は、まだ利用できません。 セッションは保存されますが、検索結果には表示されません。
- シークレットは保持しません。保存前に、キー、トークン、パスワードはプレースホルダーに置き換えられます。
MMW の特長
エージェントが信頼できなければ、メモリーは役に立ちません。危険なのは忘れることではなく、古くなった事実をエージェントが自信満々に回答してしまうことです。MMW はこの問題を中心に設計されています。
- 矛盾を隠さず、表面化します。 同じ
fact_keyを持ち、内容が一致しないレコードにはconflictフラグが付けられます。検索では最新のバージョンが最初に返され、古いバージョンにはsuperseded_byが付与されます。アカウントの「Needs a decision」では、各論点が「どちらが正しいか?」という簡潔な質問にまとめられ、選択肢が並べて表示されます。「Help me decide」をクリックすると、言語モデルが質問の文面を作成します。最終的に判断するのは人であり、何も黙って上書きされることはありません。 - 事実のパスポート。 すべてのレコードに、出所、日時、ソースハッシュ、同じ事実のすべてのバージョン、置き換えたレコードへのリンクが表示されます。
- ソースの紐付け。
source_idがファイルパスの場合、mmw-agentはファイル自体をハッシュ化します。ファイルが変更されると、そのファイルに由来するレコードはstaleとして返されます。 - どこでも同じメモリーを利用できます。 Claude Code、Cursor、Codex、Claude Desktop、claude.ai、ChatGPT、Telegram ボット、そして(ロシアでは)Alice が同じメモリーを共有します。アカウントでは、接続中のアプリと各アプリが最後に確認された日時を確認できます。
クイックスタート
- https://app.mmwhub.tech で登録し、メールアドレスを確認します。
- プランを選びます。Free はカード不要の3日間トライアルです。
- API キー(
mmw_で始まります)をコピーします。キーは一度しか表示されないため、パスワードマネージャーに保存してください。 - クライアントを接続(以下を参照)して再起動し、エージェントに 「MMW に記憶して:staging は systemd ユニット app-staging でデプロイされています。」 と尋ねます。新しいセッションで 「staging のデプロイ方法を MMW で検索して。」 と尋ねます。
推奨:ローカルエージェント mmw-agent(Claude Code、Claude Desktop、Cursor、Codex)
要件:Python 3.11+ と uv(uvx コマンド)。エージェントは PyPI に公開されていません。初回起動時に uvx がホイールを取得します。
https://app.mmwhub.tech/downloads/mmw-agent/mmw_agent-0.1.6-py3-none-any.whl
Claude Code
claude mcp add mmw \
-e MMW_API_KEY=mmw_your_key \
-e MMW_ENDPOINT=https://mcp.mmwhub.tech \
-- uvx --from https://app.mmwhub.tech/downloads/mmw-agent/mmw_agent-0.1.6-py3-none-any.whl mmw-agent
または、以下の mcpServers.mmw ブロックを ~/.claude.json に手動で追加してください。
Claude Desktop と Cursor — 同じ JSON ブロックを使用します。Claude Desktop では claude_desktop_config.json(設定 → 開発者 → 設定を編集)に、Cursor では ~/.cursor/mcp.json に追加します。
{
"mcpServers": {
"mmw": {
"command": "uvx",
"args": [
"--from",
"https://app.mmwhub.tech/downloads/mmw-agent/mmw_agent-0.1.6-py3-none-any.whl",
"mmw-agent"
],
"env": {
"MMW_API_KEY": "mmw_your_key",
"MMW_ENDPOINT": "https://mcp.mmwhub.tech"
}
}
}
}
Codex — ~/.codex/config.toml:
[mcp_servers.mmw]
command = "uvx"
args = ["--from", "https://app.mmwhub.tech/downloads/mmw-agent/mmw_agent-0.1.6-py3-none-any.whl", "mmw-agent"]
env = { MMW_API_KEY = "mmw_your_key", MMW_ENDPOINT = "https://mcp.mmwhub.tech" }
再起動すると、クライアントに remember、search、forget、validate_memory、gateway_call、mmw_sync_status が表示されます。
ターミナルから確認します。
MMW_API_KEY=mmw_your_key MMW_ENDPOINT=https://mcp.mmwhub.tech \
uvx --from https://app.mmwhub.tech/downloads/mmw-agent/mmw_agent-0.1.6-py3-none-any.whl mmw-agent status
エージェントのコマンド
| コマンド | 内容 |
|---|---|
mmw-agent | stdio 経由で MCP サーバーとして実行します(クライアントはこの方法で起動します)。 |
mmw-agent consent | セッション履歴のアップロードを許可します。対話型ターミナルでのみ実行でき、ユーザーが回答する必要があります。 |
mmw-agent revoke | 同意を撤回します。アップロードは直ちに停止します。 |
mmw-agent status | ローカルの同意状態と、サーバーにすでに登録されているソースの数を表示します。 |
mmw-agent hook-stop | Claude Code の Stop フックです。最後の remember の後にファイルが変更されている場合、ターンの終了を許可しません。 |
mmw-agent support CODE | アカウントの一度限りのコードを使ってサポートセッションを開始します。オペレーターには、送信に同意した診断情報のみが表示され、承認した修正が一つずつ提案されます。 |
エージェントの環境変数
| 変数 | 用途 |
|---|---|
MMW_API_KEY | アカウントの API キー(必須)。 |
MMW_ENDPOINT | サーバーアドレス。https://mcp.mmwhub.tech を設定します。 |
MMW_LANG | メッセージの言語。en または ru(デフォルトはサーバーアドレスによって異なります)。 |
MMW_AGENT_HOME | エージェントの状態ディレクトリ。デフォルトは ~/.mmw です。 |
エージェントはすべての呼び出しをサーバーに転送するため、クライアントにはサーバーの全ツールが表示されます。起動時にサーバーへ接続できない場合でも、クライアントはエラーになりません。エージェントはローカルで応答し、サーバーが復旧すると接続します。
claude.ai(ウェブ)— OAuth コネクター
- 設定 → コネクター → カスタムコネクターを追加。
- URL:
https://mcp.mmwhub.tech/mcp - MMW の認証ページで API キーを貼り付け、「許可」を選択します。Claude には独自の30日間有効なトークン(PKCE を使った OAuth)が付与されます。キーが claude.ai と共有されることはありません。
ウェブアプリではローカルエージェントが実行されないため、セッション同期は利用できません。
その他の MCP クライアント — リモート HTTP に直接接続
クライアント(VS Code やその他の MCP クライアントなど)が Streamable HTTP 経由のリモート MCP サーバーに対応している場合、エージェントを介さずに接続できます。
{
"mcpServers": {
"mmw": {
"url": "https://mcp.mmwhub.tech/mcp",
"headers": { "Authorization": "Bearer mmw_your_key" }
}
}
}
正確なキー名(url、headers)はクライアントによって異なります。クライアントの MCP ドキュメントを確認してください。セッション同期と mmw_sync_status は mmw-agent 経由でのみ利用できます。
MCP ツール
| ツール | 場所 | 説明 |
|---|---|---|
remember | サーバー | メモリーレコードを保存します。 |
search | サーバー | クエリに基づいてレコードを検索します。 |
forget | サーバー | レコード、またはソースのすべてのレコードを削除します。 |
validate_memory | サーバー | ソースのレコードを現在のハッシュと照合します。 |
gateway_call | サーバー | キーのプロジェクトに接続されたインテグレーションのツールを呼び出します。 |
mmw_sync_status | mmw-agent のみ | 読み取り専用:セッション同期への同意の有無と、最後の同期サイクルの状況を確認します。 |
プロジェクトに接続されたインテグレーション(例:github_readonly)もツールとして表示されることがありますが、そのプロジェクトのキーでのみ利用できます。
remember
| パラメーター | 説明 |
|---|---|
content | 記録するテキスト(必須)。 |
workspace | ワークスペース。デフォルトは default です。 |
scope | フィルタリング用のラベル(shared、private、…)。アクセスを制限するものではありません。組織では、アクセスは可視性によって管理されます。 |
source、source_id、source_hash、source_revision | レコードの出所です。これは来歴を示すもので、証明ではありません。新しいレコードは常に unverified です。source_hash は後で鮮度の確認に使用されます。 |
derived_from | このレコードが要約するレコードの ID です。それらのレコードの競合や古さは、要約にも表示されます。 |
fact_key | 事実キーです。同じキーを持つレコードは、競合の有無を比較されます。 |
confidence | 0~1。デフォルトは 0.5 です。 |
X-Idempotency-Key ヘッダーを使うと、再試行を安全に行えます。同じキーと同じ内容を指定すると、同じレコードが返されます。
search
| パラメーター | 説明 |
|---|---|
query | クエリテキスト。 |
workspace | ワークスペース。 |
scope | ラベルフィルター。 |
limit | 1~50。デフォルトは 10 です。 |
current_source_hash | 最新のソースハッシュです。古くなったレコードは stale になります。 |
exclude_stale | 古くなったレコードを非表示にします。 |
ソース、信頼度、ステータス(unverified、stale、conflict)、derived_from、グラフリンク(graph_relations)を含むレコードを返します。fact_key が同じ場合、最新のレコードが最初に表示され、古いバージョンには superseded_by が付きます。要約は、ソースレコードから conflict または stale を引き継ぎます。
forget
memory_id は 1 件のレコードを削除し、source_id はそのソースのすべてのレコードを削除します。削除されたレコードは検索結果やグラフリンクから除外されますが、削除の記録は監査用に保持されます。組織では、自分に見えるレコードのみ削除できます。
validate_memory
source_id と current_source_hash を指定すると、そのソースのうち、確認されたレコード数、古くなったレコード数、競合するレコード数が分かります。
gateway_call
server、tool、arguments:接続済みのインテグレーションのツールを、プロジェクトに代わって呼び出します。インテグレーションのシークレットはサーバー上に留まり、エージェントに渡されることはありません。インテグレーションは、アカウントの MCP Gateway で有効にします。
セッション同期(オプトイン、mmw-agent のみ)
- 同意: 同意がなければ、コンピューターから 1 バイトも送信されません。ターミナルで
mmw-agent consentを実行してください。エージェントは見つかったセッション数を表示し、許可を求めます。モデルやスクリプトが同意することはできません。mmw-agent revokeを実行すれば、いつでも停止できます。 - アップロードされるもの: Claude Code と Codex のユーザーメッセージ、アシスタントメッセージ、ツール呼び出し、4,000 文字までのツールの結果。
- アップロードされないもの: モデルの推論、システムプロンプト、トークンカウンター、ファイルのスナップショット、ファイルパス。
- シークレット: API キー、トークン、パスワードは、アップロード前にコンピューター上で置き換えられ、サーバー上でも再度置き換えられます。
- 信頼性: サーバーは、各ファイルについて受信したバイト数を記録します。ネットワークの切断、再起動、サーバーの復元後には、不足分をエージェントが送信します。サーバーの空き容量が一時的に不足した場合、エージェントは待機して後で再開します。
- 現時点では利用できない機能: アップロードされたセッションの検索と、そこから事実を抽出してメモリーに保存する機能。現在、セッションは圧縮して保存されますが、検索結果には表示されません。
プランごとのセッション履歴の容量(新しいセッションから順に、クリーンアップ後のテキストで計算):
| プラン | 履歴の容量 | 保存期間 |
|---|---|---|
| Free | 25 MB | 7 日間 |
| Starter | 100 MB | 30 日間 |
| Pro | 500 MB | 90 日間 |
| Enterprise および組織 | 20 GB | 全履歴 |
組織
- スペース: 1つのログインで、個人用スペース1つと任意の数の組織を利用でき、アカウント内の切り替え機能から切り替えられます。組織がデフォルトのスペースになることはありません。組織から個人用スペースを見ることはできません。
- 構造: 持株会社/法人/支社/部門/ユニット/チーム。
- ロール:
| ロール | 権限 |
|---|---|
| 管理者 | 組織構造、メンバー、招待、すべてのキー(シークレットは除く)、監査ログ、プラン。 |
| 責任者 | 自身のユニットとその下位すべてのレコード、およびその階層内のメンバーのオフボーディング。 |
| メンバー | 自身のレコード、および自身のユニット、プロジェクト、組織に公開されたレコード。 |
| コントラクター | 自身のレコードとプロジェクトのレコードのみ。アクセス期間を設定できます。 |
| 監査担当者 | レコードの内容を含まない組織の監査ログ。 |
- レコードの可視性: 作成者のみ(下書き)、ユニット(およびその下位すべて)、プロジェクト、組織全体。検索、検証、削除、グラフリンク、アカウント、アーキビストなど、すべての読み取り経路でサーバーがこのルールを適用します。現在も在籍しているメンバーの下書きは、責任者にも表示されません。
- 招待: 特定のメールアドレス宛ての一度限りのリンクで、有効期間は7日間です。メールはまだ送信されないため、管理者がリンクを共有します。
- メンバーキー: メンバーは自分のキーを発行します。管理者はキーの一覧を確認して、任意のキーを失効させることができますが、他のメンバーのキーを表示したり、ローテーションしたりすることはできません。
- オフボーディング: 管理者またはユニットの責任者が、知識の引き継ぎ先を選びます。対象者のキーは直ちに失効します。引き継ぎ先は、対象者のすべてのレコード(下書きを含む)をアカウントと自身のエージェントから確認でき、ユニットまたは組織に公開できます。
- コントラクターの契約期間: 1~365日の期間を設定します。期間終了後は、対象者は読み書きができなくなり、シート料金も発生しません。延長はログに記録されます。
- 監査ログ: オフボーディングの開始と完了、引き継がれた知識の読み取り(アカウントとMCP)、可視性の変更、アクセス期間の変更を記録します。レコードの内容は記録しません。
- 利用不可: SSO/SAML、招待メールの送信、組織の自動請求、同一持株会社内の法人間での共有、ディレクトリのインポート。
組織の有効化はMMWチームが行います。[email protected]までお問い合わせください。
プラン
| プラン | 価格 | レコード数 | 呼び出し数/分 |
|---|---|---|---|
| Free | $0、3日間のトライアル | 250 | 60 |
| Starter | $5/月 | プロジェクトあたり最大5,000件 | 120 |
| Pro | $35/月 | 最大100,000件 | 120 |
| Enterprise | $117/月(SLA、NDA) | 最大1,000,000件 | 300 |
| On-premise | お問い合わせください | 個別契約 | — |
組織: 1シートあたり月額$18、または年払いの場合は1シートあたり月額$14です。最低5シートから利用できます。退職したメンバーと契約期間が終了したコントラクターはシートを使用しません。パイロット期間は14日間で、最大10シートまでです。
上限に達すると、明確なエラーとともに書き込みが拒否されます。読み取りは引き続き利用できます。
セキュリティ
- 秘匿化: シークレット(APIキー、トークン、パスワード)は、レコードとセッションの両方で、保存前にプレースホルダーに置き換えられます。エージェントのメモリに指示を注入しようとする内容と思われるレコードは拒否されます。
- 分離: アカウント、プロジェクト、ワークスペースはそれぞれ分離されています。組織内では、上記の可視性ルールが適用されます。
- キー: キーは一度だけ表示されます。サーバーにはハッシュ(PBKDF2)と検索用インデックスのみが保存されます。失効は直ちに有効になります。
- ログ: MCP 操作ログにレコードのテキストが含まれることはありません。
- トランスポート: ステートレスな Streamable HTTP を使用します。各リクエストは個別に認証されるため、一時停止後に再接続する必要はありません。
- バックアップ: 毎晩バックアップし、圧縮して直近7世代を保持するほか、サーバー外にもコピーを保管します。コンテンツ(レコードとセッション)はEnterpriseプランおよび組織でバックアップされます。システムデータ(アカウント、支払い、キー、プロジェクト)はすべてのプランでバックアップされます。
接続キット(connect.sh、connect.ps1)
スクリプトは、クライアント設定に 直接リモート接続(url + Authorization ヘッダー)を書き込み、--verify で検証できます。mmw-agent はインストールせず、セッション同期も有効にしません。デフォルトのエンドポイント:https://mcp.mmwhub.tech/mcp
# macOS / Linux — preview first
MMW_CREDENTIAL='mmw_your_key' ./connect.sh --client cursor --dry-run
MMW_CREDENTIAL='mmw_your_key' ./connect.sh --client cursor --verify
# Windows (PowerShell)
$env:MMW_CREDENTIAL='mmw_your_key'
.\connect.ps1 -Client cursor -Verify
警告 — connect.sh の実行前にお読みください:
--clientを指定しない場合、マシン上で検出された すべてのクライアント を設定します。--client codexは~/.codex/config.toml全体を単一の[mcp_servers.mmw]ブロックで 上書き します。このファイル内のその他の Codex 設定はすべて失われます。事前にファイルをバックアップするか、Quickstart の Codex ブロックを手動で追加してください。--client claudeはさらに、(ファイルが存在し、ブロックがまだ含まれていない場合)~/.claude/CLAUDE.mdに「MMW Omnipresent Memory」指示ブロックを 追記 します。また、mmw_proxy.pyが見つかった場合は、Claude Code CLI に stdio サーバーとして登録します。- キーは
~/.config/mmw/credential(モード 600)に保存され、クライアント設定ファイルにもプレーンテキストで書き込まれます。 --uninstallは、生成されたクライアント設定ファイル(mmwのエントリだけではありません)と保存されたキーを削除します。
connect.ps1 は、選択したクライアントの設定ファイルを一から書き込みます。Codex の場合は、追加するブロックを表示するだけです。
レガシー:mmw_proxy.py
mmw_proxy.py は、ローカル SQLite スプールを備えた以前のローカル stdio プロキシです。レガシーで、現在はメンテナンスされていません。公開するのは remember、search、forget、spool_status のみで、validate_memory、gateway_call、セッション同期には対応していません。代わりに mmw-agent を使用してください。
リンク
- ウェブサイト:https://mmwhub.tech
- アカウントと API キー:https://app.mmwhub.tech
- ユーザードキュメント:https://docs.mmwhub.tech(ロシア語:https://docs.mmwhub.ru)
- MCP エンドポイント:https://mcp.mmwhub.tech/mcp
- Smithery:https://smithery.ai/servers/mmsingatullin/mmw
- サポート:[email protected]
ライセンス
MIT。詳細は LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。