@@ -2,6 +2,7 @@ package main
22
33import (
44 "bytes"
5+ "crypto/rand"
56 "encoding/json"
67 "fmt"
78 "io"
@@ -11,8 +12,6 @@ import (
1112 "slices"
1213 "strings"
1314
14- "crypto/rand"
15-
1615 "github.com/spf13/cobra"
1716 "github.com/spf13/viper"
1817)
@@ -161,7 +160,7 @@ func main() {
161160 _ = rootCmd .MarkPersistentFlagRequired ("stdio-server-cmd" )
162161
163162 // Add global flag for pretty printing
164- rootCmd .PersistentFlags ().Bool ("pretty" , true , "Pretty print MCP response (only for JSON responses)" )
163+ rootCmd .PersistentFlags ().Bool ("pretty" , true , "Pretty print MCP response (only for JSON or JSONL responses)" )
165164
166165 // Add the tools command to the root command
167166 rootCmd .AddCommand (toolsCmd )
@@ -426,15 +425,26 @@ func printResponse(response string, prettyPrint bool) error {
426425 // Extract text from content items of type "text"
427426 for _ , content := range resp .Result .Content {
428427 if content .Type == "text" {
429- // Unmarshal the text content
430- var textContent map [string ]interface {}
431- if err := json .Unmarshal ([]byte (content .Text ), & textContent ); err != nil {
432- return fmt .Errorf ("failed to parse text content: %w" , err )
428+ var textContentObj map [string ]interface {}
429+ err := json .Unmarshal ([]byte (content .Text ), & textContentObj )
430+
431+ if err == nil {
432+ prettyText , err := json .MarshalIndent (textContentObj , "" , " " )
433+ if err != nil {
434+ return fmt .Errorf ("failed to pretty print text content: %w" , err )
435+ }
436+ fmt .Println (string (prettyText ))
437+ continue
438+ }
439+
440+ // Fallback parsing as JSONL
441+ var textContentList []map [string ]interface {}
442+ if err := json .Unmarshal ([]byte (content .Text ), & textContentList ); err != nil {
443+ return fmt .Errorf ("failed to parse text content as a list: %w" , err )
433444 }
434- // Pretty print the text content
435- prettyText , err := json .MarshalIndent (textContent , "" , " " )
445+ prettyText , err := json .MarshalIndent (textContentList , "" , " " )
436446 if err != nil {
437- return fmt .Errorf ("failed to pretty print text content: %w" , err )
447+ return fmt .Errorf ("failed to pretty print array content: %w" , err )
438448 }
439449 fmt .Println (string (prettyText ))
440450 }
0 commit comments