グースアプリメーカー
この MCP (Model Context Protocol) サーバーを使用すると、ユーザーは、API 呼び出し、データ アクセスなどに Goose を利用する Web アプリケーションを Goose 経由で作成、管理、提供できます。
インストール
Goose にインストールするにはここをクリックしてください🪿🪿🪿🪿🪿🪿🪿🪿🪿🪿
特徴
- 基本的な指示から新しいWebアプリケーションを作成する
- アプリを
~/.config/goose/app-maker-apps
ディレクトリに保存します(各アプリは独自のサブディレクトリに保存されます)。 - ウェブアプリケーションをオンデマンドでローカルに提供する
- ウェブ アプリケーションをデフォルトのブラウザで開く (可能であればクロムレスで開く)
- 利用可能なすべてのWebアプリケーションを一覧表示します
- Gooseを汎用バックエンドとして使用できるアプリを作成する
例
Goose 経由でデータをロードする(拡張機能を再利用)
Goose はあなたのアプリを追跡します:
オンデマンドでアプリを作成
豊富な表形式やリスト形式のデータも表示
ソースからの使用法
例えばガチョウの場合:
重要: この MCP は現時点では Goose デスクトップ アプリで実行する必要があります (goose-server/goosed にアクセスするため)
構築と公開
オプション: UVを使用してクリーンな環境で構築する
出版
pyproject.toml
のバージョンを更新します:
- パッケージをビルドします。
- PyPI に公開:
仕組み
この MCP はアプリを提供するだけでなく、goosed と独自のセッションを介してアプリが goose と通信できるようにします。
概要
このシステムは、非ブロッキングの非同期リクエスト・レスポンスパターンを実装しており、これによりウェブアプリケーションはメインスレッドをブロックすることなくGooseにリクエストを送信し、レスポンスを受信できます。これは、以下の要素を組み合わせることで実現されています。
- サーバー側のブロッキングエンドポイント
- クライアント側の非同期JavaScript
- スレッド同期を備えたレスポンス保存メカニズム
ウェブアプリの構造
ウェブアプリは、リクエストに応じてリソース/テンプレートに基づいて作成(またはダウンロード)されます。各ウェブアプリは~/.config/goose/app-maker-apps
配下の専用ディレクトリに、以下の構造で保存されます。
goose-app-manifest.json
ファイルには、次のようなアプリに関するメタデータが含まれています。
- name: アプリの表示名
- type: アプリの種類 (例: 「static」、「react」など)
- 説明: アプリの簡単な説明
- created: アプリが作成された時のタイムスタンプ
- ファイル: アプリ内のファイルのリスト
1. クライアント側のリクエストフロー
クライアントが Goose から応答を得たい場合:
- ユーザーがリクエストを開始する(例:「リストの応答を取得」をクリックする)
- クライアントはリクエスト関数(
gooseRequestText
、gooseRequestList
、またはgooseRequestTable
)のいずれかを呼び出します。 - この関数は一意の
responseId
を生成し、このIDでapp_response
を呼び出すように指示するリクエストをGooseに送信します。 - 次に関数は
waitForResponse(responseId)
を呼び出し、/wait_for_response/{responseId}
エンドポイントをポーリングします。 - このエンドポイントは、応答が利用可能になるかタイムアウトが発生するまでブロックします。
- 応答が利用可能になると、クライアントに返され、表示されます。
2. サーバー側処理
サーバー側:
/wait_for_response/{responseId}
エンドポイントは条件変数を使用して、応答が利用可能になるまでブロックします。- Gooseがリクエストを処理するとき、レスポンスデータと
responseId
を使ってapp_response
関数を呼び出す。 app_response
関数は、応答をapp_responses
辞書に保存し、条件変数を使用して待機中のスレッドに通知します。- ブロックされたHTTPリクエストはブロック解除され、クライアントにレスポンスを返します。
3. スレッド同期
システムは Python のthreading.Condition
を使用します。スレッド同期の条件:
- クライアントがまだ利用できない応答を要求すると、その
responseId
に対して条件変数が作成されます。 - HTTPハンドラスレッドはタイムアウト(30秒)でこの条件を待機します。
- 応答が利用可能になると、状態が通知されます
- 応答が利用可能になる前にタイムアウトが経過すると、エラーが返されます。
主要コンポーネント
クライアント側関数
gooseRequestText(query)
: テキスト応答を要求するgooseRequestList(query)
: リスト応答を要求するgooseRequestTable(query, columns)
: 指定された列のテーブル応答を要求しますwaitForResponse(responseId)
: 指定されたIDの応答を待ちます
サーバー側関数
app_response(response_id, string_data, list_data, table_data)
: レスポンスを保存し、待機者に通知します/wait_for_response/{responseId}
エンドポイントを持つ HTTP ハンドラー: 応答が利用可能になるまでブロックします
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
この MCP サーバーを使用すると、ユーザーは Goose を通じて Web アプリケーションを作成、管理、提供し、構成可能なディレクトリにアプリケーションを保存し、Web アプリケーションの提供機能を提供できます。
Related MCP Servers
- AsecurityAlicenseAqualityA simple MCP server that facilitates website fetching through a configurable server platform using stdio or SSE transport, allowing integration with tools like Cursor for streamlined access.Last updated -223PythonMIT License
- -securityAlicense-qualityAn MCP server that enables fetching web content using the Node.js undici library, supporting various HTTP methods, content formats, and request configurations.Last updated -668TypeScriptMIT License
- AsecurityFlicenseAqualityAn MCP server implementation that enables interaction with the Unstructured API, providing tools to list, create, update, and manage sources, destinations, and workflows.Last updated -3928
- -securityAlicense-qualityAn MCP server that enables web searches using a SearxNG instance, allowing MCP-compatible applications like Goose to perform internet searches.Last updated -PythonGPL 3.0