fix(web, artifacts, mcp): port fallback, artifacts crash, MCP URL overrides#387
fix(web, artifacts, mcp): port fallback, artifacts crash, MCP URL overrides#387echandler-anl wants to merge 2 commits into
Conversation
…rrides for framework MCP servers - artifacts_cmd.py: pass workspace_root to run_server() so osprey artifacts web does not crash with TypeError when launched standalone (auto-launch path via server_launcher.py was unaffected as it already resolved workspace_root) - registry/mcp.py: apply url field from claude_code.servers overrides to built-in framework servers, enabling stdio→HTTP switching via config without osprey claude regen silently ignoring the url key
When no --port is specified and the default port (8087) is already in use, bind to port 0 to let the OS pick a free port instead of exiting with an error. Explicitly specified ports still error if taken.
|
Hi Elaine — thanks for these, and welcome! Three genuinely useful fixes here; let me take them one at a time, since they're at different levels of ready.
Heads-up too that the branch is conflicting with Really appreciate the contribution — the first two are close, and I'm glad to help get the third somewhere we're both comfortable. |
|
Closing the loop on the three pieces here:
MCP With all three threads resolved I'll close this one out. Really appreciate the contribution — hope to see more! |
Summary
osprey web: when no--portis given and the default port (8087) is busy, auto-bind to a free OS-assigned port instead of hard-exiting. Explicitly specified ports still error if taken.osprey artifacts web: passworkspace_roottorun_server()so the command doesn't crash withTypeErrorwhen launched standalone.registry/mcp.py: apply theurlfield fromclaude_code.serversoverrides to built-in framework servers, so stdio→HTTP switching via config works withoutosprey clauderegen silently ignoring the key.Test plan
osprey webwith default port in use → confirms it picks a free port and prints the chosen portosprey web --port <taken>→ still errors as beforeosprey artifacts webstandalone → no longer crashes withTypeErrorclaude_code.servers.<name>.urlin config for a framework server → URL is applied🤖 Generated with Claude Code