GooseTeam について
GooseTeam は、Goose エージェント同士の協調を可能にする MCP サーバーおよびプロトコルです。複数のエージェントに作業を分担させたい方を対象としており、現時点では Goose CLI との連携を中心としています。
主な機能
- 01一意の ID によるエージェント登録
- 02メッセージの保存と取得
- 03タスクの作成・割り当て・完了
- 04タイマー付きのエージェント待機
- 05MCP Proxy 経由の複数エージェント接続
活用シーン
- 01コーディネーターエージェントにプロジェクトを分割させ、タスクを割り当てる
- 02共有サーバーを介して複数の Goose エージェント間でメッセージをやり取りする
MCP 対応
MCP サーバーとして、エージェント登録、メッセージ、タスク管理のツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
GooseTeam

Goose エージェントが協力できるようにする
プロトコル:
エージェントが従うべき運用手順です。次の 2 つの形式があります。
- 自然言語:動作方法やツールの使い方について、人間が読みやすい簡潔な指示です。
- Mermaid Markdown:期待される動作を効率的なテキスト形式で記述した、簡潔なフローチャートです。
拡張機能:
エージェントがタスクやメッセージングに使用するツールを提供する Goose 拡張機能(MCP サーバー)です。
- エージェントの登録: 一意の ID を割り当ててエージェントの登録を行い、メッセージを送信できるようにします。
- メッセージ管理: エージェントからのメッセージを保存し、取得できるようにします。
- タスク管理: プロジェクトコーディネーターの役割を担うエージェントが、他のエージェントにタスクと役割を作成して割り当てます。
- エージェントの待機: 接続中のエージェントが、次のアクションを行う前に指定した時間だけ待機できるようにします。
- リモートサーバー: MCP プロキシを使用すると、複数のエージェントが同じ MCP サーバーに接続でき、協力するために必要な環境を整えられます。
開発中
- 現在は Goose CLI との連携に取り組んでいるため、インストールしておく必要があります。
- 他のエージェントプラットフォームも、このプロジェクトと簡単に連携できます。
- プロトコルと MCP サーバーは Goose に密結合していません。密結合しているのは、npm の
agent:スクリプトとプロトコルのプリアンブルのみです。
新機能:Mermaid Markdown による動作制御!
-
エージェントプロトコルを mermaid チャート として表現します。
-
agent:chartスクリプトを使ってエージェントを起動し、お気に入りの LLM がこのプロトコルに従えるか試してみましょう!
スクリーンショット
チャート形式の GooseTeam プロトコル

GPT-4o はこれを制御手段として問題ないと判断

Goose エージェント

Inspector - ツール一覧

Inspector - メッセージの追加

Inspector - タスク一覧

