MCP Directory

Best MCP Servers for Goose (2026)

Six MCP servers worth adding to Goose as extensions — plus the config.yaml path and the tool math that decides how many you can run.

Hua·June 30, 2026·6 min read
A cozy workspace featuring a laptop displaying code, a smartphone, and a cute orange plush toy on the desk.
Photo by Daniil Komov on Pexels

The best MCP servers for Goose are the few that earn their tool budget: GitHub's official server, a docs server that grounds the model, and one data server for whatever you actually query. Goose calls MCP servers "extensions," and because it's a real agent that plans and executes, extra half-useful tools hurt more here than in a chat client — the model picks the wrong one and burns a turn. So the question isn't "which extensions exist," it's "which three or four are worth the slots."

This is the opinionated shortlist for Block's open-source Goose, with the exact config path, honest trade-offs, and what to skip. Every server here is real and linked, and every one runs cleanly as a Goose extension over stdio or a remote URL.

Where Goose reads MCP config (do this first)

Goose stores extensions in ~/.config/goose/config.yaml (on Windows, %APPDATA%\Block\goose\config\config.yaml). Each MCP server is an entry under the extensions: key. Goose supports three transports: stdio for local servers, and sse or streamable_http for remote ones — so you can mix a local Docker server and a hosted URL in the same file.

The cleanest way to add one is goose configure → Add Extension, which prompts for the command and any environment variables. If you'd rather edit by hand, a minimal local (stdio) entry looks like this:

extensions:
  github:
    name: GitHub
    type: stdio
    cmd: docker
    args: [run, -i, --rm, -e, GITHUB_PERSONAL_ACCESS_TOKEN, ghcr.io/github/github-mcp-server]
    envs:
      GITHUB_PERSONAL_ACCESS_TOKEN: ghp_...
    enabled: true
    timeout: 300

A remote server is simpler — type: sse (or streamable_http), a url, and optional headers for an auth token. Goose's own built-in tools use type: builtin; leave those alone. The general steps are in how to add an MCP server, and you can generate a valid block with the config generator.

The tool budget: why three servers, not thirty

Agents degrade past roughly 40 active tools, and the average MCP server exposes about 12 — so you hit the wall at three or four extensions, not fifty. Past that, Goose has too many near-identical tools and starts calling the wrong one, which reads like the model got dumber but is really a config problem. The tool-limit math is written for Cursor, but the arithmetic is the same for any agent, Goose included.

So treat slots as scarce. Every server below does one job the others don't, and most run locally over stdio — as ≈90% of MCP servers do — which keeps latency low and your code off someone else's logs. When in doubt, fewer focused extensions beat one do-everything pile.

The shortlist: MCP servers worth adding to Goose

Start with a code server, a context server, and one data server. Add a fourth only if you'll use it weekly.

ServerBest forTransport in GooseAdd it if
GitHub MCP ServerRepos, issues, PRs, Actionsstdio (Docker) or remoteYou do PR/issue work from Goose
GitMCPLive docs for any reposse (remote, free)You want fewer hallucinated APIs
OctocodeDeep code research (FS + LSP)stdioYou investigate large codebases
Package Registry MCPNPM/PyPI/crates versions + advisoriesstdioYou get burned by stale package data
AnyquerySQL over files, DBs, 40+ appsstdioYou query structured data often
Graphlit MCP ServerRAG over Slack/Drive/Jira/LinearremoteYour context lives across SaaS tools

The one everyone should have: GitHub

The GitHub MCP Server is GitHub's official server, and "official" earns its slot — it tracks the API and won't quietly break the way abandoned community forks do. It covers repos, issues, PRs, and Actions, running locally in Docker or as a hosted remote. The trade-off: it's tool-heavy, so it eats a real chunk of your budget. If you only read issues, scope the PAT tightly and don't enable every toolset — Goose lets you disable an extension without deleting it, so trim it down.

Cut hallucinations: GitMCP

