docs/errors/README.md
mcpproxy emits a stable error code with every classified failure. Codes follow the
form MCPX_<DOMAIN>_<SPECIFIC> and are surfaced in the web UI error panel, the
tray, the CLI (mcpproxy doctor, mcpproxy upstream logs) and the activity log.
Each code has a dedicated page below explaining the cause, the typical symptoms,
and the remediation steps. Links from the product point at this site
(https://docs.mcpproxy.app/errors/<CODE>).
| Domain | Prefix | Covers |
|---|---|---|
| STDIO | MCPX_STDIO_* | stdio-transport MCP servers — spawn, handshake, exit |
| OAuth | MCPX_OAUTH_* | OAuth 2.1 / PKCE flows — discovery, refresh, callback |
| HTTP | MCPX_HTTP_* | HTTP/SSE transports — DNS, TLS, auth, status |
| Docker | MCPX_DOCKER_* | Docker isolation subsystem |
| Config | MCPX_CONFIG_* | Config parsing and secret resolution |
| Quarantine | MCPX_QUARANTINE_* | Security quarantine state |
| Network | MCPX_NETWORK_* | Host network environment |
| Unknown | MCPX_UNKNOWN_* | Fallback when classification fails |
Codes are stable: once shipped, a code name is never renamed. A deprecated code
points to its replacement. The authoritative in-code registry lives in
internal/diagnostics/registry.go.
Run mcpproxy doctor list-codes for the machine-readable list.
MCPX_STDIO_SPAWN_ENOENT — command not found on PATHMCPX_STDIO_SPAWN_EACCES — permission denied executing commandMCPX_STDIO_EXIT_NONZERO — server exited before handshakeMCPX_STDIO_EXIT_BEFORE_INITIALIZE — process exited before initialize (captured stderr surfaced)MCPX_STDIO_HANDSHAKE_TIMEOUT — no initialize reply within 30sMCPX_STDIO_HANDSHAKE_INVALID — malformed MCP frameMCPX_OAUTH_LOGIN_REQUIRED — first-time sign-in needed (amber)MCPX_OAUTH_REAUTH_REQUIRED — stored token broke, sign in again (red)MCPX_OAUTH_REFRESH_EXPIRED — refresh token expiredMCPX_OAUTH_REFRESH_403 — provider rejected refreshMCPX_OAUTH_DISCOVERY_FAILED — .well-known discovery failedMCPX_OAUTH_CALLBACK_TIMEOUT — browser callback timed outMCPX_OAUTH_CALLBACK_MISMATCH — redirect URI mismatchMCPX_HTTP_DNS_FAILED — DNS lookup failedMCPX_HTTP_TLS_FAILED — TLS handshake failedMCPX_HTTP_401 — UnauthorizedMCPX_HTTP_403 — ForbiddenMCPX_HTTP_404 — Not FoundMCPX_HTTP_5XX — Server errorMCPX_HTTP_CONN_REFUSED — Connection refusedMCPX_DOCKER_DAEMON_DOWN — daemon unreachableMCPX_DOCKER_IMAGE_PULL_FAILED — pull failedMCPX_DOCKER_NO_PERMISSION — socket permission deniedMCPX_DOCKER_SNAP_APPARMOR — snap Docker AppArmor blockMCPX_CONFIG_DEPRECATED_FIELD — deprecated field usedMCPX_CONFIG_PARSE_ERROR — invalid JSONMCPX_CONFIG_MISSING_SECRET — secret reference unresolvedMCPX_QUARANTINE_PENDING_APPROVAL — tools awaiting approvalMCPX_QUARANTINE_TOOL_CHANGED — rug-pull detectedMCPX_NETWORK_PROXY_MISCONFIG — proxy env brokenMCPX_NETWORK_OFFLINE — no network connectivityMCPX_UNKNOWN_UNCLASSIFIED — please file a bug