diff --git a/internal/mcpserver/server.go b/internal/mcpserver/server.go index 9d49c84..279c902 100644 --- a/internal/mcpserver/server.go +++ b/internal/mcpserver/server.go @@ -341,7 +341,9 @@ func (r Runner) handleInitialize(encoder *json.Encoder, session *runnerSession, return writeRPCResult(encoder, request.ID, map[string]any{ "protocolVersion": negotiatedVersion, "capabilities": map[string]any{ - "tools": map[string]any{}, + "tools": map[string]any{ + "listChanged": true, + }, }, "serverInfo": map[string]any{ "name": mcpServerName, diff --git a/internal/mcpserver/server_test.go b/internal/mcpserver/server_test.go index 1039920..9cf1e17 100644 --- a/internal/mcpserver/server_test.go +++ b/internal/mcpserver/server_test.go @@ -227,6 +227,13 @@ func TestRunnerRunWritesToolManifestAndHandlesRequests(t *testing.T) { if _, ok := initializeResponse.Result.Capabilities["tools"]; !ok { t.Fatalf("expected tools capability, got %#v", initializeResponse.Result.Capabilities) } + toolsCapability, ok := initializeResponse.Result.Capabilities["tools"].(map[string]any) + if !ok { + t.Fatalf("expected tools capability object, got %#v", initializeResponse.Result.Capabilities["tools"]) + } + if listChanged, ok := toolsCapability["listChanged"].(bool); !ok || !listChanged { + t.Fatalf("expected tools.listChanged=true, got %#v", toolsCapability) + } if initializeResponse.Result.ServerInfo.Name == "" || initializeResponse.Result.ServerInfo.Version == "" { t.Fatalf("expected server info, got %#v", initializeResponse.Result.ServerInfo) }