Skip to content

Commit dea2811

Browse files
authored
bump to mcp-go 0.31.0 (#43)
1 parent 428d2c1 commit dea2811

35 files changed

+626
-724
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ require (
88
github.com/dgrijalva/jwt-go v3.2.0+incompatible
99
github.com/google/go-cmp v0.7.0
1010
github.com/hamba/avro/v2 v2.28.0
11-
github.com/mark3labs/mcp-go v0.28.0
11+
github.com/mark3labs/mcp-go v0.31.0
1212
github.com/mitchellh/go-homedir v1.1.0
1313
github.com/pkg/errors v0.9.1
1414
github.com/sirupsen/logrus v1.9.3

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ
129129
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
130130
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
131131
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
132-
github.com/mark3labs/mcp-go v0.28.0 h1:7yl4y5D1KYU2f/9Uxp7xfLIggfunHoESCRbrjcytcLM=
133-
github.com/mark3labs/mcp-go v0.28.0/go.mod h1:rXqOudj/djTORU/ThxYx8fqEVj/5pvTuuebQ2RC7uk4=
132+
github.com/mark3labs/mcp-go v0.31.0 h1:4UxSV8aM770OPmTvaVe/b1rA2oZAjBMhGBfUgOGut+4=
133+
github.com/mark3labs/mcp-go v0.31.0/go.mod h1:rXqOudj/djTORU/ThxYx8fqEVj/5pvTuuebQ2RC7uk4=
134134
github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU=
135135
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
136136
github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE=

go.work.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@ github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+
138138
github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc=
139139
github.com/mark3labs/mcp-go v0.23.1 h1:RzTzZ5kJ+HxwnutKA4rll8N/pKV6Wh5dhCmiJUu5S9I=
140140
github.com/mark3labs/mcp-go v0.23.1/go.mod h1:rXqOudj/djTORU/ThxYx8fqEVj/5pvTuuebQ2RC7uk4=
141-
github.com/mark3labs/mcp-go v0.28.0 h1:7yl4y5D1KYU2f/9Uxp7xfLIggfunHoESCRbrjcytcLM=
142-
github.com/mark3labs/mcp-go v0.28.0/go.mod h1:rXqOudj/djTORU/ThxYx8fqEVj/5pvTuuebQ2RC7uk4=
141+
github.com/mark3labs/mcp-go v0.31.0 h1:4UxSV8aM770OPmTvaVe/b1rA2oZAjBMhGBfUgOGut+4=
142+
github.com/mark3labs/mcp-go v0.31.0/go.mod h1:rXqOudj/djTORU/ThxYx8fqEVj/5pvTuuebQ2RC7uk4=
143143
github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y=
144144
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
145145
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=

pkg/cmd/mcp/sse.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func runSseServer(configOpts *ServerOptions) error {
7878
sseServer := server.NewSSEServer(
7979
mcpServer,
8080
server.WithStaticBasePath(configOpts.HTTPPath),
81-
server.WithHTTPContextFunc(func(ctx context.Context, _ *http.Request) context.Context {
81+
server.WithSSEContextFunc(func(ctx context.Context, _ *http.Request) context.Context {
8282
return context.WithValue(ctx, common.OptionsKey, configOpts.Options)
8383
}),
8484
)

pkg/common/utils.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,19 @@ func RequiredParamObject(arguments map[string]interface{}, name string) (map[str
180180
return nil, fmt.Errorf("%s parameter must be an object", name)
181181
}
182182

183+
func OptionalParamObject(arguments map[string]interface{}, name string) (map[string]interface{}, bool) {
184+
paramValue, found := arguments[name]
185+
if !found || paramValue == nil {
186+
return nil, false
187+
}
188+
189+
if mapVal, ok := paramValue.(map[string]interface{}); ok {
190+
return mapVal, true
191+
}
192+
193+
return nil, false
194+
}
195+
183196
func GetOptions(ctx context.Context) *config.Options {
184197
return ctx.Value(OptionsKey).(*config.Options)
185198
}

pkg/mcp/context_tools.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,12 @@ func handleWhoami(ctx context.Context, _ mcp.CallToolRequest) (*mcp.CallToolResu
9393
func handleSetContext(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
9494
options := ctx.Value(common.OptionsKey).(*config.Options)
9595

96-
instanceName, err := common.RequiredParam[string](request.Params.Arguments, "instanceName")
96+
instanceName, err := request.RequireString("instanceName")
9797
if err != nil {
9898
return mcp.NewToolResultError(fmt.Sprintf("Failed to get instance name: %v", err)), nil
9999
}
100100

101-
clusterName, err := common.RequiredParam[string](request.Params.Arguments, "clusterName")
101+
clusterName, err := request.RequireString("clusterName")
102102
if err != nil {
103103
return mcp.NewToolResultError(fmt.Sprintf("Failed to get cluster name: %v", err)), nil
104104
}

pkg/mcp/kafka_admin_connect_tools.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -151,12 +151,12 @@ func KafkaAdminAddKafkaConnectTools(s *server.MCPServer, readOnly bool, features
151151
func handleKafkaConnectTool(readOnly bool) func(context.Context, mcp.CallToolRequest) (*mcp.CallToolResult, error) {
152152
return func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
153153
// Get required parameters
154-
resource, err := common.RequiredParam[string](request.Params.Arguments, "resource")
154+
resource, err := request.RequireString("resource")
155155
if err != nil {
156156
return mcp.NewToolResultError(fmt.Sprintf("Failed to get resource: %v", err)), nil
157157
}
158158

159-
operation, err := common.RequiredParam[string](request.Params.Arguments, "operation")
159+
operation, err := request.RequireString("operation")
160160
if err != nil {
161161
return mcp.NewToolResultError(fmt.Sprintf("Failed to get operation: %v", err)), nil
162162
}
@@ -256,7 +256,7 @@ func handleKafkaConnectorsList(ctx context.Context, admin kafka.Connect, _ mcp.C
256256

257257
func handleKafkaConnectorGet(ctx context.Context, admin kafka.Connect, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
258258
// Get a specific connector
259-
name, err := common.RequiredParam[string](request.Params.Arguments, "name")
259+
name, err := request.RequireString("name")
260260
if err != nil {
261261
return mcp.NewToolResultError(fmt.Sprintf("Failed to get connector name: %v", err)), nil
262262
}
@@ -276,12 +276,12 @@ func handleKafkaConnectorGet(ctx context.Context, admin kafka.Connect, request m
276276

277277
func handleKafkaConnectorCreate(ctx context.Context, admin kafka.Connect, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
278278
// Create a new connector
279-
name, err := common.RequiredParam[string](request.Params.Arguments, "name")
279+
name, err := request.RequireString("name")
280280
if err != nil {
281281
return mcp.NewToolResultError(fmt.Sprintf("Failed to get connector name: %v", err)), nil
282282
}
283283

284-
configMap, err := common.RequiredParamObject(request.Params.Arguments, "config")
284+
configMap, err := common.RequiredParamObject(request.GetArguments(), "config")
285285
if err != nil {
286286
return mcp.NewToolResultError(fmt.Sprintf("Failed to get config: %v", err)), nil
287287
}
@@ -305,12 +305,12 @@ func handleKafkaConnectorCreate(ctx context.Context, admin kafka.Connect, reques
305305

306306
func handleKafkaConnectorUpdate(ctx context.Context, admin kafka.Connect, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
307307
// Update a connector
308-
name, err := common.RequiredParam[string](request.Params.Arguments, "name")
308+
name, err := request.RequireString("name")
309309
if err != nil {
310310
return mcp.NewToolResultError(fmt.Sprintf("Failed to get connector name: %v", err)), nil
311311
}
312312

313-
configMap, err := common.RequiredParamObject(request.Params.Arguments, "config")
313+
configMap, err := common.RequiredParamObject(request.GetArguments(), "config")
314314
if err != nil {
315315
return mcp.NewToolResultError(fmt.Sprintf("Failed to get config: %v", err)), nil
316316
}
@@ -334,7 +334,7 @@ func handleKafkaConnectorUpdate(ctx context.Context, admin kafka.Connect, reques
334334

335335
func handleKafkaConnectorDelete(ctx context.Context, admin kafka.Connect, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
336336
// Delete a connector
337-
name, err := common.RequiredParam[string](request.Params.Arguments, "name")
337+
name, err := request.RequireString("name")
338338
if err != nil {
339339
return mcp.NewToolResultError(fmt.Sprintf("Failed to get connector name: %v", err)), nil
340340
}
@@ -349,7 +349,7 @@ func handleKafkaConnectorDelete(ctx context.Context, admin kafka.Connect, reques
349349

350350
func handleKafkaConnectorRestart(ctx context.Context, admin kafka.Connect, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
351351
// Restart a connector
352-
name, err := common.RequiredParam[string](request.Params.Arguments, "name")
352+
name, err := request.RequireString("name")
353353
if err != nil {
354354
return mcp.NewToolResultError(fmt.Sprintf("Failed to get connector name: %v", err)), nil
355355
}
@@ -364,7 +364,7 @@ func handleKafkaConnectorRestart(ctx context.Context, admin kafka.Connect, reque
364364

365365
func handleKafkaConnectorPause(ctx context.Context, admin kafka.Connect, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
366366
// Pause a connector
367-
name, err := common.RequiredParam[string](request.Params.Arguments, "name")
367+
name, err := request.RequireString("name")
368368
if err != nil {
369369
return mcp.NewToolResultError(fmt.Sprintf("Failed to get connector name: %v", err)), nil
370370
}
@@ -379,7 +379,7 @@ func handleKafkaConnectorPause(ctx context.Context, admin kafka.Connect, request
379379

380380
func handleKafkaConnectorResume(ctx context.Context, admin kafka.Connect, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
381381
// Resume a connector
382-
name, err := common.RequiredParam[string](request.Params.Arguments, "name")
382+
name, err := request.RequireString("name")
383383
if err != nil {
384384
return mcp.NewToolResultError(fmt.Sprintf("Failed to get connector name: %v", err)), nil
385385
}

pkg/mcp/kafka_admin_groups_tools.go

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import (
2626

2727
"github.com/mark3labs/mcp-go/mcp"
2828
"github.com/mark3labs/mcp-go/server"
29-
"github.com/streamnative/streamnative-mcp-server/pkg/common"
3029
"github.com/streamnative/streamnative-mcp-server/pkg/kafka"
3130
"github.com/twmb/franz-go/pkg/kadm"
3231
)
@@ -125,12 +124,12 @@ func KafkaAdminAddGroupsTools(s *server.MCPServer, readOnly bool, features []str
125124
func handleKafkaGroupsTool(readOnly bool) func(context.Context, mcp.CallToolRequest) (*mcp.CallToolResult, error) {
126125
return func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
127126
// Get required parameters
128-
resource, err := common.RequiredParam[string](request.Params.Arguments, "resource")
127+
resource, err := request.RequireString("resource")
129128
if err != nil {
130129
return mcp.NewToolResultError(fmt.Sprintf("Failed to get resource: %v", err)), nil
131130
}
132131

133-
operation, err := common.RequiredParam[string](request.Params.Arguments, "operation")
132+
operation, err := request.RequireString("operation")
134133
if err != nil {
135134
return mcp.NewToolResultError(fmt.Sprintf("Failed to get operation: %v", err)), nil
136135
}
@@ -181,7 +180,7 @@ func handleKafkaGroupsTool(readOnly bool) func(context.Context, mcp.CallToolRequ
181180
}
182181

183182
func handleKafkaGroupDescribe(ctx context.Context, admin *kadm.Client, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
184-
groupName, err := common.RequiredParam[string](request.Params.Arguments, "group")
183+
groupName, err := request.RequireString("group")
185184
if err != nil {
186185
return mcp.NewToolResultError(fmt.Sprintf("Failed to get group name: %v", err)), nil
187186
}
@@ -210,12 +209,12 @@ func handleKafkaGroupDescribe(ctx context.Context, admin *kadm.Client, request m
210209
}
211210

212211
func handleKafkaGroupRemoveMembers(ctx context.Context, admin *kadm.Client, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
213-
groupName, err := common.RequiredParam[string](request.Params.Arguments, "group")
212+
groupName, err := request.RequireString("group")
214213
if err != nil {
215214
return mcp.NewToolResultError(fmt.Sprintf("Failed to get group name: %v", err)), nil
216215
}
217216

218-
members, err := common.RequiredParam[string](request.Params.Arguments, "members")
217+
members, err := request.RequireString("members")
219218
if err != nil {
220219
return mcp.NewToolResultError(fmt.Sprintf("Failed to get members: %v", err)), nil
221220
}
@@ -248,7 +247,7 @@ func handleKafkaGroupsList(ctx context.Context, admin *kadm.Client, _ mcp.CallTo
248247
}
249248

250249
func handleKafkaGroupOffsets(ctx context.Context, admin *kadm.Client, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
251-
groupName, err := common.RequiredParam[string](request.Params.Arguments, "group")
250+
groupName, err := request.RequireString("group")
252251
if err != nil {
253252
return mcp.NewToolResultError(fmt.Sprintf("Failed to get group name: %v", err)), nil
254253
}
@@ -267,12 +266,12 @@ func handleKafkaGroupOffsets(ctx context.Context, admin *kadm.Client, request mc
267266
}
268267

269268
func handleKafkaGroupDeleteOffset(ctx context.Context, admin *kadm.Client, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
270-
groupName, err := common.RequiredParam[string](request.Params.Arguments, "group")
269+
groupName, err := request.RequireString("group")
271270
if err != nil {
272271
return mcp.NewToolResultError(fmt.Sprintf("Failed to get group name: %v", err)), nil
273272
}
274273

275-
topic, err := common.RequiredParam[string](request.Params.Arguments, "topic")
274+
topic, err := request.RequireString("topic")
276275
if err != nil {
277276
return mcp.NewToolResultError(fmt.Sprintf("Failed to get topic name: %v", err)), nil
278277
}
@@ -303,23 +302,23 @@ func handleKafkaGroupDeleteOffset(ctx context.Context, admin *kadm.Client, reque
303302

304303
func handleKafkaGroupSetOffset(ctx context.Context, admin *kadm.Client, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
305304
// Get required parameters
306-
groupName, err := common.RequiredParam[string](request.Params.Arguments, "group")
305+
groupName, err := request.RequireString("group")
307306
if err != nil {
308307
return mcp.NewToolResultError(fmt.Sprintf("Failed to get group name: %v", err)), nil
309308
}
310309

311-
topic, err := common.RequiredParam[string](request.Params.Arguments, "topic")
310+
topic, err := request.RequireString("topic")
312311
if err != nil {
313312
return mcp.NewToolResultError(fmt.Sprintf("Failed to get topic name: %v", err)), nil
314313
}
315314

316-
partition, err := common.RequiredParam[float64](request.Params.Arguments, "partition")
315+
partition, err := request.RequireFloat("partition")
317316
if err != nil {
318317
return mcp.NewToolResultError(fmt.Sprintf("Failed to get partition number: %v", err)), nil
319318
}
320319
partitionInt := int32(partition)
321320

322-
offset, err := common.RequiredParam[float64](request.Params.Arguments, "offset")
321+
offset, err := request.RequireFloat("offset")
323322
if err != nil {
324323
return mcp.NewToolResultError(fmt.Sprintf("Failed to get offset value: %v", err)), nil
325324
}

pkg/mcp/kafka_admin_partitions_tools.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import (
2626

2727
"github.com/mark3labs/mcp-go/mcp"
2828
"github.com/mark3labs/mcp-go/server"
29-
"github.com/streamnative/streamnative-mcp-server/pkg/common"
3029
"github.com/streamnative/streamnative-mcp-server/pkg/kafka"
3130
"github.com/twmb/franz-go/pkg/kadm"
3231
)
@@ -88,12 +87,12 @@ func KafkaAdminAddPartitionsTools(s *server.MCPServer, readOnly bool, features [
8887
func handleKafkaPartitionsTool(readOnly bool) func(context.Context, mcp.CallToolRequest) (*mcp.CallToolResult, error) {
8988
return func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
9089
// Get required parameters
91-
resource, err := common.RequiredParam[string](request.Params.Arguments, "resource")
90+
resource, err := request.RequireString("resource")
9291
if err != nil {
9392
return mcp.NewToolResultError(fmt.Sprintf("Failed to get resource: %v", err)), nil
9493
}
9594

96-
operation, err := common.RequiredParam[string](request.Params.Arguments, "operation")
95+
operation, err := request.RequireString("operation")
9796
if err != nil {
9897
return mcp.NewToolResultError(fmt.Sprintf("Failed to get operation: %v", err)), nil
9998
}
@@ -129,12 +128,12 @@ func handleKafkaPartitionsTool(readOnly bool) func(context.Context, mcp.CallTool
129128
}
130129

131130
func handleKafkaPartitionUpdate(ctx context.Context, admin *kadm.Client, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
132-
topicName, err := common.RequiredParam[string](request.Params.Arguments, "topic")
131+
topicName, err := request.RequireString("topic")
133132
if err != nil {
134133
return mcp.NewToolResultError(fmt.Sprintf("Failed to get topic name: %v", err)), nil
135134
}
136135

137-
newTotal, err := common.RequiredParam[int](request.Params.Arguments, "new-total")
136+
newTotal, err := request.RequireInt("new-total")
138137
if err != nil {
139138
return mcp.NewToolResultError(fmt.Sprintf("Failed to get new total: %v", err)), nil
140139
}

0 commit comments

Comments
 (0)