MCP Roots
MCP Roots lets goose share your session working directory with roots-aware MCP extensions.
This helps extensions understand which folder to use as the active workspace for the current session.
MCP Roots is a feature in the Model Context Protocol. goose automatically enables it for MCP extensions that support roots.
How MCP Roots Works
When goose connects to an MCP extension, it advertises roots support during MCP initialization.
An extension that supports roots can then:
- Request the current root list from goose
- Treat that root as the active workspace boundary
- React if the root changes during the session
In goose, the root list currently contains one entry:
- Your current session working directory
If you change the session working directory, goose updates the root and notifies connected extensions automatically.
Using MCP Roots
There is no separate "Roots" settings screen in goose. MCP Roots follows the working directory you are already using for the session.
- goose Desktop
- goose CLI
In goose Desktop, the current working directory appears at the bottom of the chat window.
- Click the directory display to choose a different folder
- goose updates the session working directory
- Connected roots-aware extensions receive the updated root automatically
To change directories:
- Click the button if needed and open a session
- Use the directory control shown at the bottom of the chat window
- Pick the folder you want goose and your extensions to work in
In goose CLI, the session root follows the directory where you launch goose.
- Start goose from the project folder you want to work in
- When resuming a session, goose may prompt you to switch back to that session's original working directory
This means roots-aware extensions see the same workspace directory that goose is already using in the CLI.
What Extensions Use It For
MCP Roots is useful for extensions that need to work with local files or understand your project structure.
Without roots, an extension may need to guess which folder you mean or rely on custom configuration. With roots, goose can tell the extension which directory is currently in scope for the session.
For example, an extension can use roots to:
- Discover the active project directory
- Scope file operations to your current workspace
- Avoid guessing which repository or folder you meant
- Update its behavior when you switch to a different project
Current Limitations
goose currently exposes a single root per session rather than a multi-folder workspace. For most workflows, this maps cleanly to how goose already works: one active project directory at a time.
If you want an extension to work in a different location, change the session working directory first.
For Extension Developers
If you're building an MCP extension for goose, support for roots allows your extension to discover the active workspace directory in a standard way instead of relying on custom configuration.
For protocol details, see the MCP Roots specification.