Isolate per-provider failures at startup; tighten build error UX#11
Merged
BillJr99 merged 1 commit intoMay 25, 2026
Merged
Conversation
Three robustness fixes prompted by users pasting a long-running server
command (e.g. `npm run start:dev`) into the repository build_commands
list and watching the whole server fail to start:
1. server.py — wrap each provider's register + setup in its own
try/except so one broken YAML can't crash startup. Other providers
still load; the broken one logs and is skipped.
2. server.py — add BUILD_COMMAND_TIMEOUT (default 600s, override via
MCPPROXY_BUILD_TIMEOUT) on every materialize_repository build
command. Prevents a non-terminating command from deadlocking
startup, and the timeout message points the user at the Spawn
command field.
3. process_runner.py — when the spawned MCP subprocess closes stdout
during the handshake (usually = it crashed), drain stderr and
include the tail in the EOFError message. Surfaces the actual
cause ("Environment validation failed: KEY: Required") instead of
the unhelpful "MCP process closed stdout".
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Three robustness fixes prompted by users pasting a long-running server command (e.g.
npm run start:dev) into the repository build_commands list and watching the whole server fail to start:server.py — wrap each provider's register + setup in its own try/except so one broken YAML can't crash startup. Other providers still load; the broken one logs and is skipped.
server.py — add BUILD_COMMAND_TIMEOUT (default 600s, override via MCPPROXY_BUILD_TIMEOUT) on every materialize_repository build command. Prevents a non-terminating command from deadlocking startup, and the timeout message points the user at the Spawn command field.
process_runner.py — when the spawned MCP subprocess closes stdout during the handshake (usually = it crashed), drain stderr and include the tail in the EOFError message. Surfaces the actual cause ("Environment validation failed: KEY: Required") instead of the unhelpful "MCP process closed stdout".