mcpField
M
Marrow

Marrow

ローカル
marrow.worksメモリ・ナレッジ311 週間前に更新

Marrow について

Marrowは、プロジェクト横断の検索、チーム連携、ファイルの占有宣言に対応する、コーディングエージェント向けの共有メモリシステムです。MCP経由で複数のエージェントツールから記憶を利用でき、ローカル保存、セマンティック検索、可視化、任意のデバイス間同期を備えます。

主な機能

  1. 01関連度順の記憶検索と関連項目の取得
  2. 02プロジェクト間での記憶共有
  3. 03ルームでのエージェント連携と引き継ぎ
  4. 04ファイル占有による編集競合の抑制
  5. 05追記専用のハッシュチェーン操作記録
  6. 06ダッシュボードでの記憶閲覧と編集

活用シーン

  1. 01複数のコーディングエージェントでプロジェクト知識を共有
  2. 02別プロジェクトの設計判断を検索
  3. 03並行作業を調整しファイル競合を回避
  4. 04選択したプロジェクトの記憶をデバイス間で同期

MCP 対応

MCPサーバーはClaude Code、Cursor、Codexなどのクライアントに、共有メモリの読み書きツールを提供します。デバイス間で共有するプロジェクトでは、MCP経由の記憶操作がリモートストアに接続します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbmarrow-mcp.mcpb0.8.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Marrow と Spinal Cloud

marrow

Claude の記憶が尽きたあとも働き続けるメモリー — プロジェクト、マシン、ツール間で共有できます。

Release License Website Built with Rust Stars

MCP Claude Code Cursor Codex

Claude のメモリーは 25KB で止まります。こちらは止まりません。

Claude Code に組み込まれたメモリーは、毎回のセッションで、1 ファイルの先頭 200 行を読み込みます。 プロジェクトが新しいうちは問題ありません。しかし、2 年目のコードベースには 200 行では収まらないほどの情報が蓄積されており、範囲を超えた内容は単純に切り捨てられます。

Marrow は読み込むのではなく、検索して取得します。質問すると、何千件あっても、その質問への答えとなるメモリーを 20 件と、それらに関連付けられたメモリーを返します。

プロジェクトの情報が 1,000 件ある場合、1 ターンあたりのコンテキストは 2.1 倍少なく(p = 0.002)、タスクあたりのコストは $0.90 ではなく $0.50 です。 数値と方法はこちら。

また、組み込みメモリーにはない、次の 3 つの機能もあります。

  • プロジェクトをまたいで、ひとつの脳を共有。 組み込みメモリーはリポジトリごとです。Marrow の hive を使えば、api のエージェントが webapp の知識を思い出せます。
  • マシンやチームメイトをまたいで、ひとつの脳を共有。 組み込みメモリーは明示的にマシン内だけで使われます。Marrow は、自分で運用するリレー、または Spinal Cloud を通じて同期できます。
  • ツールをまたいで、ひとつの脳を共有。 Claude Code、Cursor、Codex は MCP を通じて、同じメモリーを読み書きします。

さらに、複数のエージェントがメモリーを共有するため、互いの作業が衝突しないようにします。別のライブセッションが編集中のファイルは確保され、すべてのエージェントの操作は、読み取り可能な追記専用のハッシュチェーン付き記録に保存されます。

永久に無料、AGPL-3.0、マシン上で動作します。すべてのメモリーは、開いて削除できる Markdown ファイルです。

実際に役立つのでしょうか?測定しました

プロジェクトの情報が10件から1,000件に増えても、Marrowでは1ターンあたりのコンテキスト量は一定ですが、CLAUDE.mdでは1ターンあたり20,962トークンから51,141トークンに増加します

エージェントにプロジェクトの仕組みを伝える一般的な方法は、すべてを CLAUDE.md に書き込むことです。エージェントは毎回のターンでそのファイルを読み込みます。情報が10件なら問題ありません。しかし、数年前からあるコードベースには、1,000件もの情報があります。