GitMCP turns any GitHub repo into a live documentation source, which is the cheapest fix for Goose inventing method signatures. It's a free remote server, so there's nothing to install — add it as an sse extension with the URL and you're done. I reach for this over pasting a whole SDK into context: it grounds Goose on the actual repo docs instead of the model's stale memory. Skip it only if you already run a broader RAG server.

Go deep on code: Octocode

Octocode is the pick when search isn't enough and you need to trace how code actually works. It wires GitHub, the local filesystem, and LSP intelligence into Goose, so the agent can follow definitions and references like a staff engineer reading unfamiliar code. It overlaps with the GitHub server, so run both only if you do heavy investigation — otherwise this replaces it.

Stop trusting stale package data: Package Registry

The Package Registry MCP Server searches NPM, PyPI, crates.io, NuGet, and Go registries — plus GitHub Security Advisories — for current versions. The model's training data is months old; this makes "what's the latest and is it vulnerable" a live lookup instead of a guess. It's small on tools, so it's an easy fourth slot that won't blow your budget.

One data server, chosen by your workflow

Pick exactly one. Anyquery runs SQL over files, databases, and 40+ apps (GitHub, Notion, Chrome, Todoist) and exposes them to Goose over MCP — reach for it if you think in queries. Graphlit MCP Server is the RAG option: ingest and search across Slack, Discord, Google Drive, Jira, and Linear when your real context is scattered across SaaS. Running both is how you blow the budget.

What to skip

Skip the kitchen-sink bundles. Extensions that expose 30+ tools each will swallow your entire budget in two installs and tank Goose's tool selection — the exact failure the tool math predicts.

Skip duplicate coverage. GitHub plus Octocode plus a third code server means three overlapping tool sets competing for the same call. Pick the one that matches how you work, and disable the rest.

Skip community forks of things that have an official server. When an official option exists, the maintenance and security story is simply better — check the official-vs-community badge before adding anything. For ranked options by category, the best MCP servers list and best servers for coding agents do the sorting.

My default Goose stack

For most engineers: GitHub (official) + GitMCP (docs) + Package Registry (versions) + one data server. That's four extensions, comfortably under the ~40-tool ceiling, each doing a distinct job. Swap Octocode in for the GitHub server if your day is code archaeology rather than PR work. Add nothing else until you hit a real gap — then disable one extension before you enable the next.

FAQ

Are these MCP servers for Goose free and safe to use?

Most are free: GitMCP is a free hosted remote, and the GitHub, Octocode, Package Registry, and Anyquery servers are open and run locally as stdio extensions. Safety comes down to two things — prefer official servers over community forks, and scope any access token (like a GitHub PAT) to the minimum permissions. Because ≈90% of MCP servers run locally over stdio, your prompts and code usually stay on your machine rather than a third party's.

How many MCP servers can I run in Goose at once?

Practically three to four. Any agent's tool selection degrades past roughly 40 active tools, and the average server exposes about 12, so four extensions is the ceiling before quality drops. Fewer focused extensions beat one do-everything setup — and Goose lets you disable an extension without deleting it, so trim before you add.

Where does Goose store MCP server configuration?

Goose reads extensions from ~/.config/goose/config.yaml (or %APPDATA%\Block\goose\config\config.yaml on Windows). Each MCP server is an entry under the extensions: key, with type: stdio for local servers and type: sse or streamable_http for remote ones. The easiest way to add one is running goose configure and choosing Add Extension.

Do I need Docker to add MCP servers to Goose?

No. Docker is one convenient way to run the GitHub server, but Goose runs any command you point it at — uvx, npx, a binary — via the cmd and args fields of a stdio extension. Remote servers like GitMCP need nothing installed at all: add them as an sse extension with just a URL.

Which single MCP server should I add to Goose first?

The official GitHub MCP Server, if you touch repos at all. It's maintained by GitHub so it tracks the API, and it covers issues, PRs, and Actions from inside Goose. Add GitMCP next as a free remote extension to ground the model on real docs and cut hallucinated API calls.

Put this into practice

Browse MCP servers by capability, or check your own setup's tool budget and security.

More essays