Goose App Maker MCP

Integrations

  • Enables creation and management of web application styles through custom CSS files stored in app directories

  • Supports web application functionality through custom JavaScript code, including integration with Goose API via a helper script

  • Provides package distribution capabilities, with instructions for building and publishing the MCP server to PyPI

グースアプリメーカー

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

インストール

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

特徴

  • 基本的な指示から新しいWebアプリケーションを作成する
  • アプリを~/.config/goose/app-maker-appsディレクトリに保存します(各アプリは独自のサブディレクトリに保存されます)。
  • ウェブアプリケーションをオンデマンドでローカルに提供する
  • ウェブ アプリケーションをデフォルトのブラウザで開く (可能であればクロムレスで開く)
  • 利用可能なすべてのWebアプリケーションを一覧表示します
  • Gooseを汎用バックエンドとして使用できるアプリを作成する

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

出版

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

local-only server

The server can only run on the client's local machine because it depends on local resources.

この MCP サーバーを使用すると、ユーザーは Goose を通じて Web アプリケーションを作成、管理、提供し、構成可能なディレクトリにアプリケーションを保存し、Web アプリケーションの提供機能を提供できます。

  1. インストール
    1. 特徴
    2. ソースからの使用法
    3. 構築と公開
  2. 仕組み
    1. 概要
    2. 主要コンポーネント

Related MCP Servers

  • A
    security
    A
    license
    A
    quality
    A 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 -
    2
    23
    Python
    MIT License
  • -
    security
    A
    license
    -
    quality
    An MCP server that enables fetching web content using the Node.js undici library, supporting various HTTP methods, content formats, and request configurations.
    Last updated -
    66
    8
    TypeScript
    MIT License
    • Apple
    • Linux
  • A
    security
    F
    license
    A
    quality
    An MCP server implementation that enables interaction with the Unstructured API, providing tools to list, create, update, and manage sources, destinations, and workflows.
    Last updated -
    39
    25
    • Apple
  • -
    security
    A
    license
    -
    quality
    An MCP server that enables web searches using a SearxNG instance, allowing MCP-compatible applications like Goose to perform internet searches.
    Last updated -
    Python
    GPL 3.0

View all related MCP servers

ID: 7nib9sub9y