@@ -16,11 +16,21 @@ import (
16
16
type Client struct {
17
17
transport transport.Interface
18
18
19
- initialized bool
20
- notifications []func (mcp.JSONRPCNotification )
21
- notifyMu sync.RWMutex
22
- requestID atomic.Int64
23
- capabilities mcp.ServerCapabilities
19
+ initialized bool
20
+ notifications []func (mcp.JSONRPCNotification )
21
+ notifyMu sync.RWMutex
22
+ requestID atomic.Int64
23
+ clientCapabilities mcp.ClientCapabilities
24
+ serverCapabilities mcp.ServerCapabilities
25
+ }
26
+
27
+ type ClientOption func (* Client )
28
+
29
+ // WithClientCapabilities sets the client capabilities for the client.
30
+ func WithClientCapabilities (capabilities mcp.ClientCapabilities ) ClientOption {
31
+ return func (c * Client ) {
32
+ c .clientCapabilities = capabilities
33
+ }
24
34
}
25
35
26
36
// NewClient creates a new MCP client with the given transport.
@@ -31,10 +41,16 @@ type Client struct {
31
41
// if err != nil {
32
42
// log.Fatalf("Failed to create client: %v", err)
33
43
// }
34
- func NewClient (transport transport.Interface ) * Client {
35
- return & Client {
44
+ func NewClient (transport transport.Interface , options ... ClientOption ) * Client {
45
+ client := & Client {
36
46
transport : transport ,
37
47
}
48
+
49
+ for _ , opt := range options {
50
+ opt (client )
51
+ }
52
+
53
+ return client
38
54
}
39
55
40
56
// Start initiates the connection to the server.
@@ -115,7 +131,7 @@ func (c *Client) Initialize(
115
131
params := struct {
116
132
ProtocolVersion string `json:"protocolVersion"`
117
133
ClientInfo mcp.Implementation `json:"clientInfo"`
118
- Capabilities mcp.ClientCapabilities `json:"capabilities "`
134
+ Capabilities mcp.ClientCapabilities `json:"serverCapabilities "`
119
135
}{
120
136
ProtocolVersion : request .Params .ProtocolVersion ,
121
137
ClientInfo : request .Params .ClientInfo ,
@@ -132,8 +148,8 @@ func (c *Client) Initialize(
132
148
return nil , fmt .Errorf ("failed to unmarshal response: %w" , err )
133
149
}
134
150
135
- // Store capabilities
136
- c .capabilities = result .Capabilities
151
+ // Store serverCapabilities
152
+ c .serverCapabilities = result .Capabilities
137
153
138
154
// Send initialized notification
139
155
notification := mcp.JSONRPCNotification {
@@ -406,3 +422,13 @@ func listByPage[T any](
406
422
func (c * Client ) GetTransport () transport.Interface {
407
423
return c .transport
408
424
}
425
+
426
+ // GetServerCapabilities returns the server capabilities.
427
+ func (c * Client ) GetServerCapabilities () mcp.ServerCapabilities {
428
+ return c .serverCapabilities
429
+ }
430
+
431
+ // GetClientCapabilities returns the client capabilities.
432
+ func (c * Client ) GetClientCapabilities () mcp.ClientCapabilities {
433
+ return c .clientCapabilities
434
+ }
0 commit comments