コーディングエージェントに同じタスクと同じリポジトリを使って、何も与えない場合、すべてを CLAUDE.md に記載する場合、同じ情報をMarrowに記録する場合の3通りで試しました。75回実行しました。

  • プロジェクトの情報が増えるほど、CLAUDE.md のコストも増えます。 情報が10件の場合、1ターンあたり21kトークン、1,000件では51kトークンです。Marrowは一定で、24.1k、23.7k、24.3kです。情報が1,000件の場合、コンテキスト量は2.1倍少なく(p = 0.002)、タスクあたりのコストは$0.90ではなく$0.50です。
  • 情報が約100件に満たない場合は、ファイルに書くだけで十分です。 このケースではMarrowは劣り、0.87倍で、ターン数も増えます。どこでも優れているかのように見せるより、正直にお伝えします。
  • プロジェクトの記憶がないエージェントは、問題を起こしました。 データベーステーブルをでっち上げ、IDがソート可能であるべき箇所に uuid4 を使い、単純なタイムスタンプを書きました。情報を与えた2つのグループは、どちらもこれらを正しく処理しました。

手法:毎回同じフィクスチャリポジトリとプロンプトを使い、コードを読むのではなく実行して評価しました。各条件につき6回の実行で、ブートストラップ区間と置換検定を用いました。数値の詳細はmarrow.worksをご覧ください。

Claude Codeの組み込みメモリはどうでしょうか?

当然の質問です。正直に言えば、小規模なプロジェクトではこれが不要な場合もあります。

Claude Codeには自動メモリ機能があり、Claudeが ~/.claude/projects/<project>/memory/ にメモを書き込み、MEMORY.md のインデックスが各セッションで読み込まれます。既定で有効になっており、コストもかかりません。これを使って、次のような問題が出てくるまではそのまま使い続けてください。

組み込みの自動メモリMarrow
メモリがモデルに届く方法1つのインデックスファイルの先頭200行/25KBが、毎回のセッションで読み込まれます関連度順の検索結果と、そこからリンクされている情報が読み込まれます
上限を超えた場合Claudeに項目を削除するよう指示されます何も起きません。検索範囲が広がるだけです
対象範囲1つのリポジトリマシン上のすべてのプロジェクト
複数のマシン間での共有いいえ — 「ファイルはマシン間で共有されません」はい。自分で実行するリレーまたはSpinal Cloudを介します
ツール間での共有Claude CodeのみClaude Code、Cursor、Codex、任意のMCPクライアント
チームメイトとの共有いいえはい
エージェントの作業記録いいえ追記専用で、ハッシュチェーンにより監査可能です
コードより古くなったメモリの検出いいえはい。アンカー付きRustシンボルが対象です

目安としては、情報が100件未満で、リポジトリが1つ、マシンが1台、ツールが1つなら、組み込み機能を使ってください。 それを超えるとMarrowの導入効果が出始めます。私たち自身のベンチマークでも、そのことが明確に示されています(情報が10件の場合は劣ります)。

この2つは併用できます。自動メモリはClaude専用のスクラッチパッドで、Marrowは共有される記録です。

始める

Claude Codeの場合は、コマンドを1つ実行します。

/plugin marketplace add aryawidjaja/marrow
/plugin install marrow@marrow

続いて、Marrowが使用するバイナリをインストールし(brew install aryawidjaja/marrow/marrow、またはWindowsの場合は irm marrow.works/install.ps1 | iex)、再起動します。

それ以外 — Cursor、Codex、Claude Desktop、またはプラグインを使いたくない場合:

brew install aryawidjaja/marrow/marrow    # macOS/Linux; Windows: irm marrow.works/install.ps1 | iex
marrow setup                              # add --global to wire every repo at once

marrow setup は、リポジトリについて独自に把握できる情報を使ってメモリを初期設定し、最初のセッションが空にならないようにします。また、まだ不足している情報も報告します。その後、エージェントを再起動してください。フックには jq が必要ですが、Marrowが利用できない場合でも作業を妨げることはありません。すでにセッション中ですか?**/marrow-save**を実行すると、次に引き継ぐ価値のある情報を保存できます。

