Skip to content

Commit 8706661

Browse files
committed
merge main
2 parents 0bed1f8 + 781b732 commit 8706661

File tree

8 files changed

+592
-32
lines changed

8 files changed

+592
-32
lines changed

client/client.go

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,21 @@ import (
1616
type Client struct {
1717
transport transport.Interface
1818

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+
}
2434
}
2535

2636
// NewClient creates a new MCP client with the given transport.
@@ -31,10 +41,16 @@ type Client struct {
3141
// if err != nil {
3242
// log.Fatalf("Failed to create client: %v", err)
3343
// }
34-
func NewClient(transport transport.Interface) *Client {
35-
return &Client{
44+
func NewClient(transport transport.Interface, options ...ClientOption) *Client {
45+
client := &Client{
3646
transport: transport,
3747
}
48+
49+
for _, opt := range options {
50+
opt(client)
51+
}
52+
53+
return client
3854
}
3955

4056
// Start initiates the connection to the server.
@@ -115,7 +131,7 @@ func (c *Client) Initialize(
115131
params := struct {
116132
ProtocolVersion string `json:"protocolVersion"`
117133
ClientInfo mcp.Implementation `json:"clientInfo"`
118-
Capabilities mcp.ClientCapabilities `json:"capabilities"`
134+
Capabilities mcp.ClientCapabilities `json:"serverCapabilities"`
119135
}{
120136
ProtocolVersion: request.Params.ProtocolVersion,
121137
ClientInfo: request.Params.ClientInfo,
@@ -132,8 +148,8 @@ func (c *Client) Initialize(
132148
return nil, fmt.Errorf("failed to unmarshal response: %w", err)
133149
}
134150

135-
// Store capabilities
136-
c.capabilities = result.Capabilities
151+
// Store serverCapabilities
152+
c.serverCapabilities = result.Capabilities
137153

138154
// Send initialized notification
139155
notification := mcp.JSONRPCNotification{
@@ -406,3 +422,13 @@ func listByPage[T any](
406422
func (c *Client) GetTransport() transport.Interface {
407423
return c.transport
408424
}
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+
}

client/inprocess.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package client
2+
3+
import (
4+
"github.com/mark3labs/mcp-go/client/transport"
5+
"github.com/mark3labs/mcp-go/server"
6+
)
7+
8+
// NewInProcessClient connect directly to a mcp server object in the same process
9+
func NewInProcessClient(server *server.MCPServer) (*Client, error) {
10+
inProcessTransport := transport.NewInProcessTransport(server)
11+
return NewClient(inProcessTransport), nil
12+
}

0 commit comments

Comments
 (0)