Skip to main content
Glama

グースアプリメーカー

この MCP (Model Context Protocol) サーバーを使用すると、ユーザーは、API 呼び出し、データ アクセスなどに Goose を利用する Web アプリケーションを Goose 経由で作成、管理、提供できます。

インストール

Goose にインストールするにはここをクリックしてください🪿🪿🪿🪿🪿🪿🪿🪿🪿🪿

特徴

  • 基本的な指示から新しいWebアプリケーションを作成する

  • アプリを~/.config/goose/app-maker-appsディレクトリに保存します(各アプリは独自のサブディレクトリに保存されます)。

  • ウェブアプリケーションをオンデマンドでローカルに提供する

  • ウェブ アプリケーションをデフォルトのブラウザで開く (可能であればクロムレスで開く)

  • 利用可能なすべてのWebアプリケーションを一覧表示します

  • Gooseを汎用バックエンドとして使用できるアプリを作成する

Related MCP server: MCP SearxNG Search

Goose 経由でデータをロードする(拡張機能を再利用)

スクリーンショット 2025年4月28日午後7時38分24秒

スクリーンショット 2025年4月28日午後7時38分53秒

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

出版

  1. pyproject.tomlのバージョンを更新します:

[project] version = "x.y.z" # Update this
  1. パッケージをビルドします。

# Clean previous builds rm -rf dist/* python -m build
  1. PyPI に公開:

# Install twine if needed uv pip install twine # Upload to PyPI python -m twine upload dist/*

仕組み

この MCP はアプリを提供するだけでなく、goosed と独自のセッションを介してアプリが goose と通信できるようにします。

概要

このシステムは、非ブロッキングの非同期リクエスト・レスポンスパターンを実装しており、これによりウェブアプリケーションはメインスレッドをブロックすることなくGooseにリクエストを送信し、レスポンスを受信できます。これは、以下の要素を組み合わせることで実現されています。

  1. サーバー側のブロッキングエンドポイント

  2. クライアント側の非同期JavaScript

  3. スレッド同期を備えたレスポンス保存メカニズム

ウェブアプリの構造

ウェブアプリは、リクエストに応じてリソース/テンプレートに基づいて作成(またはダウンロード)されます。各ウェブアプリは~/.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
  1. ユーザーがリクエストを開始する(例:「リストの応答を取得」をクリックする)

  2. クライアントはリクエスト関数( gooseRequestTextgooseRequestList 、またはgooseRequestTable )のいずれかを呼び出します。

  3. この関数は一意のresponseIdを生成し、このIDでapp_responseを呼び出すように指示するリクエストをGooseに送信します。

  4. 次に関数はwaitForResponse(responseId)を呼び出し、 /wait_for_response/{responseId}エンドポイントをポーリングします。

  5. このエンドポイントは、応答が利用可能になるかタイムアウトが発生するまでブロックします。

  6. 応答が利用可能になると、クライアントに返され、表示されます。

2. サーバー側処理

サーバー側:

┌─────────────┐ ┌─────────────┐ ┌───────────────┐ │ HTTP Server │────▶│ app_response│────▶│ response_locks│ │ (blocking │ │ (stores │ │ (notifies │ │ endpoint) │◀────│ response) │◀────│ waiters) │ └─────────────┘ └─────────────┘ └───────────────┘
  1. /wait_for_response/{responseId}エンドポイントは条件変数を使用して、応答が利用可能になるまでブロックします。

  2. Gooseがリクエストを処理するとき、レスポンスデータとresponseIdを使ってapp_response関数を呼び出す。

  3. app_response関数は、応答をapp_responses辞書に保存し、条件変数を使用して待機中のスレッドに通知します。

  4. ブロックされたHTTPリクエストはブロック解除され、クライアントにレスポンスを返します。

3. スレッド同期

システムは Python のthreading.Conditionを使用します。スレッド同期の条件:

  1. クライアントがまだ利用できない応答を要求すると、そのresponseIdに対して条件変数が作成されます。

  2. HTTPハンドラスレッドはタイムアウト(30秒)でこの条件を待機します。

  3. 応答が利用可能になると、状態が通知されます

  4. 応答が利用可能になる前にタイムアウトが経過すると、エラーが返されます。

主要コンポーネント

クライアント側関数

  • 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 ハンドラー: 応答が利用可能になるまでブロックします

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