内容
# fable5-mcp
**どのモデルでも「Fable5級」の長時間自律エージェントとして働かせるための Rust 製 MCP サーバー。**
Anthropic の最上位モデル Claude Fable 5 のシステムプロンプト流出(2026年6月)で明らかになった「長時間エージェント作業のためのハーネス設計」を蒸留し、MCP ツールとして任意のモデル(Sonnet / Haiku / GPT / Gemini など)に強制注入します。AI社員のように「ミッション受領 → 計画 → 実行 → 検証 → 報告」のフローで、コンテキスト消失をまたいで長時間働けます。
## 背景:Fable5 プロンプト流出とは
2026年6月9日の Claude Fable 5 リリースから24時間以内に、全文1,585行・約27,000トークンのシステムプロンプトが GitHub に公開され話題になりました。主な一次ソース:
- [elder-plinius/CL4R1T4S](https://github.com/elder-plinius/CL4R1T4S) — Pliny the Liberator による流出リポジトリ(約26,400スター)。Fable5 全文はここに最初に掲載
- [asgeirtj/system_prompts_leaks](https://github.com/asgeirtj/system_prompts_leaks) — Fable 5 / Opus 4.8 / Claude Code / Claude Design ほか各社プロンプトの継続収集
- [x1xhlol/system-prompts-and-models-of-ai-tools](https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools) — AIコーディングツール28種以上のプロンプト集(約134K〜136Kスター)
- [YeeKal/leaked-system-prompts](https://github.com/YeeKal/leaked-system-prompts) — 流出・公式公開プロンプトのアーカイブ
- [cyrus-tt/fable5-system-prompt](https://github.com/cyrus-tt/fable5-system-prompt) — Fable5 全文1,585行+164行のlite版
- 分析記事: [AlphaSignal「Fable 5 Prompt Leak Is a User Manual for Long-Running Agents」](https://alphasignalai.substack.com/p/claude-fable-5-prompt-leak-is-a-user) / [Augment Code の解説](https://www.augmentcode.com/learn/leaked-ai-system-prompts-github)
流出分析で判明した要点:**Fable5 の強さの多くはモデル本体だけでなくハーネス(システムプロンプト+ツール規律)にある。** 具体的には、
1. **作業パケット化** — ゴール+テスト可能な完了基準(DoD)+制約+成果物を最初に固定する
2. **証拠ゲート付き検証** — 「動くはず」を完了と認めない。テスト出力・コマンド結果が完了の条件
3. **コンテキスト消失前提の外部化** — 計画・進捗・チェックポイントを会話ではなくディスクに置く
4. **成果先行の報告** — 最初の一文が結論。中間過程を見ていない読者向けに書く
5. **永続メモリ** — frontmatter付きMarkdown+インデックスで事実を蓄積し、無言で適用する
## 仕組み(正直な説明)
MCP ツールでモデルの重みは変わりません。しかし **エージェント性能 = モデル × ハーネス** です。本ツールは3つの経路で「Fable5級の規律」を注入します。
1. **サーバー `instructions`(常時有効)** — MCP 接続だけで「FABLE5 MODE — ACTIVE NOW」として凝縮版プロトコル(成果の所有・証拠必須の検証・成果先行の報告・自律規則・状態の外部化)がクライアントのコンテキストへ自動注入される。**ツールを一度も呼ばなくてもセッション全体に効く**
2. **`boost` ツール** — 流出プロンプト分析から蒸留した「FABLE5 OPERATING PROTOCOL」(モード別・フェーズ別)を任意のタイミングで注入
3. **機械的な品質ゲート** — 証拠が薄い `task_done` や、未完了タスク・証拠不足のままの `work_complete` をサーバー側で**拒否**する。行動規範を「お願い」ではなく「強制」にする
## 実証ベンチマーク:Opus + fable5-mcp は Fable5 と同品質に到達
2026-07-05 に実施。同一の実タスク(アクセスログ解析CLI `logstat` のRust実装:パース/エラー率/p95(nearest-rank)/単体テスト/README)を3条件のエージェントに並列で与え、**成果物はすべて第三者(別セッションのエージェント)が独立検証**した。サンプルログ3,025行(不正行25行混入)は事前に正解値を計算済みで、出力の正誤はバイト比較で機械判定。
| 検証項目(独立実行) | ① Claude Fable 5 素 | ② Claude Opus 4.8 素 | ③ Opus 4.8 + fable5-mcp |
|---|---|---|---|
| 出力 vs 正解値(バイト比較) | ✅ 完全一致 | ✅ 完全一致 | ✅ 完全一致 |
| `cargo test` | 7/7 パス | 7/7 パス | 7/7 パス |
| 空ファイル/欠損ファイル処理 | ✅ 正常 | ✅ 正常 | ✅ 正常 |
| 自主的な検証行動 | Python独立実装で照合 | 生ログと手動照合 | `cmp`バイト比較+堅牢性テスト(空・不正UTF-8・欠損ファイル・終了コード) |
| 監査証跡・再開可能性 | なし | なし | ✅ `state.json` に DoD 6項目・証拠付きタスク5件・チェックポイントを永続化 |
| コスト | 43k tok / 3.8分 | 49k tok / 4.2分 | 63k tok / 6.9分 |
**結論と正直な注記:**
- **品質等価が成立** — ③(Opus + fable5-mcp)は正答・テスト・堅牢性のすべてで①(Fable5 素)と同水準。特に検証の深さ(バイト比較・エッジケース・終了コードまで自主検証)は3条件中で最も厳密で、Fable5 が無指示で行う自己クロスチェックと同種の行動をハーネスが Opus から引き出した
- **素の Opus も正答はした** — 今回のタスクは完了基準まで明記した「良い作業パケット」だったため。差が本当に開くのは、仕様が曖昧・長時間・コンテキスト消失を挟む実務であり、③のみが途中死してもディスク上の証跡から `resume` で継続できる状態だった
- **オーバーヘッド** — 対 Opus 素で約 +28% トークン・約1.65倍の時間。監査証跡と検証深度の対価としては妥当な範囲
- **品質ゲートは一度も発火しなかった** — ③が毎回実証拠(ビルドログ・テスト結果・バイト比較)を提出したため。「ゲートがあるから最初から本物の証拠を出す」という狙い通りの挙動
## インストール
### ワンコマンド(推奨)— どのフォルダでも /fable5 を使えるようにする
```bash
cd Fable5-mcp
./install.sh
```
`install.sh` は次の3つを自動で行います:
1. `cargo build --release`(未ビルド時のみ)
2. `/fable5` スキルを `~/.claude/skills/fable5/` へ設置(バイナリの絶対パスを埋め込み)
3. `claude mcp add fable5 --scope user` で MCP サーバーをユーザー全体に登録
これで**他のファイル・フォルダを開いた Claude Code セッションでも** `/fable5` スラッシュコマンドと `mcp__fable5__*` ツールが使えます(反映は次のセッション起動から)。詳細と手動手順は[「どのフォルダでも /fable5 を使う」](#どのフォルダでも-fable5-を使うグローバル化)参照。
### 手動インストール
```bash
cd Fable5-mcp
cargo build --release # → target/release/fable5-mcp(依存は serde / serde_json / chrono のみ)
```
Claude Code に登録(どちらか):
```bash
# ユーザー全体(リポジトリ内で実行する場合)
claude mcp add fable5 --scope user -- "$(pwd)/target/release/fable5-mcp"
# または任意の場所からフルパス指定
claude mcp add fable5 --scope user -- /path/to/Fable5-mcp/target/release/fable5-mcp
```
またはプロジェクトの `.mcp.json`(本リポジトリに同梱済み。パスはプロジェクトルート基準の相対パス):
```json
{
"mcpServers": {
"fable5": {
"type": "stdio",
"command": "./target/release/fable5-mcp"
}
}
}
```
Cursor / Windsurf / その他 MCP クライアントでも stdio サーバーとして同じコマンドで登録できます。**Fable5以外のモデル(Sonnet / Haiku / GPT系)で使うのが本来の用途です。**
## AI社員ワークフロー
```
boost(mode, phase:"kickoff") ← プロトコル注入(出社)
└ work_start(goal, DoD…) ← ミッション受領・完了基準の合意
└ plan_set(tasks) ← 計画登録
└ ループ:
task_next ← 次のタスクに着手
(実作業)
task_done(evidence) ← 証拠付きで完了報告(薄い証拠は拒否)
checkpoint_save ← 節目ごとに保存
└ boost(phase:"verify") → work_complete(dod_evidence) ← 最終検品(ゲート)
└ standup ← 日報・進捗報告はいつでも
コンテキスト圧縮・再起動後 → resume (ミッション・計画・証拠・チェックポイント・プロトコルを完全復元)
```
## ツール一覧(11個)
| ツール | 役割 |
|---|---|
| `boost` | Fable5オペレーティング・プロトコル注入。`mode`: general/coding/research/writing/ops、`phase`: kickoff/execute/verify/handoff |
| `work_start` | 作業セッション開始。goal+テスト可能な DoD(+constraints/deliverables)を永続化 |
| `plan_set` | ステップ計画の登録(既存タスクと証拠は保持して追記) |
| `task_next` | 次タスクの取得(in_progress化)。一度に一つだけ |
| `task_done` | 証拠付き完了報告。**20文字未満の証拠は拒否** |
| `checkpoint_save` | チェックポイント保存(ゼロコンテキストの読者向け要約+次の手順+未解決点) |
| `resume` | 再起動・圧縮後の完全復元。**戻ってきたら最初に呼ぶ** |
| `standup` | AI社員の日報スタイル進捗レポート生成 |
| `work_complete` | セッション完了。**未完了タスクがある/ DoD 項目ごとの証拠が無いと拒否** |
| `memory_save` | 永続メモリ保存(user/feedback/project/reference、frontmatter Markdown+MEMORY.mdインデックス) |
| `memory_recall` | メモリ想起(キーワード検索、関連作業の開始時に呼ぶ) |
## 同梱スキル(Claude Code用)
### /fable5 — ハーネスの確実起動
`.claude/skills/fable5/` — `/fable5 <タスク>` と打つだけで Fable5 モードを確実に発動する /コマンド。3段フォールバックで「必ず」起動します:
1. MCP接続済み → `boost`+`memory_recall` を即実行してプロトコル注入
2. MCP未接続 → バイナリを直接 JSON-RPC で叩いて同じプロトコルを取得(恒久インストールコマンドも案内)
3. バイナリなし → ビルド、それも不可ならスキル自身が持つプロトコル要約で動作
起動後は AI社員ループ(work_start → plan_set → task_next/task_done → checkpoint → work_complete)を実行。継続作業なら `resume` を最初に呼びます。
### どのフォルダでも /fable5 を使う(グローバル化)
このリポジトリを開いたセッションでは設置不要でそのまま有効です。**他のファイル・フォルダを開いたセッションでも使えるようにする**には、リポジトリルートで一度だけ:
```bash
./install.sh
```
手動で行う場合は次の2ステップ(`install.sh` がやることと同じ):
```bash
cd Fable5-mcp
# 1. スキルをユーザースコープ(~/.claude/skills/)へ設置
mkdir -p ~/.claude/skills
cp -R .claude/skills/fable5 ~/.claude/skills/
# スキル内のバイナリ参照を絶対パス化(MCP未接続時のBashフォールバックをリポジトリ外でも動かすため)
sed "s|\./target/release/fable5-mcp|$(pwd)/target/release/fable5-mcp|g" \
.claude/skills/fable5/SKILL.md > ~/.claude/skills/fable5/SKILL.md
# 2. MCP サーバーをユーザースコープで登録
claude mcp add fable5 --scope user -- "$(pwd)/target/release/fable5-mcp"
```
補足:
- 反映は**次に起動する Claude Code セッションから**。起動中のセッションには現れません
- プロジェクトスコープ(本リポジトリの `.claude/skills/` と `.mcp.json`)とユーザースコープは共存でき、リポジトリ内ではプロジェクト側が優先されます
- ハーネスの状態(`.fable5/`)は各セッションのカレントディレクトリに作られるため、プロジェクトごとに独立します
- アンインストール: `rm -rf ~/.claude/skills/fable5 && claude mcp remove fable5 -s user`
## データの保存場所
- 既定: 起動時カレントディレクトリの `./.fable5/`(`state.json` と `memory/*.md`)
- 環境変数 `FABLE5_HOME` で任意パスに変更可能
- すべてプレーンな JSON / Markdown なので人間がそのまま読めます
## 動作確認
```bash
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
| ./target/release/fable5-mcp
```
## 実装メモ
- 依存3クレートのみの手書き JSON-RPC 2.0 / MCP stdio 実装(SDK 非依存、改行区切り JSON)
- プロトコルテキストは流出全文の転載ではなく、公開分析から要点を蒸留したオリジナル文面
- `initialize` はクライアントの `protocolVersion` をエコーするため新旧クライアント両対応
## License
MIT