Skip to main content
Glama
michaelneale

Goose App Maker MCP

by michaelneale

鹅应用程序制作器

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

安装

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

特征

  • 根据基本指令创建新的 Web 应用程序

  • 将应用程序存储在~/.config/goose/app-maker-apps目录中(每个应用程序都在其自己的子目录中)

  • 按需在本地提供 Web 应用程序

  • 在默认浏览器中打开 Web 应用程序(如果可能的话,使用无边框浏览器)

  • 列出所有可用的 Web 应用程序

  • 制作可以使用 goose 作为通用后端的应用程序

Related MCP server: MCP SearxNG Search

示例

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

截图于 2025-04-28 下午 7:38 24

截图于 2025-04-28 下午 7:38:53

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 处理程序:阻塞直到响应可用

Install Server
A
security – no known vulnerabilities
F
license - not found
A
quality - A tier

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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