diff --git a/mcp/protocol_test.go b/mcp/protocol_test.go index 20f2bb87..751d0812 100644 --- a/mcp/protocol_test.go +++ b/mcp/protocol_test.go @@ -64,6 +64,16 @@ func TestParamsMeta(t *testing.T) { t.Errorf("got %v, want `t`", g) } + // The GetProgressToken and SetProgressToken methods work on a params struct that doesn't have a Meta field. + if g := p2.GetProgressToken(); g != nil { + t.Errorf("got %v, want nil", g) + } + + p2.SetProgressToken("t") + if g := p2.GetProgressToken(); g != "t" { + t.Errorf("got %v, want `t`", g) + } + // You can set a progress token to an int, int32 or int64. p.SetProgressToken(int(1)) p.SetProgressToken(int32(1)) diff --git a/mcp/shared.go b/mcp/shared.go index f8c92502..5662b121 100644 --- a/mcp/shared.go +++ b/mcp/shared.go @@ -447,6 +447,7 @@ func setProgressToken(p Params, pt any) { m := p.GetMeta() if m == nil { m = map[string]any{} + p.SetMeta(m) } m[progressTokenKey] = pt }