Skip to main content
Goose’s extension system allows you to add custom tools and capabilities to your AI agent through the Model Context Protocol (MCP). Extensions can be built-in, command-line (stdio), or remote (HTTP).

Extension Types

Built-in Extensions

Built-in extensions are bundled with Goose and provide core functionality:
  • developer - Code editing and shell access
  • autovisualiser - Data visualization and UI generation
  • computercontroller - Web scraping, file caching, and automation
  • memory - Persistent memory storage and retrieval
  • tutorial - Interactive tutorials and guides

Stdio Extensions

Stdio extensions run as local command-line processes that communicate over stdin/stdout using the MCP protocol.
goose session --with-extension "npx -y @block/gdrive"

Streamable HTTP Extensions

Remote extensions communicate over HTTP using MCP Streamable HTTP protocol.
goose session --with-streamable-http-extension "http://localhost:8000/messages"

Configuration

Extensions are configured in your ~/.config/goose/config.yaml file:
extensions:
  developer:
    enabled: true
    config:
      type: platform
      name: developer
      description: Code editing and shell access

  my-custom-tool:
    enabled: true
    config:
      type: stdio
      name: my-custom-tool
      cmd: npx
      args: ["-y", "@my/tool"]
      description: My custom tool
      timeout: 120

Using Extensions

In CLI Sessions

Enable extensions for a session:
# Use built-in extension
goose session --with-builtin developer

# Use multiple extensions
goose session --with-builtin developer,memory

# Use stdio extension
goose session --with-extension "npx -y @block/gdrive"

# Use without profile defaults
goose session --no-profile --with-builtin developer

In Configuration

Add extensions interactively:
goose configure
# Select: Add Extension
Toggle enabled extensions:
goose configure
# Select: Toggle Extensions

Extension Discovery

Goose discovers extension tools automatically through the MCP protocol. Each extension exposes:
  • Tools - Functions the AI can call
  • Resources - Data the extension can provide
  • Prompts - Pre-defined instruction templates
The AI agent can see and use all tools from enabled extensions.

Environment Variables

Extensions can use environment variables for configuration:
extensions:
  gdrive:
    enabled: true
    config:
      type: stdio
      name: gdrive
      cmd: npx
      args: ["-y", "@block/gdrive"]
      env_keys:
        - GOOGLE_API_KEY
      description: Google Drive integration
Secrets are stored securely in your system keyring.

Timeouts

Set custom timeouts for long-running operations:
# Set timeout in CLI
goose session --with-streamable-http-extension "http://localhost:8000 timeout=300"
In config:
config:
  timeout: 300  # seconds
Default timeout is 120 seconds.

Container Support

Run extensions inside Docker containers:
goose session --container my-container-id --with-builtin developer
The extension must be available inside the container. For built-in extensions, Goose must be installed in the container.

See Also

Build docs developers (and LLMs) love