Return 502 Bad Gateway for MCP service errors #1793
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds a dedicated exception handler for MCP (Model Context Protocol) errors that returns HTTP 502 Bad Gateway instead of 500 Internal Server Error.
Background: When users configure external MCP services (like SSE endpoints or stdio processes) that fail to respond, the agent-server was returning a generic 500 error. This made it difficult to:
Changes:
MCPErrorexception handler inapi.pythat returns 502 Bad Gatewaydetail: "MCP service error"error_type: Exception class name (e.g., "MCPTimeoutError")message: Full error message with troubleshooting hintstimeout: (for MCPTimeoutError) The timeout value that was exceededmcp_servers: (for MCPTimeoutError with config) List of configured MCP server namesExample response:
{ "detail": "MCP service error", "error_type": "MCPTimeoutError", "message": "MCP tool listing timed out after 30 seconds.\nMCP servers configured: fetch, custom_sse\n\nPossible solutions:\n 1. Increase the timeout value...", "timeout": 30.0, "mcp_servers": ["fetch", "custom_sse"] }Checklist
@tofarr can click here to continue refining the PR
Agent Server images for this PR
• GHCR package: https://github.com/OpenHands/agent-sdk/pkgs/container/agent-server
Variants & Base Images
eclipse-temurin:17-jdknikolaik/python-nodejs:python3.12-nodejs22golang:1.21-bookwormPull (multi-arch manifest)
# Each variant is a multi-arch manifest supporting both amd64 and arm64 docker pull ghcr.io/openhands/agent-server:a2e9ada-pythonRun
All tags pushed for this build
About Multi-Architecture Support
a2e9ada-python) is a multi-arch manifest supporting both amd64 and arm64a2e9ada-python-amd64) are also available if needed