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) 서버를 사용하면 사용자가 Goose를 통해 웹 애플리케이션을 만들고, 관리하고, 제공할 수 있으며, API 호출, 데이터 액세스 등에 Goose를 활용할 수 있습니다.

설치하다

여기를 클릭하여 구스에 설치하세요 🪿 🪿🪿🪿🪿🪿🪿🪿🪿🪿🪿

특징

  • 기본 지침으로 새로운 웹 애플리케이션 만들기
  • ~/.config/goose/app-maker-apps 디렉토리에 앱을 저장합니다(각 앱은 자체 하위 디렉토리에 있음)
  • 로컬에서 필요에 따라 웹 애플리케이션 제공
  • 기본 브라우저에서 웹 애플리케이션을 엽니다(가능하면 크롬리스로 실행).
  • 사용 가능한 모든 웹 애플리케이션을 나열합니다
  • Goose를 일반 백엔드로 사용할 수 있는 앱을 만듭니다.

예시

goose를 통해 데이터 로드(확장 기능 재사용)

구스는 귀하의 앱을 추적합니다:

주문형 앱 만들기

풍부한 표 또는 목록 데이터도 표시합니다.

소스에서의 사용법

예를 들어 거위의 경우:

지엑스피1

중요: 이 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: 앱의 표시 이름
  • 유형: 앱 유형(예: "정적", "반응형" 등)
  • 설명: 앱에 대한 간략한 설명
  • created: 앱이 생성된 타임스탬프
  • 파일: 앱의 파일 목록

1. 클라이언트 측 요청 흐름

클라이언트가 Goose로부터 응답을 받고 싶어할 때:

┌─────────┐ ┌─────────────────┐ ┌───────────────┐ ┌──────────────┐ │ User │────▶│ gooseRequestX() │────▶│ Goose API │────▶│ waitForResp- │ │ Request │ │ (text/list/ │ │ (/reply) │ │ onse endpoint │ └─────────┘ │ table) │ └───────────────┘ └──────────────┘ └─────────────────┘ │ ▲ │ │ │ └────────────────────────────────────────────┘ Response
  1. 사용자가 요청을 시작합니다(예: "목록 응답 가져오기" 클릭).
  2. 클라이언트는 요청 함수 중 하나( gooseRequestText , gooseRequestList 또는 gooseRequestTable )를 호출합니다.
  3. 이 함수는 고유한 responseId 생성하고 이 ID로 app_response 호출하라는 지침과 함께 Goose에 요청을 보냅니다.
  4. 그런 다음 함수는 /wait_for_response/{responseId} 엔드포인트를 폴링하는 waitForResponse(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를 통해 웹 애플리케이션을 만들고, 관리하고, 제공할 수 있으며, 구성 가능한 디렉토리에 앱을 저장하고 웹 애플리케이션 제공 기능을 제공할 수 있습니다.

  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