気が変わりましたか?marrow uninstall を実行すると、メモリを保持したまま元に戻せます。ターミナルを使わないClaude Desktop用バンドルを含む、その他のインストール方法は下の方をご覧ください。

メモリは、プロジェクト内の .marrow/ に保存されます。

脳を見てみましょう

Marrowはブラックボックスではありません。第二の脳のように、探索できるグラフです。

marrow-serve          # opens the dashboard at http://localhost:8088

各メモリーはニューロンであり、属するエリアごとにまとめられているため、グラフは毛玉のように絡まらず、実際の構造を持ちます。リンクは、トピック、タグ、または関連する意味(埋め込みによる)を共有するメモリーをつなぎます。ツリーを閲覧し、ドラッグやズームを行い、クリックして内容を読み、フィルタリングし、その場でメモリーを追加、編集、削除できます。Hiveタブには、すべてのプロジェクトが一度に表示されます。

メモリーは山積みではなく、整理されています

各メモリーは、プロジェクト内のエリアに保存されます。auth、billing、infraなどです。エージェントは書き込むときに分類するため、脳には、平らな山ではなく、たどれる形があります。

project  →  area  →  topic  →  versions
marrow areas          # the map: auth 11 · billing 10 · infra 23 · monitoring 10

セッションが始まると、エージェントは同じマップを確認するため、応答する前にプロジェクトが把握していることを知っています。また、ほかのエリアを隠さずに、特定のエリアを優先して想起することもできます。

marrow add --kind decision --topic jwt-expiry --area auth "We use 15-minute JWTs."

無理に分類する必要はありません。どのエリアにも当てはまらないメモリーは未分類のままですが、すべて検索できます。間違ったエリアに分類するより、未分類のほうが適切です。

プロジェクト間で脳を共有する

デフォルトでは、各プロジェクトに専用の脳があります。コマンドを1つ実行して、任意のプロジェクトをマシン全体で使えるハイブに加えると、エージェントはすべてのプロジェクトをまたいで情報を想起できます。

cd ~/code/webapp && marrow hub register --name webapp
cd ~/code/api    && marrow hub register --name api

marrow hub recall "how do we do auth"   # searches every project, tagged by project

これで、apiで作業するエージェントがwebappの知識を尋ねられます。ダッシュボードのHiveタブには、中央にコアニューロン(あなた)が表示され、各プロジェクトがその周りを回り、アイデアを共有しているプロジェクト同士が橋渡しされます。

エージェントが会話できる部屋を用意する

プロジェクトがハイブに加わると、そのエージェントは名前付きの部屋を開き、互いに質問や返信をしたり、1つの巨大なチャットに頼らずに作業を引き継いだりできます。同じマシン上のClaude Code、Codex、Cursor、その他のMCPエージェントも、同じチャネルを使えます。

エージェントは起動時と、別のセッションが所有している可能性のある作業に取りかかる前に、受信トレイを確認します。ダッシュボードのChannelタブでは、すべての部屋を読めるため、調整の様子が見えないところで進むことはありません。

デバイス間で脳を共有する(ベータ版)

各プロジェクトは、デフォルトでローカルかつプライベートです。同期したい1つのプロジェクトだけを共有し、ほかのプロジェクトはマシン上に残せます。ディスク全体ではなく、リポジトリを共有するようなものです。

# once, on a server (Docker, Fly.io, any host; see deploy/)
MARROW_TOKEN=$(openssl rand -hex 16) marrow-server

# then in the project you want shared, on each machine
MARROW_TOKEN=<the-token> marrow share --gateway https://your-gateway --space team-app

2台のマシンで同じゲートウェイ、スペース、トークンを使うと、それぞれのMCPメモリーツールは1つのリモートプロジェクトストアに接続されます。ノートPCのエージェントを通じて保存した決定事項を、デスクトップのエージェントから利用できます。それ以外のプロジェクトには影響しません。現在、基盤ではベアラートークンを1つ使用します。HTTPS経由で管理下のインフラストラクチャ上で実行し、データボリュームをバックアップしてください。

