feat(extensions): support Unix domain socket transport for StreamableHttp MCP#7860
feat(extensions): support Unix domain socket transport for StreamableHttp MCP#7860wpfleger96 merged 5 commits intomainfrom
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3c8f30ab3c
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
3c8f30a to
3052674
Compare
8c46f1f to
745aa62
Compare
|
🔍 Recipe Security Scan Results 📊 Scan Summary:
📋 Individual Recipe Results: 🔗 View detailed scan results in the workflow artifacts. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4bf5ba15c6
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
4bf5ba1 to
bcb0978
Compare
bcb0978 to
c4e688d
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c4e688db97
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
c4e688d to
9cabdce
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9cabdce081
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
turns out this was actually an issue in goose itself, fixed here: 44ec31c27fd |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 89e3183b7a
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
…sport Adds `socket: Option<String>` to `ExtensionConfig::StreamableHttp` to support HTTP-over-Unix-domain-socket routing (e.g. K8s Envoy sidecars). The transport wiring using rmcp's `UnixSocketHttpClient` will follow once rmcp 1.5.0 is released on crates.io.
Bump rmcp to 1.5.0 and wire UnixSocketHttpClient into the extension manager for HTTP-over-UDS transport. When `socket` is set on a StreamableHttp extension, connections route through the Unix socket while `uri` provides the Host header and path. Also migrates all rmcp struct literals to constructor/builder APIs required by the 1.3.0+ #[non_exhaustive] sweep: StoredCredentials, CreateElicitationResult, StreamableHttpClientTransportConfig, AuthRequiredError, DynamicTransportError, and McpFixtureServer.
oauth_flow() uses a standard reqwest::Client over TCP, so it can't reach authorization servers through a Unix domain socket. Replace the doomed retry with a clear warning log, which also removes the duplicated header construction that the retry path required.
89e3183 to
7ff6bc9
Compare
|
👋 hey @alexhancock @jamadeo this is now tested and working with the upstream |
Drop socket serde round-trip tests per review feedback — they only exercise serde_json's well-established Option/default behavior. Keep the Display impl tests which cover our custom formatting logic.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 20f87d1986
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
substitute_env_vars was applied to uri and headers but not socket, so the restart-suppression equality check in add_extension would miss socket path rotation when using env-backed values like $ENVOY_SOCK.
Summary
socket: Option<String>field toStreamableHttpextension config, enabling MCP connections routed through Unix domain sockets (e.g. Envoy sidecars in K8s where outbound HTTP must go through the proxy's UDS)rmcp::transport::UnixSocketHttpClientinextension_manager.rs— whensocketis set, HTTP is physically routed through the socket whileuriserves as the Host header and pathsubstitute_env_varsto thesocketfield at connection time so env-backed paths like$ENVOY_SOCKresolve correctlyoauth_flow()uses a standardreqwest::Clientover TCP, which can't reach authorization servers through a Unix socket. Log a clear warning instead of letting it fail with a confusing DNS error.Background
This builds on the rmcp 1.5.0 upgrade (#8618) and IconTheme schema fix (#8621), both already merged.
#[non_exhaustive]constructors we contributed upstreamSupersedes #7631, which implemented UDS support directly in goose. That local implementation (~420 lines of hyper-based code) is replaced by the upstream rmcp feature flag
transport-streamable-http-client-unix-socket.