Skip to content

Commit de682d7

Browse files
authored
Merge pull request #412 from rumpl/oauth
OAuth minor tweaks
2 parents 00c58ca + 78dda23 commit de682d7

3 files changed

Lines changed: 21 additions & 33 deletions

File tree

pkg/teamloader/teamloader.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ func createTool(ctx context.Context, toolset latest.Toolset, a *latest.AgentConf
349349
headers[k] = expanded
350350
}
351351

352-
return mcp.NewToolsetRemote(toolset.Remote.URL, toolset.Remote.TransportType, headers, toolset.Tools, runtimeConfig.RedirectURI)
352+
return mcp.NewRemoteToolset(toolset.Remote.URL, toolset.Remote.TransportType, headers, toolset.Tools, runtimeConfig.RedirectURI)
353353

354354
default:
355355
return nil, fmt.Errorf("unknown toolset type: %s", toolset.Type)

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)

pkg/tools/mcp/toolset.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ func NewToolsetCommand(command string, args, env, toolFilter []string) *Toolset
3232
}
3333
}
3434

35-
// NewToolsetRemote creates a new MCP toolset from a remote MCP Server.
36-
func NewToolsetRemote(url, transport string, headers map[string]string, toolFilter []string, redirectURI string) (*Toolset, error) {
35+
// NewRemoteToolset creates a new MCP toolset from a remote MCP Server.
36+
func NewRemoteToolset(url, transport string, headers map[string]string, toolFilter []string, redirectURI string) (*Toolset, error) {
3737
slog.Debug("Creating Remote MCP toolset", "url", url, "transport", transport, "headers", headers, "toolFilter", toolFilter, "redirectURI", redirectURI)
3838

3939
tokenStore := GetTokenStore(url)

0 commit comments

Comments
 (0)