Baron Munchausen について
Baron Munchausenは、Python 3.12で構築された、コーディングエージェント向けのローカルメモリーMCPサーバーです。プロジェクトの事実をグラフに記録し、その記憶に照らして回答を検証して、根拠あり・一部根拠あり・根拠なしの判定と未支持の主張を示します。
主な機能
- 01プロジェクト記憶グラフの永続化
- 02コンテキストの抜粋とセッションチェックポイント
- 03根拠判定と未支持の主張の提示
- 04事実の取り消しと復元
- 05グラフの健全性チェック
- 06MCP stdioとJSON-RPCインターフェース
活用シーン
- 01チャット終了後のプロジェクトコンテキスト復元
- 02記録済みの事実に基づくエージェント回答の確認
- 03決定事項と未解決の課題の追跡
MCP 対応
stdio経由で、記憶、検索、チェックポイント、根拠検証のツールをMCPクライアントに公開します。同じツールはローカルのJSON-RPCからも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Baron Munchausen — チャットが終わっても残るローカルメモリ

上記はすべて、クリーンなクローンに対して実際に実行したものです。rpc は docs/demo/baron-demo.sh で定義された 2 行の
curl ラッパーです。cd docs/demo && ./record.sh で全体を再録画できます。
パブリックアルファ(0.6.1)。 エンジンは、作者自身の業務で数か月にわたり毎日稼働しています。このリポジトリは公開から 1 日です。コードは Apache-2.0 ライセンスで、完成しています。「アルファ」が指すのは、パッケージング、ドキュメント、インストール手順です。問題があれば報告してください。
セッションが終わっても、プロジェクトは終わりません。 1 回の呼び出しで、プロジェクトがどこで止まったのか、何が決まったのか、次に何をするのかを呼び戻せます。タブを閉じた後でも、制限に達した後でも、モデルを変更した後でも同じです。そして、そのメモリに基づく回答すべてに判定が付きます。grounded、partial、ungrounded のいずれかで、根拠のない文は 1 つずつ名前が示されます。
サードパーティのランタイム依存関係がない、Python 3.12 製のメモリサーバーです。クライアント向けには stdio 経由の MCP、それ以外には 127.0.0.1:8765 上の JSON-RPC を使用します。モデルを呼び出すことはなく、データがマシンの外に出ることもありません。新規インストール時のグラフは空です。提供するのはツールであり、データではありません。
その理由
測定済みの 3 つの数値。それぞれの数値が示さないことも、隣に記しています。
1. 1 回のコンテキスト返却:7 146 トークン → 2 388。 7 146 は、セッショントランスクリプトから得た実際の圧縮サマリーの値です。2 388 は、同じプロジェクトの同じ時点について、実行中の memory_ground_prepare が返した範囲の値です。どちらも 2026-09-10 に tiktoken/cl100k_base でカウントしました。この数値が示さないこと: これは 1 組の実例であり、分布ではありません。同じコーパスから得た 2 つ目のサマリーは 5 913 トークンで、同じ範囲の削減率は 67 % ではなく 60 % になります。
2. Claude Opus 5:入力トークンを −69.6 % 削減、実測値。 上記の数値を使った計算ではありません。2026-09-10 に同じタスクを実行した際、モデル自身の usage が返した実測値です。同じ実行で Sonnet 5 は −61.7 %、Haiku 4.5 は −66.3 % でした。この数値が示さないこと: 対象は作者のグラフと作者のタスクです。削減率は、コンテキストのうちどれだけをグラフから取得できるかによって変わります。公開ベンチマークでの検証は、まだ行われていません。
3. 30 個のツール、ランタイム依存関係はゼロ。 クリーンなクローンで curl -s 127.0.0.1:8765/health を実行すると、"tools": 30 が返ります。同じ 30 個のツールを MCP stdio と JSON-RPC の両方で使え、requirements.txt にサードパーティのランタイムパッケージはありません。この数値が示さないこと: 品質については何も示しません。単なる数です。
これらの割合が金額にするとどれほどの価値になるかは、使用するモデルと利用量によって異なります。**shinegang.click の節約額計算ツール**では、現在の公式価格を使って計算し、実測値と計算値を区別して表示します。
2 分でインストール
git clone https://github.com/shinegang/baron.git && cd baron
# 1. start the memory server — standard library only, nothing to install
bin/baron --host 127.0.0.1 --port 8765 --store blank
# 2. in a second terminal: it is up, the graph is empty, 30 tools are loaded
curl -s http://127.0.0.1:8765/health | jq '{product, version, nodes, tools}'
# 3. check the stdio bridge against the live server
python3.12 bridge/mnemos_bridge.py --selftest
# 4. register it with your MCP client (Claude Code shown; the rest are below)
bash integrations/baron_add.sh
ステップ 2 では、{"product": "Baron Munchausen", "version": "0.6.1", "nodes": 0, "tools": 30} が出力されます。jq がなければ、パイプを外して生の JSON を確認してください。
クライアントを使わずに事実を書き込み、判定を取得できます。上のデモと同じ JSON-RPC を実行します。
curl -sX POST 127.0.0.1:8765/rpc -H content-type:application/json -d '{
"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"memory_add",
"arguments":{"items":[{"claim":"The release build is pinned to Python 3.12.",
"source":"team decision","kind":"rule"}],"session_id":"demo"}}}'
パッケージをインストールすると(pip install .)、同じサーバーが PATH 上で baron として使えるようになります。チェックアウトからは python3.12 -m baron で実行できます。
クライアント
標準の mcpServers JSON ブロックを受け取れるクライアントなら、どれでも Baron を使用できます。integrations/ にすでにファイルが用意されているクライアントは次のとおりです。
| クライアント | 方法 | ファイル |
|---|---|---|
| Claude Code | bash integrations/baron_add.sh | baron_add.sh |
| Codex | bash integrations/codex/register.sh | codex/ |
| Cursor | ~/.cursor/mcp.json にコピー | baron_cursor_mcp.json |
| llama.cpp | サーバー設定ファイルの隣にコピー | baron_llama_cpp_mcp_servers.json |
| LangChain | HTTP エンドポイントに対する動作する呼び出し | langchain_example.py |
| Claude Desktop | claude_desktop_config.json にコピー | baron_claude_desktop.json |
| その他 | stdio には python3.12 bridge/mnemos_bridge.py、JSON-RPC には http://127.0.0.1:8765 | — |
Claude Code では、登録にとどまらず、tools/hooks/claude/ の PreCompact フックと SessionStart フックによって、コンテキストウィンドウが圧縮されたときにグラフの一部が再注入されます。ウィンドウから情報が失われても、グラフには残ります。
その機能と数値、測定箇所
以下の数値はすべて、2026-09-10 に作者自身のグラフとマシンで測定したものであり、いずれもこのリポジトリから再測定できます。まだ数値がない項目については、その旨をこのページに記載しています。
| 機能 | 測定結果 | |
|---|---|---|
| 1. セッションが途切れません | 1 回の memory_checkpoint で、スレッドの先頭、直近 3 件のセッション、未解決のまま残っている項目すべて、直近 5 件の決定事項が返されます。 | docs/QUICKSTART.md |
| 2. すべての回答に判定が付きます | grounded/partial/ungrounded のいずれかが返され、裏付けのない文がそれぞれ特定されます。しきい値:裏付けあり 0.60、部分的 0.30、grounded とするには文の 0.80 が該当する必要があります。 | mnemos/grounding.py、tests/test_grounding.py |
| 3. スライスの予算が決まっています | 11 342 ノードのグラフに対する実際のクエリ 30 件:プロンプトのトークン数は中央値 1 070、最大 1 166、上限 1 200。予算超過は 0 回で、スライス内のノード数は中央値 5 です。 | mnemos/slice.py、mnemos/context_engine.py |
| 4. ループに組み込める速さです | 同じクエリ 30 件をローカルで実行:スライスの構築時間は中央値 115 ms、p90 221 ms、最大 394 ms です。 | mnemos/context_engine.py |
| 5. どのモデルでも、どのクライアントでも使えます | MCP stdio と JSON-RPC で 30 個のツールを利用できます。127.0.0.1:8765 で動作します。Claude Code、Codex、Cursor、llama.cpp、LangChain、curl のワンライナーは、すべて同等のクライアントです。 | integrations/ |
| 6. モデルなしで自己チェックします | pulse がグラフ全体を継続的に巡回します:3 300 ノードを 571.7 s で処理し、1 コアの 0.72 % を使用します。3 455 ノードのグラフでは、最初の巡回で 52 件のインシデントが記録されました。 | mnemos/pulse.py |
| 7. ルールに従ってメモリを忘れられます | memory_retract は事実の有効期間を閉じ、検索、スライス、グラウンディングの対象から除外します。ディスク上から削除されることはなく、undo=true で復元できます。 | mnemos/store.py、tests/test_memory_retract.py |
| 8. コンテキストの圧縮後も保持されます | Claude Code のフックは PreCompact と SessionStart でグラフのスライスを再注入するため、ウィンドウからこぼれた情報もグラフに保持されます。 | tools/hooks/claude/ |
このプロジェクトにない数値。 LongMemEval や LoCoMo のスコアはありません。これらのハーネスはここでは実行されておらず、実行されるまでは「未測定」とするのが誠実な表現です。実運用の 14 日間で、作者自身の日誌に対する判定の内訳は、142 回の実行で ungrounded が 81 件、partial が 41 件、grounded が 20 件でした。これは、エージェントが最初にグラフを参照せずに回答した頻度を測ったものであり、品質スコアではありません。隠すことは、このツールが検出するためにある類のことだからこそ、公表しています。
グラウンディングの実際の仕組み
| 手順 | ツール | 機能 |
|---|---|---|
| 1 — 回答の前 | memory_ground_prepare(query, session_id) | グラフを検索し、見つかったノードからプロンプトを作成して、事前チェックを登録します。graph_first を返します。回答がすでにメモリにある場合は、それを使ってモデルを呼び出さずに済みます。 |
| 2 — 回答 | (あなたのモデル) | その抜粋に基づいて生成します。あるいは、まったく生成しません。 |
| 3 — 回答の後 | memory_ground(answer_text, session_id) | 回答を主張ごとに分割し、それぞれをグラフと照合して、判定と unsupported_claims を返します。 |
| 1 回の呼び出し | memory_checkpoint(query, session_id, agent) | 手順 1 と検索をプロジェクトのスレッドとともに実行します。 |
| 書き込み | memory_add(items=[{claim, source}, …]) | 1 回の呼び出しにつき最大 50 件の事実を追加します。各項目でゲート判定が行われます。 |
| 取り消し | memory_retract(node_id, reason) | その事実が正しくなくなった場合に取り消します。元に戻せます。 |
| 監査 | memory_ground_log | すべての実行を追記専用のジャーナルに記録します。 |
事前チェックがなければ、評価されません。 対応する memory_ground_prepare を呼び出さずに memory_ground を呼ぶと、テキストがどれだけ多くの主張を裏付けていても、判定は ungrounded になります(notes: no_pre_pass)。
グラフは空の状態から始まります
baron --store blank # ./nodes.json, empty
baron --store blank:/var/lib/baron.json # explicit path
blank は既存のファイルを上書きせず、取得するグラフも本当に空です。両者が衝突すると、サーバーは起動を拒否し、対処方法を通知します。設定については、docs/CONFIGURATION.md をご覧ください。
ディレクトリからインストールする
Baron は 公式 MCP Registry に io.github.shinegang/baron として公開されています。
curl -s "https://registry.modelcontextprotocol.io/v0/servers?search=io.github.shinegang/baron"
公式インデックスをミラーリングするレジストリ(Glama、およびインデックスを直接読み込むクライアント)は、そこからエントリーを取得します。このリポジトリには、各ディレクトリが読み込むメタデータが含まれています。
| ファイル | ディレクトリ | 内容 |
|---|---|---|
server.json | 公式 MCP Registry | 逆引き DNS 名、バージョン、リポジトリ、ウェブサイト |
smithery.yaml | Smithery | bridge/mnemos_bridge.py の stdio 起動コマンドとその設定スキーマ |
glama.json | Glama | 所有権の申請に使うメンテナー情報 |
PyPI または npm にはまだパッケージがないため、レジストリのエントリーはインストール可能な成果物ではなく、ソースリポジトリを参照しています。2 分でインストール にある git clone を使うか、チェックアウトしたディレクトリから pip install . を実行してインストールしてください。baron-munchausen が PyPI に公開されたら、server.json に packages ブロックが追加され、同じディレクトリからワンコマンドでインストールできるようになります。
コントリビューション
Issue やプルリクエストを歓迎します。守っていただきたいルールは 2 つあります。ソフトウェア自体が従っているルールでもあります。
- 主張には根拠を添えてください。 再現するコマンドを添えたバグ報告は、添えられていない報告より 10 倍価値があります。
- 「確認できませんでした」は有効な回答です。 推測で答えるより適切です。ここでは
unknownは失敗ではなく、ステータスです。
プルリクエストを作成する前に、python3.12 -m pytest tests -q を実行してください。
ライセンス
Apache-2.0 — LICENSE。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。