| 34 | } |
| 35 | |
| 36 | func NewStreamableHTTPServerProxy(serverName, serverURL string, headers map[string]string, allowlist, denylist *regexp.Regexp, logger slog.Logger, tracer trace.Tracer, opts ...transport.StreamableHTTPCOption) (*StreamableHTTPServerProxy, error) { |
| 37 | // nit: headers should be passed in as an option instead of a separate parameter. Not changed as this would be a breaking change. |
| 38 | if headers != nil { |
| 39 | opts = append(opts, transport.WithHTTPHeaders(headers)) |
| 40 | } |
| 41 | |
| 42 | mcpClient, err := client.NewStreamableHttpClient(serverURL, opts...) |
| 43 | if err != nil { |
| 44 | return nil, xerrors.Errorf("create streamable http client: %w", err) |
| 45 | } |
| 46 | |
| 47 | return &StreamableHTTPServerProxy{ |
| 48 | serverName: serverName, |
| 49 | serverURL: serverURL, |
| 50 | client: mcpClient, |
| 51 | logger: logger, |
| 52 | tracer: tracer, |
| 53 | allowlistPattern: allowlist, |
| 54 | denylistPattern: denylist, |
| 55 | }, nil |
| 56 | } |
| 57 | |
| 58 | func (p *StreamableHTTPServerProxy) Name() string { |
| 59 | return p.serverName |