Skip to main content
Glama

app_create

Generate a web application directory with starter files for quick setup. Includes a utility for API calls via Goose. Customize content or replace with existing HTML, CSS, or JS files.

Instructions

Create a new web application directory and copy starter files. The starter files are for you to replace with actual content, you don't have to use them as is. the goose_api.js file is a utility you will want to keep in case you need to do api calls as part of your app via goose. Args: app_name: Name of the application (will be used as directory name) description: Brief description of the application (default: "") Returns: A dictionary containing the result of the operation After this, consider how you want to change the app to meet the functionality, look at the examples in resources dir if you like. Or, you can replace the content with existing html/css/js files you have (just make sure to leave the goose_api.js file in the app dir) Use the app_error tool once it is opened and user has interacted (or has started) to check for errors you can correct the first time, this is important to know it works.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
app_nameYes
descriptionNo

Implementation Reference

  • main.py:197-266 (handler)
    The handler function for the 'app_create' tool. It creates a new app directory, copies starter template files from resources/kitchen-sink, and generates a manifest file. The @mcp.tool() decorator registers it as an MCP tool. The function signature and docstring define the input schema (app_name: str, description: str optional) and output (Dict[str, Any]).
    @mcp.tool() def app_create(app_name: str, description: str = "") -> Dict[str, Any]: """ Create a new web application directory and copy starter files. The starter files are for you to replace with actual content, you don't have to use them as is. the goose_api.js file is a utility you will want to keep in case you need to do api calls as part of your app via goose. Args: app_name: Name of the application (will be used as directory name) description: Brief description of the application (default: "") Returns: A dictionary containing the result of the operation After this, consider how you want to change the app to meet the functionality, look at the examples in resources dir if you like. Or, you can replace the content with existing html/css/js files you have (just make sure to leave the goose_api.js file in the app dir) Use the app_error tool once it is opened and user has interacted (or has started) to check for errors you can correct the first time, this is important to know it works. """ global http_server, server_port if http_server: return "There is already a server running. Please stop it before creating a new app, or consider if an existing app should be modified instead." try: # Sanitize app name (replace spaces with hyphens, remove special characters) safe_app_name = "".join(c if c.isalnum() else "-" for c in app_name).lower() # Create app directory app_path = os.path.join(APP_DIR, safe_app_name) if os.path.exists(app_path): return { "success": False, "error": f"App '{safe_app_name}' already exists at {app_path}" } os.makedirs(app_path, exist_ok=True) # Copy kitchen-sink template files kitchen_sink_dir = os.path.join(RESOURCES_DIR, "kitchen-sink") copied_files = ["index.html", "style.css", "script.js", "goose_api.js"] for file_name in copied_files: src_file = os.path.join(kitchen_sink_dir, file_name) dest_file = os.path.join(app_path, file_name) shutil.copy2(src_file, dest_file) # Create manifest file manifest = { "name": app_name, "description": description, "created": time.strftime("%Y-%m-%d %H:%M:%S"), "files": copied_files } with open(os.path.join(app_path, "goose-app-manifest.json"), 'w') as f: json.dump(manifest, f, indent=2) return { "success": True, "app_name": safe_app_name, "app_path": app_path, "files": copied_files, "message": f"App '{app_name}' created successfully at {app_path}" } except Exception as e: logger.error(f"Error creating app: {e}") return {"success": False, "error": f"Failed to create app: {str(e)}"}
  • main.py:197-197 (registration)
    The @mcp.tool() decorator registers the app_create function as a tool in the FastMCP server.
    @mcp.tool()
  • Input schema defined by function parameters: app_name (required str), description (optional str). Output is Dict[str, Any]. Detailed in docstring.
    def app_create(app_name: str, description: str = "") -> Dict[str, Any]: """ Create a new web application directory and copy starter files. The starter files are for you to replace with actual content, you don't have to use them as is. the goose_api.js file is a utility you will want to keep in case you need to do api calls as part of your app via goose. Args: app_name: Name of the application (will be used as directory name) description: Brief description of the application (default: "") Returns: A dictionary containing the result of the operation

Other Tools

Related Tools

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