NewHTTPClient connects to a remote MCP server over the Streamable HTTP transport. Headers (auth tokens, API keys) are injected via a RoundTripper so they ride every request the session makes.
(ctx context.Context, name, endpoint string, headers map[string]string)
| 31 | // transport. Headers (auth tokens, API keys) are injected via a RoundTripper |
| 32 | // so they ride every request the session makes. |
| 33 | func NewHTTPClient(ctx context.Context, name, endpoint string, headers map[string]string) (*Client, error) { |
| 34 | httpClient := &http.Client{ |
| 35 | Transport: &headerRoundTripper{ |
| 36 | base: http.DefaultTransport, |
| 37 | headers: headers, |
| 38 | }, |
| 39 | } |
| 40 | transport := &sdk.StreamableClientTransport{ |
| 41 | Endpoint: endpoint, |
| 42 | HTTPClient: httpClient, |
| 43 | } |
| 44 | return connect(ctx, name, transport) |
| 45 | } |
| 46 | |
| 47 | func connect(ctx context.Context, name string, transport sdk.Transport) (*Client, error) { |
| 48 | impl := &sdk.Implementation{Name: "bettatech-harness", Version: "0.1"} |