Skip to main content

MCPX_HTTP_4XX

Severity: error Domain: HTTP

What happened

The upstream MCP server rejected the request with a client-error status that mcpproxy does not map to a more specific code. The exact status is in the error detail shown next to the code in the web UI, the tray, and mcpproxy upstream list.

This code covers:

StatusUsual meaning for an MCP endpoint
400 Bad RequestThe endpoint is not an MCP endpoint, or it speaks a protocol version this client does not.
408 Request TimeoutThe server gave up waiting for the request body — usually a slow or interrupted network.
409 ConflictA session or state conflict; often a stale session id after the server restarted.
410 GoneThe endpoint was retired. The vendor has moved or shut down the URL.
451 Unavailable For Legal ReasonsBlocked in your region or for your account.

401, 403, 404, 429 and every 5xx have their own codes — see Related.

How to fix

1. Reproduce it and read the body

curl -v <server-url>

Most MCP servers put a useful sentence in the response body. That sentence is almost always the actual fix.

2. Check the configured URL

mcpproxy upstream list -o json

A 400 or 410 on a URL that used to work is nearly always the vendor moving the endpoint — compare against their current documentation.

3. For a 409

Restart the connection so a fresh session is negotiated:

mcpproxy upstream restart <server>