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:
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.
Publicación
- Actualizar la versión en
pyproject.toml
:
- Construya el paquete:
- Publicar en PyPI:
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:
- Un punto final de bloqueo en el lado del servidor
- JavaScript asincrónico en el lado del cliente
- 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:
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:
- El usuario inicia una solicitud (por ejemplo, al hacer clic en "Obtener respuesta de la lista")
- El cliente llama a una de las funciones de solicitud (
gooseRequestText
,gooseRequestList
ogooseRequestTable
). - La función genera un
responseId
único y envía una solicitud a Goose con instrucciones para llamarapp_response
con este ID - Luego, la función llama
waitForResponse(responseId)
que sondea el punto final/wait_for_response/{responseId}
- Este punto final se bloquea hasta que la respuesta esté disponible o se produzca un tiempo de espera.
- Cuando la respuesta está disponible, se devuelve al cliente y se muestra.
2. Procesamiento del lado del servidor
En el lado del servidor:
- El punto final
/wait_for_response/{responseId}
usa variables de condición para bloquear hasta que haya una respuesta disponible - Cuando Goose procesa la solicitud, llama a la función
app_response
con los datos de respuesta y elresponseId
- La función
app_response
almacena la respuesta en el diccionarioapp_responses
y notifica a todos los hilos en espera mediante la variable de condición. - 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:
- Cuando un cliente solicita una respuesta que aún no está disponible, se crea una variable de condición para ese
responseId
- El hilo del controlador HTTP espera esta condición con un tiempo de espera (30 segundos)
- Cuando la respuesta esté disponible, se notifica la condición.
- 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 textogooseRequestList(query)
: solicita una respuesta de listagooseRequestTable(query, columns)
: solicita una respuesta de tabla con las columnas especificadaswaitForResponse(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
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.
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.
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