fix: detect streamable-http transport for non-Docker catalog servers#2910
fix: detect streamable-http transport for non-Docker catalog servers#2910joeyorlando wants to merge 8 commits intomainfrom
Conversation
When installing a local server from the Online Catalog that uses `--transport streamable-http` in its args (e.g. Google Workspace MCP), the platform was not setting `transportType` or `httpPort` on the localConfig because the docker-args-parser only runs when a docker_image is present. This caused the pod to deploy with `stdin: true` and no port exposure, making the server unreachable even though it was listening on HTTP. Now the non-Docker code path also checks: 1. Server args for `--transport streamable-http` 2. `oauth_config.streamable_http_port` as a fallback Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Claude finished @joeyorlando's task in 2m 38s —— View job Reviewing PR #2910
Code Review:
|
📊 Reputation Summary
How is the score calculated? Read about it in the Reputation Bot repository 🤖 |
When an OAuth MCP server (e.g. Google Workspace MCP with EXTERNAL_OAUTH21_PROVIDER=true) is installed, tool discovery via connectAndGetTools() would fail with 401 because no valid OAuth token exists yet — the user hasn't completed the OAuth flow. Previously this caused 3 retries (15+ seconds wasted) and marked the installation as "error". Now, when a 401/UnauthorizedError occurs during tool discovery and the catalog item has oauthConfig, we return empty tools immediately. The installation succeeds with 0 tools, and tools will be discovered after the user completes the OAuth flow via "Connect". Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Playwright test resultsDetails
Flaky testsapi › api/chat-settings.spec.ts › Chat API Keys Access Control › member should be able to read chat API keys |
Summary
--transport streamable-httpin its args (e.g. Google Workspace MCP), the platform was not settingtransportTypeorhttpPorton thelocalConfigparseDockerArgsToLocalConfig()returnsnullwhen there's nodocker_image, and the fallback code path didn't infer transport type at allstdin: trueand no port exposure, making the server unreachable even though it was listening on HTTP port 8000Fix
The non-Docker code path in
archestra-catalog-tab.tsxnow also checks:--transport streamable-httpoauth_config.streamable_http_portas a fallbackThis ensures catalog servers like
taylorwilsdon/google_workspace_mcpget deployed with proper HTTP transport and port exposure.Related: archestra-ai/website#369 & #2717