Skip to content

Commit d0453d8

Browse files
committed
fix: Prevent panic in parsing functions for null results
1 parent 5a5781d commit d0453d8

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

mcp/utils.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package mcp
33
import (
44
"encoding/json"
55
"fmt"
6+
67
"github.com/spf13/cast"
78
)
89

@@ -433,6 +434,10 @@ func ParseContent(contentMap map[string]any) (Content, error) {
433434
}
434435

435436
func ParseGetPromptResult(rawMessage *json.RawMessage) (*GetPromptResult, error) {
437+
if rawMessage == nil {
438+
return nil, fmt.Errorf("rawMessage is nil")
439+
}
440+
436441
var jsonContent map[string]any
437442
if err := json.Unmarshal(*rawMessage, &jsonContent); err != nil {
438443
return nil, fmt.Errorf("failed to unmarshal response: %w", err)
@@ -495,6 +500,10 @@ func ParseGetPromptResult(rawMessage *json.RawMessage) (*GetPromptResult, error)
495500
}
496501

497502
func ParseCallToolResult(rawMessage *json.RawMessage) (*CallToolResult, error) {
503+
if rawMessage == nil {
504+
return nil, fmt.Errorf("rawMessage is nil")
505+
}
506+
498507
var jsonContent map[string]any
499508
if err := json.Unmarshal(*rawMessage, &jsonContent); err != nil {
500509
return nil, fmt.Errorf("failed to unmarshal response: %w", err)
@@ -573,6 +582,10 @@ func ParseResourceContents(contentMap map[string]any) (ResourceContents, error)
573582
}
574583

575584
func ParseReadResourceResult(rawMessage *json.RawMessage) (*ReadResourceResult, error) {
585+
if rawMessage == nil {
586+
return nil, fmt.Errorf("rawMessage is nil")
587+
}
588+
576589
var jsonContent map[string]any
577590
if err := json.Unmarshal(*rawMessage, &jsonContent); err != nil {
578591
return nil, fmt.Errorf("failed to unmarshal response: %w", err)

0 commit comments

Comments
 (0)