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

Creador de aplicaciones Goose

Este servidor MCP (Protocolo de contexto de modelo) permite a los usuarios crear, administrar y servir aplicaciones web a través de Goose, que utilizan Goose para llamadas de API, acceso a datos y más.

Instalar

haga clic aquí para instalar en goose 🪿 🪿🪿🪿🪿🪿🪿🪿🪿🪿🪿

Características

  • Crear nuevas aplicaciones web a partir de instrucciones básicas
  • Almacene las aplicaciones en el directorio ~/.config/goose/app-maker-apps (cada aplicación en su propio subdirectorio)
  • Servir aplicaciones web localmente bajo demanda
  • Abra las aplicaciones web en el navegador predeterminado (y sin cromo si es posible)
  • Enumera todas las aplicaciones web disponibles
  • Crear aplicaciones que puedan usar Goose como un backend genérico.

Ejemplos

Cargar datos a través de Goose (reutilizando sus extensiones)

Goose realiza un seguimiento de tus aplicaciones:

Crea aplicaciones a pedido

Mostrar también datos tabulares o de lista enriquecidos

Uso de la fuente

p.ej. en ganso:

# Run directly from source uv --directory $PWD run python main.py

IMPORTANTE: este MCP debe ejecutarse en la aplicación de escritorio Goose en este momento (ya que accede a goose-server/goosed)

Construcción y publicación

Opcional: Construir en un entorno limpio utilizando rayos UV.

uv venv .venv source .venv/bin/activate uv pip install build python -m build

Publicación

  1. Actualizar la versión en pyproject.toml :
[project] version = "x.y.z" # Update this
  1. Construya el paquete:
# Clean previous builds rm -rf dist/* python -m build
  1. Publicar en PyPI:
# Install twine if needed uv pip install twine # Upload to PyPI python -m twine upload dist/*

Cómo funciona

Este MCP ofrece aplicaciones, pero también les permite hablar con Goose a través de Goosed y su propia sesión:

Descripción general

El sistema implementa un patrón de solicitud-respuesta asíncrono y sin bloqueo que permite a las aplicaciones web enviar solicitudes a Goose y recibir respuestas sin bloquear el hilo principal. Esto se logra mediante una combinación de:

  1. Un punto final de bloqueo en el lado del servidor
  2. JavaScript asincrónico en el lado del cliente
  3. Un mecanismo de almacenamiento de respuestas con sincronización de subprocesos

Estructura de la aplicación web

Las aplicaciones web se crean (o descargan) a petición, basándose en recursos o plantillas. Cada aplicación web se almacena en su propio directorio, en ~/.config/goose/app-maker-apps con la siguiente estructura:

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

El archivo goose-app-manifest.json contiene metadatos sobre la aplicación, incluidos:

  • nombre: Nombre para mostrar de la aplicación
  • tipo: Tipo de aplicación (por ejemplo, "estática", "reacción", etc.)
  • Descripción: Breve descripción de la aplicación.
  • creado: Marca de tiempo cuando se creó la aplicación
  • archivos: Lista de archivos en la aplicación

1. Flujo de solicitud del lado del cliente

Cuando un cliente quiere obtener una respuesta de Goose:

┌─────────┐ ┌─────────────────┐ ┌───────────────┐ ┌──────────────┐ │ User │────▶│ gooseRequestX() │────▶│ Goose API │────▶│ waitForResp- │ │ Request │ │ (text/list/ │ │ (/reply) │ │ onse endpoint │ └─────────┘ │ table) │ └───────────────┘ └──────────────┘ └─────────────────┘ │ ▲ │ │ │ └────────────────────────────────────────────┘ Response
  1. El usuario inicia una solicitud (por ejemplo, al hacer clic en "Obtener respuesta de la lista")
  2. El cliente llama a una de las funciones de solicitud ( gooseRequestText , gooseRequestList o gooseRequestTable ).
  3. La función genera un responseId único y envía una solicitud a Goose con instrucciones para llamar app_response con este ID
  4. Luego, la función llama waitForResponse(responseId) que sondea el punto final /wait_for_response/{responseId}
  5. Este punto final se bloquea hasta que la respuesta esté disponible o se produzca un tiempo de espera.
  6. Cuando la respuesta está disponible, se devuelve al cliente y se muestra.

2. Procesamiento del lado del servidor

En el lado del servidor:

┌─────────────┐ ┌─────────────┐ ┌───────────────┐ │ HTTP Server │────▶│ app_response│────▶│ response_locks│ │ (blocking │ │ (stores │ │ (notifies │ │ endpoint) │◀────│ response) │◀────│ waiters) │ └─────────────┘ └─────────────┘ └───────────────┘
  1. El punto final /wait_for_response/{responseId} usa variables de condición para bloquear hasta que haya una respuesta disponible
  2. Cuando Goose procesa la solicitud, llama a la función app_response con los datos de respuesta y el responseId
  3. La función app_response almacena la respuesta en el diccionario app_responses y notifica a todos los hilos en espera mediante la variable de condición.
  4. Luego, la solicitud HTTP bloqueada se desbloquea y devuelve la respuesta al cliente.

3. Sincronización de subprocesos

El sistema utiliza threading.Condition de Python.Condición para la sincronización de subprocesos:

  1. Cuando un cliente solicita una respuesta que aún no está disponible, se crea una variable de condición para ese responseId
  2. El hilo del controlador HTTP espera esta condición con un tiempo de espera (30 segundos)
  3. Cuando la respuesta esté disponible, se notifica la condición.
  4. Si el tiempo de espera expira antes de que la respuesta esté disponible, se devuelve un error.

Componentes clave

Funciones del lado del cliente

  • gooseRequestText(query) : solicita una respuesta de texto
  • gooseRequestList(query) : solicita una respuesta de lista
  • gooseRequestTable(query, columns) : solicita una respuesta de tabla con las columnas especificadas
  • waitForResponse(responseId) : espera una respuesta con el ID dado

Funciones del lado del servidor

  • app_response(response_id, string_data, list_data, table_data) : almacena una respuesta y notifica a los que esperan
  • Controlador HTTP con punto final /wait_for_response/{responseId} : se bloquea hasta que la respuesta esté disponible
-
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.

Este servidor MCP permite a los usuarios crear, administrar y servir aplicaciones web a través de Goose, almacenando aplicaciones en directorios configurables y brindando capacidades de servicio de aplicaciones web.

  1. Instalar
    1. Características
    2. Ejemplos
    3. Uso de la fuente
    4. Construcción y publicación
  2. Cómo funciona
    1. Descripción general
    2. Componentes clave

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