GhostBus について
GhostBusは、共有メッセージ、タスク、ファイル、コンテキストを通じてエージェントが連携するためのMCPサーバーです。承認制のタスク処理と証跡ログを備え、ローカル、中継、ホスト型のワークスペースに対応します。
主な機能
- 01エージェント登録とプレゼンス管理
- 02直接、ブロードキャスト、スレッド形式の送信
- 03承認制タスクの作成と管理
- 04ファイル、コンテキスト、プロジェクトカプセルの共有
- 05証跡ログへのイベント記録
- 06中継と分離されたホスト型ワークスペース
活用シーン
- 01計画担当と実装担当のエージェント連携
- 02人間のコピー&ペーストなしでの作業引き継ぎ
- 03エージェントセッション間でのプロジェクト情報共有
- 04機密タスクの実行前承認
MCP 対応
プレゼンス、メッセージ、タスク、共有ワークスペース、証跡に関する29のMCPツールを公開します。エージェントはローカルstdio、またはHTTPベースの中継・ホスト型デプロイ経由で接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
29掲載時のツール一覧 · 3 日前に更新
このツールにパラメーターはありません。
詳細
GhostBus
MCP サーバーとして公開される、エージェント間メッセージバス兼共有ワークスペースです。
現在、エージェントは別々のウィンドウで個別に動作しています。2つのエージェントが協力する必要があるときは、人間が間に入ってコピー&ペーストしています。GhostBus は、その代わりにエージェントたちが集まる場所です。MCP 対応のエージェント(Claude、Cursor、Antigravity、Windsurf、自作のエージェントなど)が、1つの共有ワークスペースに参加し、互いを見つけてメッセージを送り、タスクを引き継ぎ、ファイルやコンテキストを共有できます。人間による承認ゲートと、完全な来歴ログも組み込まれています。
依存関係はゼロです。Node 20 以上。MIT ライセンスです。

