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(模型上下文协议)服务器允许用户通过 Goose 创建、管理和提供 Web 应用程序,利用 Goose 进行 API 调用、数据访问等。

安装

单击此处安装鹅🪿🪿🪿🪿🪿🪿🪿🪿🪿🪿

特征

  • 根据基本指令创建新的 Web 应用程序
  • 将应用程序存储在~/.config/goose/app-maker-apps目录中(每个应用程序都在其自己的子目录中)
  • 按需在本地提供 Web 应用程序
  • 在默认浏览器中打开 Web 应用程序(如果可能的话,使用无边框浏览器)
  • 列出所有可用的 Web 应用程序
  • 制作可以使用 goose 作为通用后端的应用程序

示例

通过 goose 加载数据(重新使用其扩展)

goose 会跟踪您的应用程序:

按需制作应用程序

还显示丰富的表格或列表数据

来源使用情况

例如鹅:

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

重要提示:此 MCP 目前需要在 goose 桌面应用中运行(因为它访问 goose-server/goosed)

构建和发布

可选:使用紫外线在干净的环境中构建

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 对话:

概述

该系统实现了非阻塞、异步的请求-响应模式,允许 Web 应用程序向 Goose 发送请求并接收响应,而不会阻塞主线程。这是通过以下方式实现的:

  1. 服务器端的阻塞端点
  2. 客户端的异步 JavaScript
  3. 一种线程同步的响应存储机制

Web 应用程序结构

Web 应用是根据请求基于资源/模板制作(或下载)的。每个 Web 应用都存储在~/.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:应用程序的显示名称
  • 类型:应用程序的类型(例如“静态”,“反应”等)
  • 描述:应用程序的简要描述
  • created:应用程序创建的时间戳
  • 文件:应用程序中的文件列表

1. 客户端请求流程

当客户希望得到 Goose 的回应时:

┌─────────┐ ┌─────────────────┐ ┌───────────────┐ ┌──────────────┐ │ User │────▶│ gooseRequestX() │────▶│ Goose API │────▶│ waitForResp- │ │ Request │ │ (text/list/ │ │ (/reply) │ │ onse endpoint │ └─────────┘ │ table) │ └───────────────┘ └──────────────┘ └─────────────────┘ │ ▲ │ │ │ └────────────────────────────────────────────┘ Response
  1. 用户发起请求(例如点击“获取列表响应”)
  2. 客户端调用其中一个请求函数( gooseRequestTextgooseRequestListgooseRequestTable
  3. 该函数生成一个唯一的responseId并向Goose发送一个请求,指示其使用该ID调用app_response
  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. 来源使用情况
    4. 构建和发布
  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