Skip to main content
Extensions bring external capabilities to Goose through the Model Context Protocol (MCP). They provide tools, resources, and prompts that the AI agent can use to interact with files, APIs, databases, and more.

What are Extensions?

Extensions in Goose are MCP servers that provide:
  • Tools: Functions the agent can call (read files, run commands, query APIs)
  • Resources: Context the agent can access (file contents, documentation)
  • Prompts: Reusable prompt templates
Each extension runs as an independent process, providing isolation and security.

Extension Types

Goose supports three types of extensions:

1. Built-in Extensions

Bundled with Goose, run in-process for performance:
Available built-in extensions:

developer

File operations, shell commands, and development tools
  • Read/write files
  • Execute shell commands
  • Search codebases

memory

Persistent knowledge storage across sessions
  • Store facts and learnings
  • Retrieve relevant context
  • Build knowledge graphs

computercontroller

Desktop automation (macOS)
  • Control mouse and keyboard
  • Take screenshots
  • UI automation

autovisualiser

Chart and visualization generation
  • Create charts from data
  • Generate plots
  • Data visualization

2. Stdio Extensions

External processes communicating via stdin/stdout:
Most third-party MCP servers use stdio transport.

3. SSE Extensions

HTTP-based extensions using Server-Sent Events:
Useful for:
  • Remote MCP servers
  • Cloud-hosted tools
  • Internal enterprise services

Extension Configuration

Basic Configuration

Advanced Options

Extension Manager

The Extension Manager handles the lifecycle of all extensions:

Creating Custom Extensions

MCP Server Basics

An MCP server exposes tools, resources, and prompts:

Tool Definition

Tools are defined with JSON Schema parameters:
The MCP server automatically generates JSON Schema from Python type hints:

Using the Extension

Built-in Extension: Developer

The most commonly used extension provides file and shell tools:
Example usage by the agent:

Extension Security

Environment Variable Protection

Goose blocks dangerous environment variables:
Attempting to set these variables will fail with an error.

Permission System

Tools can require user confirmation:

Malware Scanning

Goose scans downloaded extensions:

Process Isolation

Each extension runs in a separate process:

Resources (MCP)

Extensions can provide resources that the agent reads:
The agent can access resources:

Prompts (MCP)

Extensions can provide reusable prompts:
"""

Extension Discovery

Goose discovers extensions from:
  1. Built-in: Bundled extensions
  2. Config file: ~/.config/goose/config.yaml
  3. Recipe: Defined in recipe YAML
  4. Runtime: Dynamically added via API

Dynamic Extension Management

Extensions can be loaded/unloaded at runtime:

OAuth Extensions

Extensions can use OAuth for authentication:
Goose handles the OAuth flow automatically:
  1. Opens browser for user authentication
  2. Exchanges code for tokens
  3. Stores tokens securely
  4. Refreshes tokens when expired

Best Practices

Each tool should do one thing well:
The AI uses descriptions to choose tools:
Return useful error messages:
Resources are more efficient than tools for static data:
Don’t trust AI-generated arguments:

Troubleshooting

Common Issues

“Extension failed to initialize”
“Tool not found”
“Permission denied”
“Extension timeout”

Next Steps

Recipes

Configure extensions in recipes

MCP Documentation

Learn the MCP specification

Example Extensions

Build your own MCP servers

Built-in Extensions

Reference for bundled extensions