Goose is Block’s open-source agent, and it was designed around MCP from the beginning rather than having support bolted on later. That shows in the setup: remote streamable HTTP extensions are a first-class concept, so ContextBolt SEO connects without a bridge or a proxy.
The easy route: goose configure
Run goose configure, choose Add Extension, then Remote Extension (Streamable HTTP). Give it the name contextbolt-seo and paste your MCP URL as the URI.
This is worth doing even if you are comfortable in YAML, because it writes the correct field names for you and Goose has two that catch people out.
The config.yaml entry
Use https://seo.contextbolt.app/mcp and complete the browser sign-in if your client supports remote MCP with OAuth. Enter your SEO account email and email code, then allow the connection. For a client that cannot complete that flow, use the personal-URL compatibility configuration shown here. Copy the full private URL from your ContextBolt SEO welcome email and replace the example URL with it.
If you would rather edit it directly, open ~/.config/goose/config.yaml:
extensions:
contextbolt-seo:
enabled: true
type: streamable_http
name: contextbolt-seo
description: Live keyword, SERP, and competitor data
uri: https://seo.contextbolt.app/mcp/YOUR_TOKEN
timeout: 60
Two field names matter. Goose uses uri, where almost every other MCP client uses url. And it uses streamable_http with an underscore, where JetBrains uses a hyphen and VS Code just says http.
Both describe exactly the same thing, which is what makes them dangerous. A config copied from a working Cursor or VS Code setup looks right, parses fine, and produces no tools. If the extension shows as enabled and nothing appears, check those two lines before anything else.
Run goose info -v after any hand edit to confirm the file still parses.
If you use Berd, this page is still the one you want
Berd is Block’s desktop app for working with AI agents, open-sourced on August 18, 2026 under Apache 2.0. It is not a separate agent. It bundles a pinned Goose binary as a sidecar and talks to it over the Agent Client Protocol, so the thing running your tools is Goose.
That has a practical consequence worth knowing before you set anything up. Berd reads and writes the same config.yaml Goose does, at Goose’s own config directory. So the ContextBolt SEO extension is not something you add twice. Add it in either place and it is there in both.
- Already set it up in the Goose CLI? Open Berd and it is there. Nothing else to do.
- Starting in Berd? Add it through Berd’s own extensions UI, or run
goose configureand restart Berd.
The two field-name gotchas above apply exactly the same way, because it is the same file. uri, not url. streamable_http with an underscore.
Why the terminal suits SEO work
Goose runs where your project runs, which makes the research loop unusually tight. You ask what a page should target, the answer comes back in the terminal, and the lookup lands on your SEO Dashboard so it is still there tomorrow.
Plan a page: keyword research plus difficulty, before a word is written.
Find the gaps: competitor_keywords names the rivals, then ranked_keywords on your site and theirs shows what they rank for and you do not, which is usually the fastest way to fill a content backlog.
Audit what shipped: page_audit against a live URL returns a fix list you can work through in the same session.
Read your own data free: the Search Console tools never spend credits, so checking what moved this month costs nothing.
Because your MCP URL carries a personal token, treat config.yaml like any other file holding a credential. The full tour of tools is in the ContextBolt SEO guide, and the background on how an SEO MCP server works is worth reading first if this is new.
Claude Code
Codex
Muse Code
Cursor
ChatGPT
Windsurf
Gemini CLI
Antigravity
VS Code
Cline
n8n