Skip to content

Isolate per-provider failures at startup; tighten build error UX#11

Merged
BillJr99 merged 1 commit into
mainfrom
claude/admiring-newton-FuK5K-isolate-provider-failures
May 25, 2026
Merged

Isolate per-provider failures at startup; tighten build error UX#11
BillJr99 merged 1 commit into
mainfrom
claude/admiring-newton-FuK5K-isolate-provider-failures

Conversation

@BillJr99
Copy link
Copy Markdown
Owner

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".

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".
@BillJr99 BillJr99 merged commit 56684d3 into main May 25, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants