added auth to remote mcps
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"fmt"
|
||||
|
||||
"github.com/mark3labs/mcp-go/client"
|
||||
"github.com/mark3labs/mcp-go/client/transport"
|
||||
"github.com/mark3labs/mcp-go/mcp"
|
||||
)
|
||||
|
||||
@@ -22,12 +23,12 @@ func (w *mcpGoClientWrapper) CallTool(ctx context.Context, name string, args map
|
||||
req := mcp.CallToolRequest{}
|
||||
req.Params.Name = name
|
||||
req.Params.Arguments = args
|
||||
|
||||
|
||||
res, err := w.client.CallTool(ctx, req)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
|
||||
if res.IsError {
|
||||
return "", fmt.Errorf("tool returned error")
|
||||
}
|
||||
@@ -71,9 +72,31 @@ var defaultMCPFactory MCPClientFactory = func(toolset string) (MCPClientInterfac
|
||||
case "stdio":
|
||||
c, err = client.NewStdioMCPClient(cfg.Command, cfg.Env, cfg.Args...)
|
||||
case "sse":
|
||||
c, err = client.NewSSEMCPClient(cfg.URL)
|
||||
var opts []transport.ClientOption
|
||||
headers := make(map[string]string)
|
||||
if cfg.AuthToken != "" {
|
||||
headers["Authorization"] = "Bearer " + cfg.AuthToken
|
||||
}
|
||||
for k, v := range cfg.Headers {
|
||||
headers[k] = v
|
||||
}
|
||||
if len(headers) > 0 {
|
||||
opts = append(opts, transport.WithHeaders(headers))
|
||||
}
|
||||
c, err = client.NewSSEMCPClient(cfg.URL, opts...)
|
||||
case "http":
|
||||
c, err = client.NewStreamableHttpClient(cfg.URL)
|
||||
var opts []transport.StreamableHTTPCOption
|
||||
headers := make(map[string]string)
|
||||
if cfg.AuthToken != "" {
|
||||
headers["Authorization"] = "Bearer " + cfg.AuthToken
|
||||
}
|
||||
for k, v := range cfg.Headers {
|
||||
headers[k] = v
|
||||
}
|
||||
if len(headers) > 0 {
|
||||
opts = append(opts, transport.WithHTTPHeaders(headers))
|
||||
}
|
||||
c, err = client.NewStreamableHttpClient(cfg.URL, opts...)
|
||||
default:
|
||||
return nil, fmt.Errorf("unsupported MCP transport: %s", cfg.Transport)
|
||||
}
|
||||
@@ -89,7 +112,7 @@ var defaultMCPFactory MCPClientFactory = func(toolset string) (MCPClientInterfac
|
||||
Name: "Sidekick",
|
||||
Version: "1.0.0",
|
||||
}
|
||||
|
||||
|
||||
_, err = c.Initialize(context.Background(), initReq)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to initialize MCP client: %w", err)
|
||||
|
||||
Reference in New Issue
Block a user