@@ -12,6 +12,7 @@ import (
12
12
13
13
"github.com/getkin/kin-openapi/openapi3"
14
14
"github.com/gptscript-ai/gptscript/pkg/hash"
15
+ "github.com/gptscript-ai/gptscript/pkg/mvl"
15
16
"github.com/gptscript-ai/gptscript/pkg/types"
16
17
"github.com/gptscript-ai/gptscript/pkg/version"
17
18
"github.com/mark3labs/mcp-go/client"
@@ -21,6 +22,8 @@ import (
21
22
var (
22
23
DefaultLoader = & Local {}
23
24
DefaultRunner = DefaultLoader
25
+
26
+ logger = mvl .Package ()
24
27
)
25
28
26
29
type Local struct {
@@ -116,6 +119,7 @@ func (l *Local) Close() error {
116
119
117
120
var errs []error
118
121
for id , session := range l .sessions {
122
+ logger .Infof ("closing MCP session %s" , id )
119
123
if err := session .Client .Close (); err != nil {
120
124
errs = append (errs , fmt .Errorf ("failed to close MCP client %s: %w" , id , err ))
121
125
}
@@ -229,7 +233,7 @@ func (l *Local) loadSession(ctx context.Context, server ServerConfig) (*Session,
229
233
}
230
234
231
235
var (
232
- c client.MCPClient
236
+ c * client.Client
233
237
err error
234
238
)
235
239
if server .Command != "" {
@@ -248,10 +252,16 @@ func (l *Local) loadSession(ctx context.Context, server ServerConfig) (*Session,
248
252
k , v , _ := strings .Cut (h , "=" )
249
253
headers [k ] = v
250
254
}
255
+
251
256
c , err = client .NewSSEMCPClient (url , client .WithHeaders (headers ))
252
257
if err != nil {
253
258
return nil , fmt .Errorf ("failed to create MCP HTTP client: %w" , err )
254
259
}
260
+
261
+ // We expect the client to outlive this one request.
262
+ if err = c .Start (context .Background ()); err != nil {
263
+ return nil , fmt .Errorf ("failed to start MCP client: %w" , err )
264
+ }
255
265
}
256
266
257
267
var initRequest mcp.InitializeRequest
0 commit comments