Skip to content

Commit 831f4d7

Browse files
committed
Simpler remote client creation
Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
1 parent 00c58ca commit 831f4d7

1 file changed

Lines changed: 18 additions & 30 deletions

File tree

pkg/tools/mcp/remote.go

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -78,40 +78,28 @@ func NewRemoteClient(url, transportType string, headers map[string]string, redir
7878
var c *client.Client
7979
var err error
8080

81-
if requiresOAuth {
82-
oauthConfig := client.OAuthConfig{
83-
RedirectURI: redirectURI,
84-
TokenStore: tokenStore,
85-
PKCEEnabled: true,
86-
}
81+
oauthConfig := client.OAuthConfig{
82+
RedirectURI: redirectURI,
83+
TokenStore: tokenStore,
84+
PKCEEnabled: true,
85+
}
8786

88-
if transportType == "sse" {
89-
c, err = client.NewOAuthSSEClient(url, oauthConfig)
90-
if err != nil {
91-
slog.Error("Failed to create OAuth SSE remote MCP client", "error", err)
92-
return nil, fmt.Errorf("failed to create OAuth SSE remote MCP client: %w", err)
93-
}
94-
} else {
95-
c, err = client.NewOAuthStreamableHttpClient(url, oauthConfig)
96-
if err != nil {
97-
slog.Error("Failed to create OAuth streamable remote MCP client", "error", err)
98-
return nil, fmt.Errorf("failed to create OAuth streamable remote MCP client: %w", err)
99-
}
87+
if transportType == "sse" {
88+
options := []transport.ClientOption{transport.WithHeaders(headers)}
89+
if requiresOAuth {
90+
options = append(options, transport.WithOAuth(oauthConfig))
10091
}
92+
c, err = client.NewSSEMCPClient(url, options...)
10193
} else {
102-
if transportType == "sse" {
103-
c, err = client.NewSSEMCPClient(url, client.WithHeaders(headers))
104-
if err != nil {
105-
slog.Error("Failed to create sse remote MCP client", "error", err)
106-
return nil, fmt.Errorf("failed to create sse remote MCP client: %w", err)
107-
}
108-
} else {
109-
c, err = client.NewStreamableHttpClient(url, transport.WithHTTPHeaders(headers))
110-
if err != nil {
111-
slog.Error("Failed to create streamable remote MCP client", "error", err)
112-
return nil, fmt.Errorf("failed to create streamable remote MCP client: %w", err)
113-
}
94+
options := []transport.StreamableHTTPCOption{transport.WithHTTPHeaders(headers)}
95+
if requiresOAuth {
96+
options = append(options, transport.WithHTTPOAuth(oauthConfig))
11497
}
98+
c, err = client.NewStreamableHttpClient(url, options...)
99+
}
100+
101+
if err != nil {
102+
return nil, fmt.Errorf("failed to create MCP client: %w", err)
115103
}
116104

117105
slog.Debug("Created remote MCP client successfully", "url", url, "transport", transportType, "requiresOAuth", requiresOAuth)

0 commit comments

Comments
 (0)