mcps: block. For the conceptual model, see Concepts → MCP servers.
Filesystem server (inline)
Server with environment variables
${GITHUB_TOKEN} is not expanded by gaal, the literal string ${GITHUB_TOKEN} is written into the JSON. The agent process is responsible for resolving environment variables when it launches the server. See Environment & secrets.
Same server, multiple agents
Each entry has exactly onetarget. Repeat the entry per target file:
Pull config from a remote URL
mcpServers object. gaal downloads it and merges the named entry into the target.
source: and inline: are mutually exclusive.
VS Code (Copilot, Cline, Roo)
VS Code MCP entries live under the workspace or usersettings.json:
mcpServers key while leaving every other VS Code setting in place.
Common targets
| Agent | Canonical target |
|---|---|
| Claude Desktop | ~/.config/claude/claude_desktop_config.json |
| Cursor | ~/.cursor/mcp.json |
| Codex | ~/.codex/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_settings.json |
| Continue | ~/.continue/config.json |
| VS Code (Copilot, Cline, Roo) | ~/.vscode/settings.json |
| Goose | ~/.config/goose/config.yaml |
Removing an entry
Removing anmcps[] entry from gaal.yaml does not remove it from the target file unless you pass --prune. Without --prune, gaal stops managing it but leaves the JSON intact.