Extensions are add-ons that provide a way to extend the functionality of Goose by connecting with applications and tools you already use in your workflow. These extensions can be used to add new features, access data and resources, or integrate with other systems.
1. Locate the menu (...) in the top right corner of the Goose Desktop.
2. Select `Settings` from the menu.
3. Under `Extensions`, you can toggle the built-in extensions on or off.
</TabItem>
</Tabs>
:::tip
All of Goose's built-in extensions are MCP servers in their own right. If you'd like
to use the MCP servers included with Goose with any other agent, you are free to do so.
:::
## Discovering Extensions
Goose provides a [central directory][extensions-directory] of extensions that you can install and use. The page will give you a test command to try out extensions before installing them.
## Adding Extensions
Extensions can be installed directly via the [extensions directory][extensions-directory], CLI, or UI.
:::tip
For advanced users, you can also edit the `~/.config/goose/config.yaml` file directly to add an extension.
:::
<Tabs groupId="interface">
<TabItem value="cli" label="Goose CLI" default>
1. Run the following command:
```
goose configure
```
2. Select `Add Extension` from the menu.
3. Choose the type of extension you’d like to add:
- `Built-In Extension`: Use an extension that comes pre-installed with Goose.
- `Command-Line Extension`: Add a local command or script to run as an extension.
- `Remote Extension`: Connect to a remote system via SSE (Server-Sent Events).
4. Follow the prompts based on the type of extension you selected.
</TabItem>
<TabItem value="ui" label="Goose Desktop">
1. Locate the menu (...) in the top right corner of the Goose Desktop.
2. Select `Settings` from the menu.
3. Under `Extensions`, you can toggle the built-in extensions on or off.
You can install [any MCP server](https://github.com/modelcontextprotocol/servers?tab=readme-ov-file#model-context-protocol-servers) as a Goose extension.
You'll then be prompted to enter a command and any environment variables needed. For example, to connect to the [Fetch Server](https://github.com/modelcontextprotocol/servers/tree/main/src/fetch), enter `uvx mcp-server-fetch` as the command.
:::tip
You can also directly edit the resulting config entry (`~/.config/goose/config.yaml`), which would look like this:
```yaml
extensions:
fetch:
name: fetch
cmd: uvx
args: [mcp-server-fetch]
enabled: true
envs: {}
type: stdio
```
:::
</TabItem>
<TabItem value="ui" label="Goose Desktop">
1. Click `...` in the top right corner of the Goose Desktop.
2. Select `Settings` from the menu.
3. Under `Extensions`, you can add a MCP server as an extension manually by clicking on the (+) button to the right.
4. In the dialog that appears, enter the details of the MCP server including any environment variables needed.
</TabItem>
</Tabs>
## Enabling/Disabling Extensions
You can enable or disable installed extensions based on your workflow needs.
Goose extensions are implemented with MCP, a standard protocol that allows AI models and agents to securely connect with local or remote resources. Learn how to build your own [extension as an MCP server](https://modelcontextprotocol.io/quickstart/server).