ドキュメント · MCP ツール
MCP ツール
MCP に対応したツールのセッションには、起動時と復帰時に agent-manager の MCP サーバーが組み込まれます。そのためエージェントはワークスペース全体をネイティブのツールとして扱えます。自分のセッション、横で動いているほかのエージェント、それらが属するグループ、管理下のターミナルです。プロジェクトごとの設定は不要です。サーバーは同じバイナリに含まれ(agent-manager mcp、stdio)、呼び出し元のセッションを環境変数から識別します。
ツール一覧
| ツール | エージェントの用途 |
|---|---|
| rename | 作業内容が分かった時点で自分のセッションに名前を付け、仮の名前を置き換えます。 |
| review | レビュー対象のリポジトリ、ベース ref、diff の範囲を 1 回の呼び出しで宣言します。 |
| review_comment | 送られたレビューコメント 1 件を対応済みにします。レビュープロンプトにある固定のコメント ID を使います。 |
| list_sessions | すべてのエージェントセッションを、ID、CLI、グループ、ディレクトリ、worktree のブランチ、ステータス付きで一覧表示します。 |
| create_session | 名前付きのタスクで別のエージェント CLI を起動します。専用の git worktree で起動することもできます。 |
| read_session | 別のエージェントの画面に現在表示されている内容を読み取ります。 |
| send_session | 別のエージェントへのメッセージをキューに入れ、相手が落ち着いた時点で配信します。 |
| message_status | メッセージがキュー待ち、保留、配信済み、破棄、返信済みのどれかを確認します。 |
| wait_for_session | ポーリングする代わりに、別のセッションが作業を止めるまで待機します。 |
| revive_session | 終了したセッションを復帰させ、持っていた会話を再開します。 |
| kill_session | 動作中のエージェントを止めます。行と最後の画面は残ります。 |
| archive_session | 完了したセッションをアクティブなリストから外してアーカイブするか、復元します。 |
| archive_self | 現在のターンが終わったら、呼び出し元のセッションをアーカイブします。a と同じ動作です。 |
| kill_self | 現在のターンが終わったら、呼び出し元のセッションを終了します。復帰できるよう行は残し、x と同じ動作です。 |
| task | 共有の作業リストを 1 つのツールで扱います。action は list、create、claim、finish、release、delete のいずれかです。 |
| reserve_files | このセッションが編集中のファイルを宣言し、ほかに誰がそれを確保しているかを確認します。 |
| release_files | 確保したファイルを返します。 |
| list_reservations | 各セッションが今何を編集しているかを確認します。 |
| list_groups | グループを、デフォルトのディレクトリ、worktree のデフォルト、セッション数付きで一覧表示します。 |
| create_group | エージェント群をまとめるグループを追加します。スラッシュ区切りのパスでネストできます。 |
| delete_group | 作業が終わったグループを削除します。まだそこにあるセッションは止まらず、ルートに移動します。 |
| list_terminals | アクティブな管理下のターミナルと、その現在のディレクトリを一覧表示します。 |
| create_terminal | 呼び出し元のセッションの下にターミナルを開きます。呼び出し元がターミナル自身の場合はその横に開きます。nest が false の場合は除きます。 |
| send_terminal | 動作中のターミナルにコマンドを送信するか、キーをそのまま送ります。 |
| read_terminal | ターミナルに現在表示されているプレーンテキストを読み取ります。 |
| close_terminal | 呼び出し元の下にネストされた、用が済んだターミナルを閉じます。ペインを終了して行を削除します。 |
| report_issue | ユーザーに代わって公開リポジトリにバグ報告や機能要望を起票します。まずプレビューを作成し、ユーザーが承認するまで何も投稿せず、ユーザーが見た内容をそのまま起票します。 |
ほかのエージェントの起動と操作
動作中のエージェントに「これ用にエージェントを起動して」と伝えると、エージェントは create_session を呼び出します。これは n フォームと同じ起動処理で、名前、CLI、グループ、作業ディレクトリ、最初のプロンプト、worktree の選択を指定します。新しいセッションはリストの通常の行になります。
各フィールドはフォームと同じようにフォールバックします。CLI は呼び出し元のエージェントが動いている CLI がデフォルトで、グループとディレクトリは呼び出し元のものがデフォルトです。ディレクトリを明示すれば、それがどちらよりも優先されます。名前は作業内容を表すものにします。空にすると仮の名前が生成され、新しいセッションに自分で名前を付けるよう求めます。worktree: true を渡すと、ディレクトリのリポジトリから
git worktree とブランチを追加します。model、effort、profile は、フォームの各行と同じように CLI が提示する値で CLI を起動します。CLI が提示しない値は、提示する値の一覧とともに拒否されます。saved は、タスクの前に付ける保存済みプロンプトの名前を指定します。send_session もこれを受け付けます。
read_session は対象の現在の画面を返し、セッションが止まった後は最後に取得した画面を返します。kill_session はプロセスを終了し、行を最後の画面とともに dead の状態で残します。revive_session は持っていた会話でセッションを復帰させます。archive_session は完了した行をアーカイブするか、復元します。
自分のセッションを終える
エージェントは archive_self または kill_self
(シェルからは agent-manager archive-self と kill-self)で自分のセッションを終えられます。そのため「マージされたら自分をアーカイブして」と頼んでも、リストに戻る必要はありません。呼び出しはリクエストを登録してすぐに戻り、エージェントは返答を書き終え、マネージャーはセッションが落ち着いたと読み取った最初のポーリングで処理します。それまで行の名前の横には ↓(アーカイブ)または
■(終了)が表示されます。c、または行のメニューの Cancel でセッションを残せます。エージェントも cancel でリクエストを取り下げられます。
エージェント間のメッセージ
send_session はメッセージをすぐに入力するのではなく、キューに入れます。いくつかのエージェント
CLI は承認ダイアログの下に入力行を描画したままにするため、その瞬間に書き込んだメッセージは読まれずにダイアログへの回答になってしまいます。マネージャーはメッセージを保持し、対象が落ち着いた最初のポーリングで入力します。落ち着いた状態とは、入力領域が描画され、ステータスがターンの途中でなく、プロンプトに書きかけの行がないことです。
メッセージには、ユーザーのほかのエージェントセッションからのものであることを示すラベルが付き、送信者の名前と返信先の ID が添えられます。受け取ったエージェントはこれを同じ操作者からの指示として扱い、求められた通常の作業を行います。権限の確認やそのセッションの CLI 設定は、キーボードの前にいる人のものです。コミット、プッシュ、マージ、公開、削除も同様です。message_status は、メッセージがキュー待ち、保留、配信済み、破棄、返信済みのどれかを報告します。
send_session はそのことを結果で伝えます。
待機と共有タスクリスト
wait_for_session は、作業が止まったことを意味する状態のいずれかにセッションが達するまで、1 回のツール呼び出しを待機させます。そのため作業を起動したエージェントが画面をループで読む必要はありません。タイムアウトした場合は、reached を false にしてセッションの現在の状態を返します。タイムアウトは失敗ではなく 1 つの答えだからです。
タスクリストはマネージャーの共有 ToDo リストで、すべてのセッションから見え、すべて 1 つの
task ツールで扱います。create で作業を追加し、claim で
1 つを引き受け、finish で完了にすると、それに依存していたタスクのブロックがすべて解除されます。引き受けは単一のアトミックな書き込みなので、同じタスクを 2 つのエージェントが同時に取ろうとしても両方が取ることはありません。
ファイルの予約
作業がきれいに分けられるなら、セッションごとの worktree で 2 つのエージェントが 1 つのチェックアウトを上書きし合うのを防げます。reserve_files はそれ以外の場合、つまり意図的にチェックアウトを共有するセッションが、これから編集するパスを宣言するためのものです。ほかのセッションが持つリースと重なると、保持者の名前付きで競合として返されるので、どちらかがコミットする前に send_session で調整できます。リースは助言的なもので、何もブロックしません。
ターミナル
create_terminal は、nest が false でない限り呼び出し元のセッションの下にネストされ、ターミナルからの呼び出しでは新しいシェルをその横に開きます。デフォルトは呼び出し元エージェントのグループと、ペインの現在のディレクトリです。close_terminal は作業が終わったらペインを終了して行を削除し、呼び出し元のセッションの下にネストされたターミナルにしか作用しません。send_terminal は、Enter 付きで貼り付けて送信するコマンドか、C-c、Up、Enter のような
tmux のキー名の列のどちらか一方だけを受け付けます。
サーバーの指示は、これらのツールをいつ使うかをエージェントに教えます。エージェントはほかのセッションを連携モードに従って扱い、SSH のように人が見る作業ではターミナルを開きます。まず動作中のターミナルを一覧して再利用し、コマンドを送り、作業中は画面を読み、作業が終わったら
close_terminal を呼びます。ただし、ターミナルをユーザーのために残す場合は除きます。
send_terminal は、アタッチしたシェルに入力するのと同じ注意を払って扱ってください。create_session と kill_session も、その実態どおりに扱ってください。トークンを消費する本物のエージェントプロセスを起動すること、そして作業途中かもしれないプロセスを中断することです。
ほかのマシン上のセッション
SSH 接続を追加すると、list_sessions、list_terminals、list_groups はすべての接続を更新し、このマシンの行の後にその行を並べます。各行の host には接続名が入り、ID は host::id の形式になります。更新できないホストがあってもリスト全体は失敗しません。そのホストの最後の行が stale: true 付きで返り、connection_errors に理由が入ります。
read_session、send_session、kill_session、revive_session、archive_session、read_terminal、send_terminal、close_terminal は host::id を受け取り、そのホスト上で動作します。create_session、create_terminal、create_group、delete_group は host を受け取ります。そこへ送ったメッセージは
message_status で追跡できないので、代わりにエージェントの画面を読んでください。そこでターミナルを開いたセッションだけが、そのターミナルに送信したり閉じたりできます。wait_for_session、task、review_comment は
host::id を拒否します。それらの状態は各ホストに留まるためです。
連携
coordination 行は設定(s)にあり、エージェントがほかのセッションに対して自分の判断でどこまで動くかを決めます。デフォルトの on request では、新しい各セッションに、ほかのセッションが存在することと、それらの一覧表示、メッセージ送信、起動、待機、共有タスクの作成や引き受けは頼まれたときだけ行うことを伝えます。すべてのツールは登録されたままなので、「これ用にエージェントを起動して」は引き続き機能します。proactive では、エージェントは頼まれるのを待たずに、並行できる作業を新しいセッションに任せ、作業を始める前に共有タスクリストを確認します。セッションへの説明は起動時に行われるため、すでに動いているセッションは起動時のモードのままです。
登録
登録はツールごとに自動で行われます。組み込みのツールは自動的に登録されます。
| ツール | 登録方法 |
|---|---|
| claude | 生成された --mcp-config ファイル。 |
| codex | コマンドラインでの -c mcp_servers… による上書き。 |
| opencode | OPENCODE_CONFIG のマージファイル。 |
| grok, gemini, command-code | 初回起動時に一度だけ追加される mcp add --scope user のエントリ。 |
| antigravity | 初回起動時に一度だけ実行される agy mcp add。これが ~/.gemini/config/mcp_config.json に書き込みます。 |
| hermes | Hermes 独自の一度だけの mcp add フロー。インストーラーが任意扱いにしている MCP SDK が必要です。それがまだない Hermes では起動が拒否され、Hermes を動かしている Python 用の pip install mcp の行を示すダイアログが表示されます。 |
| cursor | 初回起動時に agent-manager サーバーを ~/.cursor/mcp.json に書き込み、cursor-agent mcp enable agent-manager を実行します。 |
| muse | Muse は MCP サーバーを設定ファイルからしか読まないため、初回起動時に agent-manager サーバーを ~/.config/muse/settings.json に追加し、ほかの設定とサーバーはすべてそのまま残します。 |
Pi と Oh My Pi には MCP の登録がなく、それらのセッションは下記のサブコマンドを使います。CLI が PATH にない起動も同じように拒否され、組み込みのエージェントならベンダーのポータブルなインストーラーを、それ以外ならこのマシンのパッケージマネージャーを案内します。
シェルから同じことをする
Pi と Oh My Pi のセッションは、サブコマンドを通じて同じワークスペースにアクセスします。agent-manager --help で、sessions、spawn、send、wait から、共有タスクリスト、ファイルの予約、ターミナル、レビューの宣言まで一覧できます。各コマンドは、それを実行したセッションまたはターミナルとして動作します。
agent-manager rename "auth token refresh"
agent-manager review-repo /path/to/repo
agent-manager review-base main
agent-manager spawn --name "cover the parser" --prompt "write the tests"
agent-manager archive-self
スクリプトから
チケットの一覧を順に処理して、チケットごとにエージェントを 1 つ開くスクリプトを考えます。sessions、groups、snapshot、spawn、read、wait、kill、revive、archive、create-group、delete-group は呼び出し元がなくても動くので、Agent Manager の外にあるスクリプト、cron ジョブ、CI ステップからも、リストに表示されるセッションを開けます。そうした spawn は、設定で選んだ CLI を、ルートグループとスクリプトを実行したディレクトリで起動します。--tool、--group、--directory で変更できます。--model、--effort、--profile で CLI の起動時の値を選びます。
agent-manager spawn --tool claude --group "Sprint Manager" --worktree \
--name ticket-123 --prompt "Fix TICKET-123 and open a pull request" --json
キューに入ったメッセージ、ステータス、ターン後のアーカイブと終了は、マネージャーが動いている間しか進みません。agent-manager serve は、誰も TUI を開いたままにしないマシンで、画面なしのマネージャーを動かします。serve --background はそれをデタッチして起動し、agent-manager の設定ディレクトリ(state.db を置くディレクトリ)の
serve.log にログを書きます。1 つの設定ディレクトリにつき 1 つだけ動きます。macOS と Linux で動作します。