@@ -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 JSONor JSONL responses)" )
165164
166165// Add the tools command to the root command
167166rootCmd .AddCommand (toolsCmd )
@@ -426,15 +425,26 @@ func printResponse(response string, prettyPrint bool) error {
426425// Extract text from content items of type "text"
427426for _ ,content := range resp .Result .Content {
428427if 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 ,"" ," " )
436446if err != nil {
437- return fmt .Errorf ("failed to pretty printtext content: %w" ,err )
447+ return fmt .Errorf ("failed to pretty printarray content: %w" ,err )
438448}
439449fmt .Println (string (prettyText ))
440450}