実行方法
拡張機能について Goose に伝える
goose configureを実行します- 拡張機能を追加 を選択します
- リモート拡張機能 を選択します
- 名前に
goose-teamを入力します - SSE エンドポイント URI に http://localhost:3001/sse を入力します
これらの npm スクリプトを順番に実行してください:
- まず、このリポジトリをローカルマシンにクローンし、依存関係をインストールします。
npm run build- ソースからサーバーをビルドします。npm run mcp-proxyを実行して、単一インスタンスの goose-team MCP サーバーと通信するための SSE プロキシを起動します。npm run inspectorを実行して、ブラウザーで MCP インスペクターを起動します。- ここで connect、次に
list_tools、続いてadd_messageをクリックし、Humanからチームが取り組むタスクやプロジェクトの説明を送信します。
- ここで connect、次に
npm run agentを実行して、プロトコルと指示を読み込み、goose-teamサーバーに接続し、自分をプロジェクトコーディネーターに割り当ててから、タスクの作成を開始するエージェントを起動します。- インスペクターのウィンドウで
list_tasksをクリックすると、追加されているタスクを確認できます。 - いくつかタスクができたら、
npm run agentを何度も実行して、プロジェクトコーディネーターからタスクを割り当てられるエージェントを起動できます。
- インスペクターのウィンドウで
トラブルシューティング
GOOSE TEAM の動作はモデルによって大きく異なります!!!
次の手順で、動作するモデルかどうかをテストしてください。
npm run build- ソースからサーバーをビルドします。npm run mcp-proxyを実行して、単一インスタンスの goose-team MCP サーバーと通信するための SSE プロキシを起動します。npm run agent:testを実行します。これは同じ MCP に接続するエージェントを起動しますが、プロトコルはよりシンプルです。別の言語であいさつをして、2 秒待ってから、もう一度あいさつします。agent:testが正常に実行された動画はこちらです。
現在、ループを継続できるモデルは google/gemini-2.0-flash-001(レート制限による停止を避けるため、openrouter.ai経由)と openai/gpt-4o のみです。
ほかのモデルはループから外れてしまいます。特にプロジェクトコーディネーターにとって、モデルがプロトコルに従い、メッセージを確認したり待機したりしながらループを継続することが重要です。
build、mcp-proxy、agent:test を実行してみることをおすすめします。設定したモデルが何か作業をしたあと、「message loop ended」エラーで停止する場合、そのモデルはツールの使用があまり得意ではありません。さまざまなモデルを試して、どれが動作するか確認してください。上記以外のモデルで実際に作業を継続できた場合は、ぜひお知らせください!
MCP ツール
エージェント
-
register_agent- 新しいエージェントを登録し、一意の ID とランダムに割り当てられた色を付与します。
- 入力: なし
- 戻り値: 一意の
idと割り当てられたcolorを持つエージェントの JSON。
-
list_agents- 登録済みのすべてのエージェントを一覧表示し、参加可能なメンバーの概要を提示します。
- 入力: なし
- 戻り値: サーバーに接続しているすべてのエージェントの JSON リスト。
-
agent_leave- エージェントがチームを離れることを許可します。
- 入力: なし。
- 戻り値: チームを離れたエージェントの JSON。
-
agent_wait- エージェントが次の操作を実行する前に、指定された秒数だけ待機できるようにします。
- 入力:
seconds:待機する秒数。
- 戻り値: 経過時間の確認。
メッセージ
-
add_message- エージェントが新しいメッセージを送信し、サーバーに保存できるようにします。
- 入力:
senderId:メッセージを送信するエージェントの ID。content:メッセージの内容。
- 戻り値: メッセージが追加されたことの確認。
-
recent_messages- サーバーに保存されている最新のメッセージを取得します。
- 入力: なし
- 戻り値: 最新 3 件のメッセージを含む JSON 配列。
-
list_messages- サーバーに保存されているすべてのメッセージを取得します。
- 入力: なし
- 戻り値: サーバー上のすべてのメッセージを含む JSON 配列。
-
clear_messages- サーバーに保存されているすべてのメッセージを消去します。
- 入力: なし
- 戻り値: メッセージが消去されたことの確認。
タスク
-
add_task- サーバーにタスクを追加します。
- 入力:
description:タスクの説明です。
- 戻り値: 割り当てられた ID が付与された、新しく追加されたタスクです。
-
list_tasks- サーバー内のすべてのタスクを一覧表示します。
- 入力: なし
- 戻り値: サーバー内のすべてのタスクを含む JSON リストです。
-
assign_task- エージェントにタスクを割り当てます。
- 入力:
taskId:タスクの ID です。agentId:タスクを割り当てるエージェントの ID です。
- 戻り値: メッセージ追加の確認です。
-
complete_task- タスクを完了します。
- 入力:
taskId:タスクの ID です。
- 戻り値: タスク完了の確認です。
開発者向けセットアップ
依存関係のインストール
cd /path/to/GooseTeam/npm install
ビルド
npm run build- stdio ベースの MCP サーバーランタイムを
/dist/index.jsにビルドします。
STDIO サーバー - プロキシ経由
npm run stdio:proxy- ポート
:3001のエンドポイント/sseで、SSE ベースの MCP プロキシを起動します。 - このプロキシは、STDIO でラップされた GooseTeam MCP サーバーの単一インスタンスと通信します。
- 複数のクライアントが同じサーバーに接続し、同じリソースを参照できます。
SSE サーバー - 直接接続
npm run sse:direct- ポート
:3001のエンドポイント/sseで、SSE でラップされた GooseTeam MCP サーバーのインスタンスを起動します。 - 複数のクライアントが同じサーバーに接続し、同じリソースを参照できます。
- プロキシ経由の STDIO 方式と同等ですが、サーバーの SSE 版を使用します。
StreamableHTTP サーバー - 直接接続
npm run streamableHttp:direct- ポート
:3001のエンドポイント/mcpで、StreamableHTTP でラップされた GooseTeam MCP サーバーのインスタンスを起動します。 - 複数のクライアントが同じサーバーに接続し、同じリソースを参照できます。
- プロキシ経由の STDIO 方式と同等ですが、サーバーの SSE 版を使用します。
Inspector
npm run inspector- Model Context Protocol Inspector を実行します。
- Inspector の UI は http://localhost:5173 で利用できます。
- Inspector の UI で:
Transport TypeがStreamableHttpに設定されていることを確認します。URLが http://localhost:3001/mcp に設定されていることを確認します。- "Connect" ボタンをクリックします。
- 緑色のライト 🟢と "Connected" メッセージが表示されます。
- List Tools ボタンをクリックします。
- クライアントの複数のインスタンスが同じサーバーに接続し、同じリソースを共有できます。
エージェント - テキスト形式のプロトコル
npm run agent:text- 新しい GooseTeam エージェントを起動します。指示は
instructions/protocol-as-text.mdに記載されています。- このエージェントのプロトコル指示は、見出し、テキスト、箇条書きを含む Markdown 形式のテキストで記述されています。
- 注:自然言語のプロンプトですが、待機しながらループを続ける必要があるため、一部の LLM は対応をためらう場合があります。
- LLM がループを続けない場合は、さまざまな LLM で エージェント待機テスト を試し、適切なものを見つけてください。
- 最初のエージェントはプロジェクトコーディネーターの役割を担います。
- 注: 最初のエージェントを起動する前に、Inspector でサーバーに接続しておくことをおすすめします。
- "Human" から、チームに達成してほしいことを伝えるメッセージを送信します。
エージェント - チャート形式のプロトコル
npm run agent:chart- 新しい GooseTeam エージェントを起動します。指示は
instructions/protocol-as-chart.mdに記載されています。- このエージェントのプロトコル指示は、フローチャートを簡潔に表現する方法である Mermaid の Markdown 形式で記述されています。
- 注:プロトコルを効率的に表現できる方法ですが、一部の LLM は理解できない場合があります。
- LLM が Mermaid の Markdown を理解できない場合は、その旨を伝えて終了します。
- 最初のエージェントはプロジェクトコーディネーターの役割を担います。
- 注: 最初のエージェントを起動する前に、Inspector でサーバーに接続しておくことをおすすめします。
- "Human" から、チームに達成してほしいことを伝えるメッセージを送信します。
エージェント待機テスト
npm run agent:wait:test- 新しい GooseTeam エージェントを起動します。エージェントに渡す指示は
instructions/wait-loop-test.mdに記載されています。 - 設定したモデルがメッセージを定期的に確認しながらループを維持できるかテストします。
- 「outgoing message queue empty」というエラーで終了した場合、そのモデルはツールの使用に適しておらず、GooseTeam での使用候補としては不適切です。
- 注: 先に MCP Proxy が起動していることを確認してください。
フォーマット
npm run format- コードに対して
prettierを実行し、フォーマットを調整します。
型チェック
npm run typecheck- 型の問題をチェックして報告するため、引数を指定して
tscを実行します。
Lint
npm run lint- 構文上の問題を非破壊的にチェックして報告するため、
eslintを実行します。
LintFix
npm run lint:fix- 構文上の問題をチェックして修正するため、
eslintを実行します。
テスト
npm run test- ユニットテストを実行します。
リンク
- MCP 仕様: Model Context Protocol の仕様全文はこちらをご覧ください。
- サーバーリファレンス: GitHub MCP serverで紹介されている、シンプルでありながらモジュール化されたアプローチに従っています。
- 着想元: Aaron Goldsmith の Gist こちらを参考に、改良を重ねています。
- Aaron の初期の実験についての講演「Building a team of AI agents」をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。