From a532b3b6400c147110318781c307ca55090425cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 May 2025 10:09:06 +0000 Subject: [PATCH 1/2] Bump github.com/mark3labs/mcp-go from 0.28.0 to 0.30.0 Bumps [github.com/mark3labs/mcp-go](https://github.com/mark3labs/mcp-go) from 0.28.0 to 0.30.0. - [Release notes](https://github.com/mark3labs/mcp-go/releases) - [Commits](https://github.com/mark3labs/mcp-go/compare/v0.28.0...v0.30.0) --- updated-dependencies: - dependency-name: github.com/mark3labs/mcp-go dependency-version: 0.30.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index df44c01..c393235 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/StacklokLabs/mkp go 1.24.2 require ( - github.com/mark3labs/mcp-go v0.28.0 + github.com/mark3labs/mcp-go v0.30.0 github.com/stretchr/testify v1.10.0 k8s.io/api v0.33.1 k8s.io/apimachinery v0.33.1 diff --git a/go.sum b/go.sum index cdff0da..c2a39ff 100644 --- a/go.sum +++ b/go.sum @@ -52,8 +52,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mark3labs/mcp-go v0.28.0 h1:7yl4y5D1KYU2f/9Uxp7xfLIggfunHoESCRbrjcytcLM= -github.com/mark3labs/mcp-go v0.28.0/go.mod h1:rXqOudj/djTORU/ThxYx8fqEVj/5pvTuuebQ2RC7uk4= +github.com/mark3labs/mcp-go v0.30.0 h1:Taz7fiefkxY/l8jz1nA90V+WdM2eoMtlvwfWforVYbo= +github.com/mark3labs/mcp-go v0.30.0/go.mod h1:rXqOudj/djTORU/ThxYx8fqEVj/5pvTuuebQ2RC7uk4= github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= From d6e8cbefd9072d5fe24ab8e41e411cb028072fe4 Mon Sep 17 00:00:00 2001 From: Juan Antonio Osorio Date: Tue, 27 May 2025 09:27:49 +0300 Subject: [PATCH 2/2] Fix breaking changes for mcp-go v0.30.0 - Replace direct access to request.Params.Arguments with ParseStringMap - Update test structs to use Arguments any instead of map[string]any - Ensure compatibility with mcp-go v0.29.0+ breaking changes Fixes compilation errors and maintains existing functionality. --- pkg/mcp/get_resource.go | 16 +++++++--------- pkg/mcp/post_resource.go | 16 +++++++--------- pkg/ratelimit/ratelimit_test.go | 30 +++++++++++++++--------------- 3 files changed, 29 insertions(+), 33 deletions(-) diff --git a/pkg/mcp/get_resource.go b/pkg/mcp/get_resource.go index 8fbc04f..fb41499 100644 --- a/pkg/mcp/get_resource.go +++ b/pkg/mcp/get_resource.go @@ -26,15 +26,13 @@ func (m *Implementation) HandleGetResource(ctx context.Context, request mcp.Call // Parse parameters for subresources var parameters map[string]string - if paramsRaw, exists := request.Params.Arguments["parameters"]; exists && paramsRaw != nil { - if paramsMap, ok := paramsRaw.(map[string]interface{}); ok { - parameters = make(map[string]string) - for k, v := range paramsMap { - if strVal, ok := v.(string); ok { - parameters[k] = strVal - } else { - parameters[k] = fmt.Sprintf("%v", v) - } + if paramsMap := mcp.ParseStringMap(request, "parameters", nil); paramsMap != nil { + parameters = make(map[string]string) + for k, v := range paramsMap { + if strVal, ok := v.(string); ok { + parameters[k] = strVal + } else { + parameters[k] = fmt.Sprintf("%v", v) } } } diff --git a/pkg/mcp/post_resource.go b/pkg/mcp/post_resource.go index 352cc3a..7eb3061 100644 --- a/pkg/mcp/post_resource.go +++ b/pkg/mcp/post_resource.go @@ -71,15 +71,13 @@ func parsePostResourceParams(request mcp.CallToolRequest) (*postResourceParams, } // Parse parameters for subresources - if paramsRaw, exists := request.Params.Arguments["parameters"]; exists && paramsRaw != nil { - if paramsMap, ok := paramsRaw.(map[string]interface{}); ok { - params.parameters = make(map[string]string) - for k, v := range paramsMap { - if strVal, ok := v.(string); ok { - params.parameters[k] = strVal - } else { - params.parameters[k] = fmt.Sprintf("%v", v) - } + if paramsMap := mcp.ParseStringMap(request, "parameters", nil); paramsMap != nil { + params.parameters = make(map[string]string) + for k, v := range paramsMap { + if strVal, ok := v.(string); ok { + params.parameters[k] = strVal + } else { + params.parameters[k] = fmt.Sprintf("%v", v) } } } diff --git a/pkg/ratelimit/ratelimit_test.go b/pkg/ratelimit/ratelimit_test.go index 18ab96f..7839595 100644 --- a/pkg/ratelimit/ratelimit_test.go +++ b/pkg/ratelimit/ratelimit_test.go @@ -61,9 +61,9 @@ func TestRateLimiting(t *testing.T) { request := mcp.CallToolRequest{ Params: struct { - Name string `json:"name"` - Arguments map[string]any `json:"arguments,omitempty"` - Meta *mcp.Meta `json:"_meta,omitempty"` + Name string `json:"name"` + Arguments any `json:"arguments,omitempty"` + Meta *mcp.Meta `json:"_meta,omitempty"` }{ Name: "test-tool", }, @@ -101,9 +101,9 @@ func TestMultipleSessionRateLimiting(t *testing.T) { request := mcp.CallToolRequest{ Params: struct { - Name string `json:"name"` - Arguments map[string]any `json:"arguments,omitempty"` - Meta *mcp.Meta `json:"_meta,omitempty"` + Name string `json:"name"` + Arguments any `json:"arguments,omitempty"` + Meta *mcp.Meta `json:"_meta,omitempty"` }{ Name: "test-tool", }, @@ -161,9 +161,9 @@ func TestWindowReset(t *testing.T) { request := mcp.CallToolRequest{ Params: struct { - Name string `json:"name"` - Arguments map[string]any `json:"arguments,omitempty"` - Meta *mcp.Meta `json:"_meta,omitempty"` + Name string `json:"name"` + Arguments any `json:"arguments,omitempty"` + Meta *mcp.Meta `json:"_meta,omitempty"` }{ Name: "test-tool", }, @@ -209,9 +209,9 @@ func TestToolSpecificLimits(t *testing.T) { // Test default limit tool (limit = 1) defaultRequest := mcp.CallToolRequest{ Params: struct { - Name string `json:"name"` - Arguments map[string]any `json:"arguments,omitempty"` - Meta *mcp.Meta `json:"_meta,omitempty"` + Name string `json:"name"` + Arguments any `json:"arguments,omitempty"` + Meta *mcp.Meta `json:"_meta,omitempty"` }{ Name: "default-tool", }, @@ -230,9 +230,9 @@ func TestToolSpecificLimits(t *testing.T) { // Test high limit tool (limit = 3) highLimitRequest := mcp.CallToolRequest{ Params: struct { - Name string `json:"name"` - Arguments map[string]any `json:"arguments,omitempty"` - Meta *mcp.Meta `json:"_meta,omitempty"` + Name string `json:"name"` + Arguments any `json:"arguments,omitempty"` + Meta *mcp.Meta `json:"_meta,omitempty"` }{ Name: "high-limit-tool", },