Skip to content

MCP Connection

By symptom.

Server fails to connect — stdio

Likely causeAction
command path doesn't existVerify the absolute path; check which <command> in Terminal
Command requires env vars not in configAdd to env block; use $KEYCHAIN:name for secrets
Subprocess exits immediatelyRun the command manually with the same args; read stderr
Wrong working directorySet cwd explicitly

Server fails to connect — URL

Likely causeAction
URL unreachablecurl <url> from the same machine; check firewall / proxy
Wrong transportTry sse, streamable-http, then http
TLS errorThe server's cert must be valid; self-signed certs are not accepted
Wrong header / tokenVerify the header format the server expects

OAuth flow fails to complete

Likely causeAction
Browser doesn't return to GhastSame root cause as Google OAuth — Ghast's deep-link handler may need re-registration; reinstall Ghast
Mismatched redirect URIThe OAuth provider's redirect must match Ghast's deep link
Wrong scopesVerify scopes array against the provider's documentation

Tools don't appear after connect

Likely causeAction
Server connected but failed tools/list callRestart the server; check stderr for MCP errors
Tool registration raceReopen the composer; tools refresh on open
defaultDisabled list excludes themSettings → MCP → [server] → enable in tool defaults

Tool calls return errors

Likely causeAction
Server-side error (real failure)Inspect the error card in the chat — server's message verbatim
Permission missing on the server's side (e.g. file path outside allowed roots)Reconfigure server allowed paths
TimeoutLong-running tool calls have a per-call timeout; chunked tools are better

Connect succeeds but tool list is empty

Likely causeAction
Server doesn't expose any toolsSome MCPs are resource-only; check what the server provides
Manifest mismatchUpdate the server to current MCP spec

OAuth token has expired

Likely causeAction
Access token aged outRefresh token should auto-renew; if it doesn't, click Reconnect in Settings
Refresh token revoked from the provider's sideRe-run the OAuth flow

Stdio server eats CPU

Likely causeAction
Misbehaving subprocessIdentify with `ps aux
Tight polling loop in the serverServer-side bug — report to the server's maintainers