marrow status     # shows whether this project is shared or local
marrow unshare    # back to local, nothing is deleted

エージェントには、どのモードで動作しているかが伝えられます。共有設定はダッシュボードのManage Projectsパネルから行えます。ローカルダッシュボードでは引き続きローカルのプロジェクトストアを可視化します。共有メモリーの読み書きは、エージェントのMCPツールを通じて行われます。対象範囲とデプロイの詳しいガイダンスについては、deploy/README.mdをご覧ください。コードアンカーと鮮度チェックにはソースツリーが必要なため、ローカルのみで利用できます。

ほかのインストール方法

ビルド済みバイナリを使用する方法。Rustは不要です。

curl -fsSL marrow.works/install.sh | sh

ソースからインストールする方法。

cargo install --git https://github.com/aryawidjaja/marrow marrow-cli marrow-mcp marrow-web marrow-server

これにより、marrow、marrow-mcp、marrow-serve、デバイス間で使うmarrow-serverがPATHに追加されます。

Windows
irm marrow.works/install.ps1 | iex

または、Scoopを使います。

scoop install https://github.com/aryawidjaja/marrow/releases/latest/download/marrow.json

どちらの方法でも、管理者権限やRustなしで、marrow、marrow-mcp、marrow-serve、marrow-serverを利用できます。セマンティック検索も組み込み済みです。

Claude Desktopで使いたいだけですか? Releasesからmarrow-mcp.mcpbをダウンロードして、ダブルクリックしてください。ターミナルは一切不要です。記憶させるプロジェクトを尋ねられ、それだけでセットアップが完了します。

セッションをウォームスタートし、2つのエージェントが同じファイルを編集するのを防ぐフックはシェルスクリプトのため、Git for Windowsとjqが必要です。どちらかが不足している場合は、インストーラーが通知します。

winget install Git.Git jqlang.jq

これらがなくてもメモリーは機能しますが、自動調整は無効になります。WSL2をお使いですか?その中でLinux向けの方法でインストールすれば、Linuxとまったく同じように動作します。

既存のプロジェクトを取り込む

新しい脳は空の状態から始まります。すでにあるドキュメントをもとに種をまくには、最初のウォームスタートでエージェントに marrow ingest を実行するよう促します。README と docs/ を一覧表示し、内容を整理してメモリに取り込みます。その後のセッションでは、これらのメモリを利用できる状態で始められます。いつでも /marrow-save を実行して、引き継ぐ価値のある決定や発見を保存できます。

Cursor、Codex、その他の MCP エージェントを使う

自動フックは Claude Code 専用ですが、どの MCP エージェントでもメモリツール一式を利用できます。Claude Code の各プロジェクトにサーバーを登録します。

claude mcp add marrow -s user -- marrow-mcp --root .

1 つのプロジェクトに対しては、同じサーバーを .mcp.json(Claude Code)、.cursor/mcp.json(Cursor)、または Codex の TOML に追加します。

セマンティック検索

ローカル埋め込みモデルが含まれるビルド(marrow-semantic フォーミュラ、Windows 版、install.sh のビルド)では、デフォルトで意味ベースの想起が使われるため、「JWT」に関するメモを「ログインのセキュリティ」で検索して見つけられます。通常の marrow フォーミュラはキーワード検索のみで、サイズも小さくなっています。

brew install aryawidjaja/marrow/marrow-semantic   # multilingual, downloads a small model on first use

marrow status でモードを確認できます。marrow embed none で無効にし、marrow embed fastembed で有効にします。セマンティック検索は、ダッシュボードのグラフにある「関連する意味」のリンクにも使われます。

CLI

エージェントが Marrow を操作しますが、自分で操作することもできます。

