Goose MCP Setup: Add a Remote Extension and Sign In
Connect a remote server as a goose MCP extension: the streamable_http config.yaml keys, goose configure, OAuth sign-in, permission modes and real costs.
Tarun Khatri
Published · Updated · 6 min read
Goose MCP setup for a remote server is one streamable_http extension, added with goose configure, the desktop app or config.yaml.
This guide adds Weir, so goose can search X (Twitter) and read posts, threads and profiles. Weir only reads, so it never posts as you. We run Weir.
extensions:
weir:
name: Weir
type: streamable_http
uri: https://api.weirapp.io/mcp
enabled: true
timeout: 300
Goose MCP config: add Weir from the CLI or the app
You need goose and a free Weir account. We read goose 1.56.0, released 23 October 2026: its docs and its source.
Goose now lives at aaif-goose/goose on GitHub, and the old block/goose address redirects there.
- Run goose configurePick Add Extension, then Remote Extension (Streamable HTTP).
- Answer the promptsName weir, URI https://api.weirapp.io/mcp, timeout 300, a short description, no headers.
- Start a sessionGoose connects, gets a 401 and opens your browser.
- Approve WeirSign in to Weir and approve. Goose keeps the token in its secret store.
- Ask the free question"What's my Weir usage?" calls weir__get_usage, which costs nothing.
In goose Desktop, open the sidebar, click Extensions, then Add custom extension. Pick the Streamable HTTP type and paste the URL as the Endpoint. Weir's coding agent docs also have a one-click install link.
Where is goose's config.yaml? It's ~/.config/goose/config.yaml on macOS and Linux. Windows keeps it in %APPDATA%\Block\goose\config\config.yaml.
Goose MCP config keys for a remote extension
Goose 1.56.0 reads these keys on a streamable_http entry, besides name and enabled:
| Key | Weir's value | What it does |
|---|---|---|
type |
streamable_http |
The only remote type; SSE is gone |
uri |
https://api.weirapp.io/mcp |
The endpoint |
headers |
Authorization with a key |
Only for the key route below |
env_keys |
[WEIR_API_KEY] |
Variables the headers may read |
timeout |
300 |
Seconds to wait; 300 by default |
available_tools |
[search_x, get_usage] |
Loads only these tools; empty loads all |
Rather use a key? It suits machines where nobody can click through a browser. Create one under API keys in your Weir dashboard, export it as WEIR_API_KEY, and edit the YAML:
extensions:
weir:
name: Weir
type: streamable_http
uri: https://api.weirapp.io/mcp
headers:
Authorization: "Bearer ${WEIR_API_KEY}"
env_keys: [WEIR_API_KEY]
enabled: true
timeout: 300
Goose fills in ${WEIR_API_KEY} from your environment or its secret store, so the key stays out of the file. goose configure saves header values as typed and sets no env_keys, so edit the YAML for this route.
Does goose support OAuth for remote MCP servers?
Yes. Goose connects without a token first, and when the server answers 401, it starts the sign-in.
- There's no client ID to paste. Goose names itself with a metadata file on goose-docs.ai, which Weir accepts, so the consent screen says goose.
- The callback is local. Goose listens on
127.0.0.1and waits 5 minutes for your browser. - Tokens stay out of config.yaml. They go in goose's secret store: your keyring, or
secrets.yamlwhen there's none. - Leave
client_idout. It's for servers that need a pre-registered client, and Weir doesn't.
The link shows as "goose (MCP)" under API keys in your Weir dashboard. Revoke it there to cut goose off.
How goose names and approves MCP tools
Goose puts the extension's key in front of each tool, so Weir's search becomes weir__search_x. Filters like available_tools take the plain name.
Your goose mode decides whether that call needs your OK:
| Mode | /mode value |
Weir calls |
|---|---|---|
| Completely Autonomous (default) | auto |
Run without asking |
| Manual Approval | approve |
Ask every time |
| Smart Approval | smart_approve |
Run without asking |
| Chat Only | chat |
No tools at all |
Why does Smart Approval let Weir through? Weir marks its data tools read-only, and goose 1.56.0 approves read-only tools in that mode by itself.
Trim the list with available_tools. Goose's docs say it works best with fewer than 25 tools in total, and Weir lists 44 on a default sign-in.
Can goose read X (Twitter)? A worked task
Yes. Say you want goose's latest news before you upgrade. Ask:
Use weir: what's the latest @goose_oss post on X? Skip replies and reposts.
Goose should call weir__search_x. We ran that call through Weir's MCP server on 24 October 2026:
→ search_x {"fromUsers": ["goose_oss"], "query": "-filter:nativeretweets",
"onlyOriginal": true, "since": "2026-10-01T00:00:00Z", "limit": 1}
← 1 post · 2 credits (1 + 1 × 1) · nextCursor set
Oct 6 19 likes 1,493 views "What's taking so long in your goose session?"
The post links a community guide to goose's built-in OpenTelemetry tracing. X search returns reposts by default, so -filter:nativeretweets drops them, and onlyOriginal drops replies.
Weir bills 1 credit per call plus 1 per X post, and failed calls are free. Packs start at $5 for 25,000 credits and never expire, as of October 2026. See every rate on our pricing page.
What we haven't tested
We didn't install goose here. This guide comes from goose's docs and source, plus a real call through Weir's MCP server.
- Goose's sign-in against Weir. Weir supports the metadata file goose uses, but we haven't clicked through it.
- The desktop app and the install link. We read their code, not the screens.
If it doesn't work
- Weir never loads. Check the key is
uri. Goose logs "Skipping malformed extension config entry" and moves on. - An old SSE entry fails. Goose dropped
type: sse, so change it tostreamable_http. - The browser doesn't open. Goose prints the sign-in link, so open it on the same machine. Over SSH, use a key.
- "Failed to fetch secret". A name in
env_keysisn't set in goose's environment or secret store. - A tool returns
402. Your Weir credits ran out, and retrying won't help.
When not to use Weir
- Goose has to post, reply or DM. Weir is read-only.
- You want private data. Weir reads public posts, not your bookmarks, DMs or home timeline.
- Price per post matters most. TwitterAPI.io lists $0.15 per 1,000 tweets as of October 2026, less than our $5 pack.
- You need a guarantee. Weir isn't licensed by X or affiliated with it, so access can change.
FAQ
Where is the goose MCP config?
In config.yaml, under extensions: ~/.config/goose/config.yaml on macOS and Linux, or %APPDATA%\Block\goose\config\config.yaml on Windows. Tool permissions live next to it, in permission.yaml.
Is goose an MCP client?
Yes. Goose is the client, and each extension is an MCP server. It ships built-in ones, like Developer, and takes any other server as a custom extension.
How do I try a goose MCP server for one session?
Run goose session --with-streamable-http-extension "https://api.weirapp.io/mcp". Goose loads the server for that session, and you can add it to config.yaml later.
Can goose post to X through Weir?
No. Weir only reads public X data, so nothing can post, like or follow through it.
Sources
All checked on 24 October 2026:
- Goose v1.56.0 release (23 October 2026): https://github.com/aaif-goose/goose/releases/tag/v1.56.0
- Goose docs, using extensions: https://goose-docs.ai/docs/getting-started/using-extensions/
- Goose v1.56.0 docs, read for config paths, keys, permission modes and tool permissions:
- https://github.com/aaif-goose/goose/blob/v1.56.0/documentation/docs/guides/config-files.md
- https://github.com/aaif-goose/goose/blob/v1.56.0/documentation/docs/guides/managing-tools/goose-permissions.md
- https://github.com/aaif-goose/goose/blob/v1.56.0/documentation/docs/guides/managing-tools/tool-permissions.md
- Goose v1.56.0 source, read for the entry's keys, sign-in, tool names and approvals:
- https://github.com/aaif-goose/goose/blob/v1.56.0/crates/goose/src/agents/extension.rs
- https://github.com/aaif-goose/goose/blob/v1.56.0/crates/goose/src/config/extensions.rs
- https://github.com/aaif-goose/goose/blob/v1.56.0/crates/goose/src/config/paths.rs
- https://github.com/aaif-goose/goose/blob/v1.56.0/crates/goose-cli/src/commands/configure.rs
- https://github.com/aaif-goose/goose/blob/v1.56.0/crates/goose/src/agents/extension_manager/streamable_http.rs
- https://github.com/aaif-goose/goose/blob/v1.56.0/crates/goose/src/oauth/mod.rs
- https://github.com/aaif-goose/goose/blob/v1.56.0/crates/goose/src/agents/extension_manager/mod.rs
- https://github.com/aaif-goose/goose/blob/v1.56.0/crates/goose/src/permission/permission_inspector.rs
- TwitterAPI.io pricing: https://twitterapi.io/pricing
- Weir docs, MCP and coding agents: https://docs.weirapp.io/mcp and https://docs.weirapp.io/mcp-coding-agents
- Weir billing: https://docs.weirapp.io/billing
- Weir search_x call, run 24 October 2026 (request 64fca97b-956e-44ba-83ec-2fd0f446f1b6)