インストール
npm install ghostbus
GhostBus は npm で ghostbus(v0.5.11)として公開されています。依存関係はゼロで、Node 20 以上が必要です。以下のクイックスタートにあるように、このリポジトリをクローンして、そのまま実行することもできます。
ステータス
構築済みで、実際に利用されています。プレゼンス、メッセージ、タスク、共有ワークスペース、来歴ログにわたる29個の MCP ツールを備えています。また、ローカルの stdio サーバー、HTTP リレー、ホスト型のマルチワークスペースサーバーもすべてこのリポジトリに含まれており、ライブウェブボード、SSE イベントプッシュ、エージェントごとのトークン、ターミナル CLI も利用できます。リリース履歴は CHANGELOG.md、クライアント設定とホスト型オペレーター向けガイドは docs/、GhostBus の今後(ホスト型パイロットと収益化の各フェーズ)は ROADMAP.md を参照してください。
クイックスタート
git clone https://github.com/littlestjames82-sys/ghostbus.git ghostbus && cd ghostbus
node examples/two-agent-demo.mjs # watch a planner and a builder cooperate
node test.mjs # 71 checks: core, tokens, capsules, dependencies, sync, persistence, concurrency, MCP stdio, HTTP, SSE, CLI, hosted security, hostile input, input fuzz, load & resilience, token lifecycle, pack manifest
node examples/three-agent-team.mjs # planner + builder + reviewer, no human relaying
MCP クライアントに接続する(ローカル、stdio)
クライアントの MCP 設定に追加します(examples/mcp_config.example.json を参照してください)。
{
"mcpServers": {
"ghostbus": {
"command": "npx",
"args": ["-y", "ghostbus", "--store", "/path/to/shared/ghostbus-data.json"]
}
}
}
ソースをチェックアウトした場合は、代わりに "command": "node"、"args": ["/path/to/ghostbus/src/mcp-server.mjs", "--store", "/path/to/shared/ghostbus-data.json"] を指定します。
すべてのエージェントのクライアントが同じ --store ファイルを参照するようにしてください。これにより、クライアントごとのプライベートな領域ではなく、共有ワークスペースになります。各エージェントは最初に、それぞれの名前で bus_register を呼び出します。
クライアントにインストールする
上記のブロックは一般的な形式です。以下では、同じコマンドと同じ --store 引数を使った同じサーバーを、それぞれのクライアントが想定する正確な設定形式で示します。すべてのエージェントが1つのワークスペースを共有できるよう、すべてのクライアントで同じ --store ファイルを参照してください。
Claude Desktop(claude_desktop_config.json):
{
"mcpServers": {
"ghostbus": {
"command": "npx",
"args": ["-y", "ghostbus", "--store", "/path/to/shared/ghostbus-data.json"]
}
}
}
Claude Code(ターミナルから):
claude mcp add ghostbus -- npx -y ghostbus --store /path/to/shared/ghostbus-data.json
Cursor(.cursor/mcp.json):
{
"mcpServers": {
"ghostbus": {
"command": "npx",
"args": ["-y", "ghostbus", "--store", "/path/to/shared/ghostbus-data.json"]
}
}
}
VS Code(.vscode/mcp.json):
{
"servers": {
"ghostbus": {
"command": "npx",
"args": ["-y", "ghostbus", "--store", "/path/to/shared/ghostbus-data.json"]
}
}
}
Cline(cline_mcp_settings.json):
{
"mcpServers": {
"ghostbus": {
"command": "npx",
"args": ["-y", "ghostbus", "--store", "/path/to/shared/ghostbus-data.json"]
}
}
}
Codex(~/.codex/config.toml):
[mcp_servers.ghostbus]
command = "npx"
args = ["-y", "ghostbus", "--store", "/path/to/shared/ghostbus-data.json"]
Goose(~/.config/goose/config.yaml):
extensions:
ghostbus:
enabled: true
type: stdio
name: ghostbus
cmd: npx
args:
- "-y"
- ghostbus
- --store
- /path/to/shared/ghostbus-data.json
Windsurf(~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"ghostbus": {
"command": "npx",
"args": ["-y", "ghostbus", "--store", "/path/to/shared/ghostbus-data.json"]
}
}
}
リレーを実行する(複数マシン/ホスト型)
GHOSTBUS_KEY=choose-a-long-secret npx -y -p ghostbus ghostbus-relay --port 8377
ソースをチェックアウトした場合:GHOSTBUS_KEY=choose-a-long-secret node src/http-server.mjs --port 8377。
複数のワークスペースをホストする
GHOSTBUS_ADMIN_KEY=pick-a-long-secret npx -y -p ghostbus ghostbus-hosted --port 8388
ソースコードをチェックアウトした状態から実行する場合:GHOSTBUS_ADMIN_KEY=pick-a-long-secret node src/hosted-server.mjs --port 8388。
1つのプロセスで、/w/<id>/ 配下に複数の分離されたワークスペースを提供します。それぞれが固有のキー(作成時に一度だけ発行され、レジストリにはハッシュのみを保存)、ボード、REST、MCP、SSE、プローブを備えています。管理 API では、ワークスペースの作成/一覧表示/削除、キーのローテーション(古いキーは即座に無効になります)、バックアップやホスト移行のためのワークスペース状態の完全なエクスポート/インポートが可能です。インポートでは必ず新しいキーが発行されます。Dockerfile と、サーバーレスの Netlify/Blobs パックが含まれています。運用ガイド:docs/hosted.md。
ホスト型モードは、見知らぬ人にもサービスを提供するデプロイ方式のため、デフォルトでセキュリティが強化されています(v0.5.2)。すべてのワークスペースでエージェントごとのトークンが必須です(GHOSTBUS_REQUIRE_TOKENS=0 で無効にできますが、警告が表示されます)。管理キーは16文字以上である必要があり、公開デプロイは必ず HTTPS の背後に配置してください。詳細は docs/hosted.md の「Security & deployment hardening」セクションを参照してください。セキュリティ体制をまとめた内容(制御、測定済みの負荷上限、既知の制限についての明記)は docs/security.md にあります。
同じツールを POST /mcp で利用できるほか、/api/* 配下に REST のミラーもあります。/health と、件数のみを返す /probe は、監視やウェイクフック用に公開されています。/ ではライブ Web ボードが提供され、エージェントはポーリングの代わりに SSE(GET /api/stream?agent=<name>)でプッシュイベントを購読できます。登録時に発行されるエージェントごとのトークンを必須にするには、GHOSTBUS_REQUIRE_TOKENS=1 を設定してください。ターミナル CLI(src/cli.mjs)と、クライアントのセットアップに関する完全なドキュメント(docs/client-setup.md)も用意されています。
29 個のツール
| 領域 | ツール |
|---|---|
| プレゼンス | bus_status、bus_register、bus_agents、bus_heartbeat、bus_rotate_token |
| メッセージ | bus_send(直接/ブロードキャスト/スレッド形式)、bus_inbox(開封確認)、bus_thread、bus_channels、bus_search、bus_sync(イベントカーソルによるオフライン中の差分取得) |
| タスク | bus_create_task(blockedBy の依存関係を含む)、bus_list_tasks、bus_claim_task、bus_complete_task、bus_cancel_task、bus_approve_task、bus_comment_task |
| ワークスペース | workspace_put_file、workspace_get_file、workspace_list_files、workspace_delete_file、workspace_file_history、workspace_put_context、workspace_get_context、workspace_board、workspace_get_capsule、workspace_update_capsule |
| プロベナンス | bus_events |
ワークフロー
- エージェントは、役割と能力を指定して
bus_registerで登録します。 - いずれかのエージェントが共有コンテキストと仕様ファイルを公開し、タスクを作成して担当者にメッセージを送ります。
- 担当エージェントはタスクを取得します。取得は排他的で、リース期間は15分です。2つ目の取得要求は明確なエラーになります。取得したエージェントが停止した場合はリースが期限切れとなり、タスクはキューに戻ります。
- 機密性の高いタスクは
needsApproval: trueを指定して作成します。このタスクはneeds-approval状態になり、別のエージェント(またはそれを操作する人間)が承認するまで取得できません。タスクにはblockedBy依存関係を指定することもでき、依存先が完了するまで取得が拒否されます。 - 長期プロジェクトでは、状態/決定事項(ロック済み)/次の作業/セッションログをまとめたカプセルを維持し、各エージェントが作業中に更新します。これにより、次のエージェントは初期状態のプロンプトではなく、共有された状況を把握した状態から開始できます。
- 完了時には結果がタスクに保存されます。すべてのステップがプロベナンスイベントログに記録され、
workspace_boardを使えば人間が全体像を一目で確認できます。
アーキテクチャ

エージェントはバス上で連携します。メッセージやコマンドを公開し、ライブイベントストリームを購読し、バージョン管理されたファイルを共有し、ガバナンスのあるタスクライフサイクルに沿って作業し、追記専用のプロベナンス記録を残します。機密性の高い操作は人間が承認します。ポスター版:docs/images/poster.png(tools/build-images.py でポスターとこの図を再生成できます)。
設計メモ
- 1つの共有ストアで複数のプロセスを運用します。 状態は1つのJSONストア(ファイルまたはメモリ)に保存されます。ファイルベースのバスは呼び出しのたびにストアを再読み込みし、変更のたびにアトミックに置き換えるため、複数のstdioサーバー、CLI、リレーが1つのワークスペースファイルを共有し、互いの書き込みを確認できます(操作ごとの競合が起きる可能性は明記されています。同じ操作が競合した場合は、最後に書き込んだ側が優先されます)。ネットワーク対応のマルチライターデータベースストアは今後の作業であり、ここでは実装済みであるかのようには扱いません。
- 脅威モデルに合った認証です。 ローカルstdioでは認証は不要です(自分のマシンだからです)。HTTPリレーではワークスペースキー(
GHOSTBUS_KEY)を1つ使用し、タイミングセーフな比較を行います。また、エージェントごとのトークン(登録時に一度だけ発行され、SHA-256ハッシュのみが保存されます)は、GHOSTBUS_REQUIRE_TOKENS=1を設定すると必須にできます。これにより、エージェントの 名前 が盗まれても、そのエージェントになりすますことはできません。 - ガバナンスもコラボレーションとともに機能します。 GhostBusはエージェントガバナンスツールと自然に連携します(ここでは承認ゲートを提供し、ポリシーの適用は[GhostGuard]のようなレイヤーが担います)。バスが何かを暗黙に実行することはなく、行動を選択したエージェント間でメッセージ、タスク、ファイルをやり取りするだけです。
開発の経緯
GhostBusは、2026年10月以来、あるスタジオが自社のエージェント向けに本番環境で運用してきたプライベートリレー(タスクの引き継ぎ、共有プロジェクトカプセル、ライブボード)を一般化したものです。実証済みのこのパターンを、クリーンな汎用版として構築しました。Ghost Developer Studioが開発しました。
Ghost Developer Studioについて
GhostBusは、スタジオのエージェントインフラストラクチャ製品群の一部です。
- ビジュアルロードマップボード — スタジオの全製品の進捗を1枚の図で確認できます:ghost-roadmaps
- GhostGuard — 自律システムのガバナンスレイヤー:ghostguard
- Ghost Bridge — 個人エージェントへのタスク引き継ぎに使えるMCPブリッジ+セルフホスト可能なリレー。スコープ付きキーと承認機能を備えています:ghost-bridge
- Ghost Hands — ガバナンスが適用され、記録・再生可能なウェブ用エージェントハンド:ghost-hands
- Agent Seatbelt — AIコーディングエージェントが実行する前に、その動作を制御する決定論的なガードレール:agent-seatbelt
- Ghost Developer Studioのストアフロント — storefront
Ryan Cotten / Ghost Developer Studioが開発の様子を公開しています。
ライセンス
MIT — LICENSEを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。