1package client
2
3import (
4 "fmt"
5 "net/http"
6 "net/url"
7
8 "github.com/mark3labs/mcp-go/client/transport"
9)
10
11func WithHeaders(headers map[string]string) transport.ClientOption {
12 return transport.WithHeaders(headers)
13}
14
15func WithHeaderFunc(headerFunc transport.HTTPHeaderFunc) transport.ClientOption {
16 return transport.WithHeaderFunc(headerFunc)
17}
18
19func WithHTTPClient(httpClient *http.Client) transport.ClientOption {
20 return transport.WithHTTPClient(httpClient)
21}
22
23// NewSSEMCPClient creates a new SSE-based MCP client with the given base URL.
24// Returns an error if the URL is invalid.
25func NewSSEMCPClient(baseURL string, options ...transport.ClientOption) (*Client, error) {
26
27 sseTransport, err := transport.NewSSE(baseURL, options...)
28 if err != nil {
29 return nil, fmt.Errorf("failed to create SSE transport: %w", err)
30 }
31
32 return NewClient(sseTransport), nil
33}
34
35// GetEndpoint returns the current endpoint URL for the SSE connection.
36//
37// Note: This method only works with SSE transport, or it will panic.
38func GetEndpoint(c *Client) *url.URL {
39 t := c.GetTransport()
40 sse := t.(*transport.SSE)
41 return sse.GetEndpoint()
42}