From 3760f46ad39f0730104071fdcdb5377da73106ba Mon Sep 17 00:00:00 2001 From: Melvin Davis Date: Tue, 11 Mar 2025 07:55:33 +0530 Subject: [PATCH 1/2] Support to connect to anthropic mcp tools --- client.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/client.go b/client.go index 672e217..acd122b 100644 --- a/client.go +++ b/client.go @@ -15,6 +15,7 @@ type Client struct { protocol *protocol.Protocol capabilities *ServerCapabilities initialized bool + info *ClientInfo } // NewClient creates a new MCP client with the specified transport @@ -25,6 +26,20 @@ func NewClient(transport transport.Transport) *Client { } } +type ClientInfo struct { + Name string `json:"name"` + Version string `json:"version"` +} + +// NewClientWithInfo create a new client with info. This is required by anthorpic mcp tools +func NewClientWithInfo(transport transport.Transport, info *ClientInfo) *Client { + return &Client{ + transport: transport, + protocol: protocol.NewProtocol(nil), + info: info, + } +} + // Initialize connects to the server and retrieves its capabilities func (c *Client) Initialize(ctx context.Context) (*InitializeResponse, error) { if c.initialized { @@ -37,7 +52,11 @@ func (c *Client) Initialize(ctx context.Context) (*InitializeResponse, error) { } // Make initialize request to server - response, err := c.protocol.Request(ctx, "initialize", map[string]interface{}{}, nil) + response, err := c.protocol.Request(ctx, "initialize", map[string]interface{}{ + "protocolVersion": "1.0", + "capabilities": map[string]interface{}{}, + "clientInfo": c.info, + }, nil) if err != nil { return nil, errors.Wrap(err, "failed to initialize") } From c68c0e46b7edc80d2b75ad506dc05c9f1b1464d9 Mon Sep 17 00:00:00 2001 From: Melvin Davis Date: Tue, 11 Mar 2025 08:00:46 +0530 Subject: [PATCH 2/2] initialising with empty object --- client.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client.go b/client.go index acd122b..bb650df 100644 --- a/client.go +++ b/client.go @@ -15,7 +15,7 @@ type Client struct { protocol *protocol.Protocol capabilities *ServerCapabilities initialized bool - info *ClientInfo + info ClientInfo } // NewClient creates a new MCP client with the specified transport @@ -32,7 +32,7 @@ type ClientInfo struct { } // NewClientWithInfo create a new client with info. This is required by anthorpic mcp tools -func NewClientWithInfo(transport transport.Transport, info *ClientInfo) *Client { +func NewClientWithInfo(transport transport.Transport, info ClientInfo) *Client { return &Client{ transport: transport, protocol: protocol.NewProtocol(nil),