@@ -15,6 +15,7 @@ type Client struct {
1515 protocol * protocol.Protocol
1616 capabilities * ServerCapabilities
1717 initialized bool
18+ info ClientInfo
1819}
1920
2021// NewClient creates a new MCP client with the specified transport
@@ -25,6 +26,20 @@ func NewClient(transport transport.Transport) *Client {
2526 }
2627}
2728
29+ type ClientInfo struct {
30+ Name string `json:"name"`
31+ Version string `json:"version"`
32+ }
33+
34+ // NewClientWithInfo create a new client with info. This is required by anthorpic mcp tools
35+ func NewClientWithInfo (transport transport.Transport , info ClientInfo ) * Client {
36+ return & Client {
37+ transport : transport ,
38+ protocol : protocol .NewProtocol (nil ),
39+ info : info ,
40+ }
41+ }
42+
2843// Initialize connects to the server and retrieves its capabilities
2944func (c * Client ) Initialize (ctx context.Context ) (* InitializeResponse , error ) {
3045 if c .initialized {
@@ -37,7 +52,11 @@ func (c *Client) Initialize(ctx context.Context) (*InitializeResponse, error) {
3752 }
3853
3954 // Make initialize request to server
40- response , err := c .protocol .Request (ctx , "initialize" , map [string ]interface {}{}, nil )
55+ response , err := c .protocol .Request (ctx , "initialize" , map [string ]interface {}{
56+ "protocolVersion" : "1.0" ,
57+ "capabilities" : map [string ]interface {}{},
58+ "clientInfo" : c .info ,
59+ }, nil )
4160 if err != nil {
4261 return nil , errors .Wrap (err , "failed to initialize" )
4362 }
0 commit comments