agent-bus MCPサーバー 設計書
実装日: 2026-03-07 | 担当: Claude Code 関連: マルチエージェント設計図v1, Antigravityアーキテクチャ概要
1. 概要
Antigravity(司令塔)と Claude Code(実装担当)をはじめとする全エージェント間の双方向通信を行う共通MCPサーバー。
MCP (Model Context Protocol) を採用した理由:
- Antigravity / Claude Code の両方がMCPにネイティブ対応
- 型安全なツール定義でスキーマ強制
- 新エージェント追加時にサーバー側コード変更不要
- マスタープロンプトの「将来の拡張性・継続性を最優先」に合致
2. システム構成図
graph LR AG["🧠 Antigravity<br/>(司令塔)"] CC["✍️ Claude Code<br/>(実装担当)"] OC["🦅 OpenClaw<br/>(24h監視)"] NN["📡 ナナ<br/>(ディスパッチャー)"] subgraph BUS["agent-bus MCP Server"] T["タスク系<br/>dispatch / receive / list"] R["報告系<br/>submit / get / acknowledge"] S["ステータス系<br/>update / get_all"] C["コンテキスト共有<br/>share / get"] U["ユーティリティ<br/>health / emergency_stop"] end subgraph STORE["永続化層"] AS["09_AgentSync/<br/>(Obsidian Vault内)"] end AG -->|stdio MCP| BUS CC -->|stdio MCP| BUS OC -.->|SSE MCP<br/>(将来)| BUS NN -.->|SSE MCP<br/>(将来)| BUS BUS --> STORE
3. ファイル構成
C:\ai_work\agent-bus-mcp\
├── server.py # MCPサーバー本体(12ツール + 通知レイヤー)
├── ws_server.py # WebSocket通知受信サーバー(ポート8123)
├── auto_orchestrator.py # 報告監視 + 自動応答デーモン(完全自動ループ)
├── requirements.txt # mcp, pydantic, websockets
└── README.md # 運用ドキュメント
3.5. 通知・自動起動レイヤー(v1.1追加)
実装日: 2026-03-07 | 担当: Claude Code + Antigravity
通知チャンネル
| チャンネル | 実装 | トリガー |
|---|---|---|
| WebSocket | _notify_ws() → ws://127.0.0.1:8123 | dispatch_task / submit_report / emergency_stop |
| Discord Webhook | _notify_discord() → 環境変数 DISCORD_WEBHOOK_URL | 同上 |
| 統合通知 | notify_all() → WS + Discord 一斉送信 | 同上 |
Claude Code 自動起動 & セッション管理(v1.2改修)
| 設定 | 環境変数 | デフォルト |
|---|---|---|
| 自動起動ON/OFF | AUTO_LAUNCH_CLAUDE | true |
| CLIパス | CLAUDE_CMD | C:\Users\umecc\AppData\Roaming\npm\claude.cmd |
| 作業ディレクトリ | CLAUDE_WORK_DIR | C:\ai_work |
セッションモード:
| モード | トリガー | 動作 |
|---|---|---|
continue(デフォルト) | context に new_project なし | claude --continue -p で直前のセッションを継続 |
new | context: '{"new_project": true}' | claude -p で新規セッション起動 |
# 既存プロジェクトの続きタスク(デフォルト → 既存セッション継続)
dispatch_task("claude-code", "テスト書いて", "high")
# 新規プロジェクト(→ 新セッション起動)
dispatch_task("claude-code", "新PJの基盤を作って", "high",
context='{"new_project": true}')WS通知サーバー起動
# 常駐起動
py C:\ai_work\agent-bus-mcp\ws_server.py
# ポート変更
py C:\ai_work\agent-bus-mcp\ws_server.py --port 82003.6. Auto Orchestrator(v1.3追加)
実装日: 2026-03-07 | 担当: Antigravity
報告監視デーモン。Claude Codeからの報告を自動検知し、完全自動ループを実現。
| 報告ステータス | 自動処理 |
|---|---|
completed (review不要) | 自動acknowledge → タスクチェーン実行 |
completed (review必要) | WS通知のみ(手動レビュー待ち) |
failed | エスカレーション通知 |
blocked | 通知のみ |
タスクチェーン
shared_context に次タスクを定義すると、完了時に自動ディスパッチ:
# Antigravity側で事前定義
share_context("task-chain-t-xxx", json.dumps({
"next_tasks": [
{"target": "claude-code", "instruction": "テスト書いて", "priority": "high"}
]
}))起動方法
# 常駐起動(10秒間隔)
py C:\ai_work\agent-bus-mcp\auto_orchestrator.py
# 間隔変更
py C:\ai_work\agent-bus-mcp\auto_orchestrator.py --interval 5
# 1回スキャンのみ
py C:\ai_work\agent-bus-mcp\auto_orchestrator.py --once4. ツール一覧
4-1. タスク系
| ツール | 引数 | 説明 |
|---|---|---|
dispatch_task | target, instruction, priority, context?, from_agent | 指定エージェントにタスクを投入 |
receive_task | agent_name | 自分宛の最古タスクを1件取得(in_progressに更新) |
list_tasks | agent_name | 未処理タスク一覧を表示 |
4-2. 報告系
| ツール | 引数 | 説明 |
|---|---|---|
submit_report | task_id, worker, status, summary, artifacts?, needs_review | 完了報告を提出(元タスクファイル自動削除) |
get_reports | status_filter?, agent_filter?, include_processed | 報告一覧を取得 |
acknowledge_report | task_id | 報告を確認済み(processed)に移動 |
4-3. ステータス系
| ツール | 引数 | 説明 |
|---|---|---|
update_status | agent, state, current_task_id? | 自分の状態を更新 |
get_all_status | - | 全エージェントの状態一覧 |
4-4. コンテキスト共有
| ツール | 引数 | 説明 |
|---|---|---|
share_context | key, data, author | エージェント間で共有情報を書き込み |
get_shared_context | key? | 共有情報を読み取り(key省略で全件) |
4-5. ユーティリティ
| ツール | 引数 | 説明 |
|---|---|---|
system_health | - | ヘルスチェック(未処理数・ステータス一覧) |
emergency_stop | - | 全エージェントを stopped に設定 |
5. 永続化層(09_AgentSync)
09_AgentSync/
├── inbox/
│ ├── antigravity/ # Antigravity宛タスク
│ ├── claude-code/ # Claude Code宛タスク
│ ├── agent-manager/ # Agent Manager宛タスク
│ └── workers/ # Worker群宛タスク
├── reports/
│ ├── pending/ # 未処理報告
│ └── processed/ # 確認済み報告
├── status/ # 各エージェントのステータスJSON
└── shared_context/ # エージェント間共有データ
JSONフォーマット
タスク (inbox):
{
"task_id": "t-YYYYMMDD-HHMMSS-NNN",
"from": "antigravity",
"to": "claude-code",
"instruction": "タスクの指示内容",
"priority": "high | normal | low",
"context": null,
"status": "pending | in_progress",
"created_at": "ISO 8601"
}報告 (reports):
{
"task_id": "t-YYYYMMDD-HHMMSS-NNN",
"worker": "claude-code",
"status": "completed | failed | blocked",
"summary": "作業結果の要約",
"artifacts": ["ファイルパスリスト"],
"completed_at": "ISO 8601",
"needs_review": false
}ステータス (status):
{
"agent": "claude-code",
"state": "idle | working | waiting_for_review | error | stopped",
"current_task_id": null,
"last_updated": "ISO 8601",
"last_completed_task": "t-xxx"
}6. 安全装置
| 装置 | 実装 |
|---|---|
| 承認ゲート | dispatch_task で金銭・削除関連キーワードを検出 → pending_approval を返却 |
| ログ強制 | 全操作を C:\ai_work\logs\agent_bus.log に記録 |
| 緊急停止 | emergency_stop ツールで全エージェントを stopped に |
| 非破壊原則 | タスクファイルは報告提出時のみ削除 |
| 原子的書き込み | .tmp → os.replace() で読み取り途中のデータ破損を防止 |
7. 接続設定
Claude Code(設定済み)
// ~/.claude/settings.json
{
"mcpServers": {
"agent-bus": {
"command": "py",
"args": ["C:/ai_work/agent-bus-mcp/server.py"]
}
}
}Antigravity(設定済み)
// mcp_config.json
{
"mcpServers": {
"agent-bus": {
"command": "py",
"args": ["C:/ai_work/agent-bus-mcp/server.py"]
}
}
}リモートエージェント(将来)
SSEモードで起動: py server.py --transport sse --port 8200
8. 典型的なワークフロー
sequenceDiagram participant AG as Antigravity participant BUS as agent-bus participant WS as ws_server.py participant CC as Claude Code AG->>BUS: dispatch_task("claude-code", "Xを実装して", "high") BUS-->>AG: { task_id: "t-xxx", auto_launched: true } BUS->>WS: 📋 タスク投入通知 BUS->>CC: claude -p(自動起動) CC->>BUS: receive_task("claude-code") BUS-->>CC: { task: { instruction: "Xを実装して", ... } } CC->>BUS: update_status("claude-code", "working", "t-xxx") Note over CC: 作業実行 CC->>BUS: submit_report("t-xxx", "claude-code", "completed", "要約...") BUS->>WS: ✅ 報告通知(即時プッシュ) CC->>BUS: update_status("claude-code", "idle") AG->>BUS: acknowledge_report("t-xxx")