Goose App Maker MCP
グースアプリメーカー
この MCP (Model Context Protocol) サーバーを使用すると、ユーザーは、API 呼び出し、データ アクセスなどに Goose を利用する Web アプリケーションを Goose 経由で作成、管理、提供できます。
インストール
Goose にインストールするにはここをクリックしてください🪿🪿🪿🪿🪿🪿🪿🪿🪿🪿
特徴
基本的な指示から新しいWebアプリケーションを作成する
アプリを
~/.config/goose/app-maker-appsディレクトリに保存します(各アプリは独自のサブディレクトリに保存されます)。ウェブアプリケーションをオンデマンドでローカルに提供する
ウェブ アプリケーションをデフォルトのブラウザで開く (可能であればクロムレスで開く)
利用可能なすべてのWebアプリケーションを一覧表示します
Gooseを汎用バックエンドとして使用できるアプリを作成する
Related MCP server: MCP SearxNG Search
例
Goose 経由でデータをロードする(拡張機能を再利用)
Goose はあなたのアプリを追跡します:
オンデマンドでアプリを作成
豊富な表形式やリスト形式のデータも表示
ソースからの使用法
例えばガチョウの場合:
# Run directly from source
uv --directory $PWD run python main.py重要: この MCP は現時点では Goose デスクトップ アプリで実行する必要があります (goose-server/goosed にアクセスするため)
構築と公開
オプション: UVを使用してクリーンな環境で構築する
uv venv .venv
source .venv/bin/activate
uv pip install build
python -m build出版
pyproject.tomlのバージョンを更新します:
[project]
version = "x.y.z" # Update thisパッケージをビルドします。
# Clean previous builds
rm -rf dist/*
python -m buildPyPI に公開:
# Install twine if needed
uv pip install twine
# Upload to PyPI
python -m twine upload dist/*仕組み
この MCP はアプリを提供するだけでなく、goosed と独自のセッションを介してアプリが goose と通信できるようにします。
概要
このシステムは、非ブロッキングの非同期リクエスト・レスポンスパターンを実装しており、これによりウェブアプリケーションはメインスレッドをブロックすることなくGooseにリクエストを送信し、レスポンスを受信できます。これは、以下の要素を組み合わせることで実現されています。
サーバー側のブロッキングエンドポイント
クライアント側の非同期JavaScript
スレッド同期を備えたレスポンス保存メカニズム
ウェブアプリの構造
ウェブアプリは、リクエストに応じてリソース/テンプレートに基づいて作成(またはダウンロード)されます。各ウェブアプリは~/.config/goose/app-maker-apps配下の専用ディレクトリに、以下の構造で保存されます。
app-name/
├── goose-app-manifest.json # App metadata
├── index.html # Main HTML file
├── style.css # CSS styles
├── script.js # JavaScript code
└── goose_api.js # allows the apps to access goose(d) for deeper backend functionality
└── ... # Other app files
goose-app-manifest.jsonファイルには、次のようなアプリに関するメタデータが含まれています。
name: アプリの表示名
type: アプリの種類 (例: 「static」、「react」など)
説明: アプリの簡単な説明
created: アプリが作成された時のタイムスタンプ
ファイル: アプリ内のファイルのリスト
1. クライアント側のリクエストフロー
クライアントが Goose から応答を得たい場合:
┌─────────┐ ┌─────────────────┐ ┌───────────────┐ ┌──────────────┐
│ User │────▶│ gooseRequestX() │────▶│ Goose API │────▶│ waitForResp- │
│ Request │ │ (text/list/ │ │ (/reply) │ │ onse endpoint │
└─────────┘ │ table) │ └───────────────┘ └──────────────┘
└─────────────────┘ │
▲ │
│ │
└────────────────────────────────────────────┘
Responseユーザーがリクエストを開始する(例:「リストの応答を取得」をクリックする)
クライアントはリクエスト関数(
gooseRequestText、gooseRequestList、またはgooseRequestTable)のいずれかを呼び出します。この関数は一意の
responseIdを生成し、このIDでapp_responseを呼び出すように指示するリクエストをGooseに送信します。次に関数は
waitForResponse(responseId)を呼び出し、/wait_for_response/{responseId}エンドポイントをポーリングします。このエンドポイントは、応答が利用可能になるかタイムアウトが発生するまでブロックします。
応答が利用可能になると、クライアントに返され、表示されます。
2. サーバー側処理
サーバー側:
┌─────────────┐ ┌─────────────┐ ┌───────────────┐
│ HTTP Server │────▶│ app_response│────▶│ response_locks│
│ (blocking │ │ (stores │ │ (notifies │
│ endpoint) │◀────│ response) │◀────│ waiters) │
└─────────────┘ └─────────────┘ └───────────────┘/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 ハンドラー: 応答が利用可能になるまでブロックします
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/michaelneale/goose-app-maker-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server