marrow add --kind decision --topic auth "We use short-lived JWTs."   # save
marrow search "token expiry" --weight 1                              # find (0=keyword, 1=semantic)
marrow hub recall "rate limiting"                                    # search the whole hive
marrow list-stale --repo .                                           # notes whose code drifted
marrow consolidate --repo . --apply                                  # merge duplicates
marrow audit                                                         # prove the ledger untampered

marrow add は .marrow/memory/ の下に通常の Markdown ファイルを作成します。YAML フロントマターはメタデータで、その下のテキストがメモリです。SQLite インデックスは、これらのファイルから再構築できるキャッシュです。

古い情報も忘れません

増え続けるだけのメモリで気になるのは、4 か月前の優れたアイデアが埋もれてしまうのではないか、ということです。それを防ぐ仕組みが 2 つあります。

想起ではリンクをたどります。 質問すると、Marrow は質問の言葉に一致する情報だけを返すわけではありません。一致した情報を起点にグラフを数リンクずつたどり、進むごとに関連度を弱めていきます。そのため、語彙がまったく一致しないメモでも、一致するメモの先にあれば見つかります。古い決定も隣接するメモを通じてたどり着けます。それがリンクの役割です。

そして、脳は使われる情報を強化します。 想起のたびに記録が残ります。エージェントが何度も参照するメモリには、再びたどり着きやすくなります。誰にも参照されていないメモリは、そのままの場所に留まります。何度も思い出せば、すぐに思い出せるようになります。

決定が変わった場合、エージェントは別の有効なバージョンを追記するのではなく、古いメモリを新しいメモリで置き換えます。Marrow はその系譜を保存するため、履歴を失わずに現在の答えを明確に保てます。

内部の仕組み

  • Rust の古さ検出:メモリでは Rust のシンボルを参照できます。Marrow はそのフィンガープリントを作成し、書式の変更やサポート対象の移動を許容しながら、シンボルが変更されるとメモにフラグを付けます。
  • 統合:真の重複(ほぼ同一の言い換え、または互いが相手にとって最も近い一致であるペア)を見つけて、系譜を保持したまま統合します。単に似ているだけのメモは統合しません。
  • 連想的な想起:質問に対し、一致したメモに加えて、それらに関連するメモも返します。一致したメモからリンク、共通のトピック、関連する意味をたどって見つけます。
  • 群知能:セッションは準備完了状態で参加し、ベストエフォートでファイルの占有情報を公開し、ライブのアクティビティ履歴を読み取ります。Claude Code のフックは検出したローカルの競合をブロックできますが、前提条件が利用できないときに作業を妨げるリスクを避けるため、意図的にブロックせず処理を続行します。
  • 監査と来歴:すべての書き込み、編集、想起は、追記専用のハッシュチェーン台帳に記録されます。あらゆる回答の情報源をたどることができます。署名を有効にして marrow audit を実行すると、Marrow に知らせずディスク上で編集されたメモリファイルも検出できます。
  • 型付けと検証:すべてのメモリは fact、decision(または entity)のいずれかで、短いトピックの下にある領域に分類されます。不正な書き込みは理由とともに拒否されるため、記憶領域が不要なデータで埋まることはありません。
  • 有効期限と確信度:メモリには確信度を記載でき、今だけ有効な情報には有効期限を設定できます。期限が切れると、Marrow はそれらを無効にします。
  • どこでも実行可能:オフライン対応の単一バイナリです。Markdown が信頼できる唯一の情報源で、SQLite は破棄可能なキャッシュです。

名前の由来

Marrow は免疫系の記憶が始まる場所です。体のほかの部分が変化し続ける間も、静かに覚えている層です。あなたのエージェントも共有の記憶を持ちますが、それはあなたのものであり、あなたのマシン上で、あなたの条件のもとに保たれます。

ライセンス

エンジン(crates/)は AGPL-3.0-only、組み込み可能な Python バックエンド(python/marrow-anthropic)は Apache-2.0 です。MCP または CLI 経由でエージェントから Marrow を使用することは別個のプロセスであり、派生著作物にはあたりません。商用ライセンスも利用できます。詳しくは COMMERCIAL.md をご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。