From 0372773ab3e3a662aa95886d3015f1711b8998ac Mon Sep 17 00:00:00 2001 From: leavez Date: Wed, 9 Apr 2025 00:21:48 +0800 Subject: [PATCH 1/3] sse: add custom header in start request --- client/transport/sse.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/transport/sse.go b/client/transport/sse.go index ad911fb8b..e29aaa834 100644 --- a/client/transport/sse.go +++ b/client/transport/sse.go @@ -97,6 +97,11 @@ func (c *SSE) Start(ctx context.Context) error { req.Header.Set("Cache-Control", "no-cache") req.Header.Set("Connection", "keep-alive") + // set custom http headers + for k, v := range c.headers { + req.Header.Set(k, v) + } + resp, err := c.httpClient.Do(req) if err != nil { return fmt.Errorf("failed to connect to SSE stream: %w", err) From 991c6de64e638439a951a3596aa65aa4ee564262 Mon Sep 17 00:00:00 2001 From: leavez Date: Wed, 9 Apr 2025 00:25:31 +0800 Subject: [PATCH 2/3] update comment --- client/client.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/client.go b/client/client.go index e23264d0e..cc94abab0 100644 --- a/client/client.go +++ b/client/client.go @@ -26,9 +26,10 @@ type Client struct { // NewClient creates a new MCP client with the given transport. // Usage: // -// client, err := NewClient(transport.NewStdio("mcp", nil, "--stdio")) +// stdio := transport.NewStdio("./mcp_server", nil, "xxx") +// client, err := NewClient(stdio) // if err != nil { -// log.Fatalf("Failed to create client: %v", err) +// log.Fatalf("Failed to create client: %v", err) // } func NewClient(transport transport.Interface) *Client { return &Client{ From 4f583a405db00debca31710b21bd9001d7fcb1c2 Mon Sep 17 00:00:00 2001 From: leavez Date: Wed, 9 Apr 2025 00:30:07 +0800 Subject: [PATCH 3/3] comment --- client/sse.go | 2 +- client/stdio.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/sse.go b/client/sse.go index 0776d8ac2..d998f2cc5 100644 --- a/client/sse.go +++ b/client/sse.go @@ -30,7 +30,7 @@ func NewSSEMCPClient(baseURL string, options ...transport.ClientOption) (*Client // GetEndpoint returns the current endpoint URL for the SSE connection. // -// Note: This method only works with SSE transport. +// Note: This method only works with SSE transport, or it will panic. func GetEndpoint(c *Client) *url.URL { t := c.GetTransport() sse := t.(*transport.SSE) diff --git a/client/stdio.go b/client/stdio.go index d6867083d..a25f6d19d 100644 --- a/client/stdio.go +++ b/client/stdio.go @@ -32,7 +32,7 @@ func NewStdioMCPClient( // GetStderr returns a reader for the stderr output of the subprocess. // This can be used to capture error messages or logs from the subprocess. // -// Note: This method only works with stdio transport. +// Note: This method only works with stdio transport, or it will panic. func GetStderr(c *Client) io.Reader { t := c.GetTransport() stdio := t.(*transport.Stdio)