Skip to content

Commit

Permalink
🎨 Refactor to initialize with clay
Browse files Browse the repository at this point in the history
  • Loading branch information
wesen committed Jan 24, 2025
1 parent aed7652 commit 792daa8
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 65 deletions.
46 changes: 14 additions & 32 deletions cmd/mcp-client/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,13 @@ import (
"encoding/json"
"fmt"
"os"
"time"

clay "github.com/go-go-golems/clay/pkg"
"github.com/go-go-golems/glazed/pkg/help"
"github.com/go-go-golems/go-go-mcp/pkg/client"
"github.com/go-go-golems/go-go-mcp/pkg/protocol"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"github.com/spf13/cobra"
"golang.org/x/term"
)

var (
Expand Down Expand Up @@ -41,40 +40,23 @@ func main() {
Long: `A Model Context Protocol (MCP) client CLI implementation.
Supports both stdio and SSE transports for client-server communication.`,
PersistentPreRun: func(cmd *cobra.Command, args []string) {
level, err := zerolog.ParseLevel(logLevel)
if err != nil {
fmt.Fprintf(os.Stderr, "Invalid log level %s, defaulting to info\n", logLevel)
level = zerolog.InfoLevel
}

var writer zerolog.ConsoleWriter
if term.IsTerminal(int(os.Stderr.Fd())) {
writer = zerolog.ConsoleWriter{Out: os.Stderr, TimeFormat: time.RFC3339}
} else {
writer = zerolog.ConsoleWriter{
Out: os.Stderr,
TimeFormat: time.RFC3339,
NoColor: true,
}
}
// reinitialize the logger because we can now parse --log-level and co
// from the command line flag
err := clay.InitLogger()
cobra.CheckErr(err)

logger := zerolog.New(writer).With().Timestamp()
if withCaller {
logger = logger.Caller()
}
log.Logger = logger.Logger()

zerolog.SetGlobalLevel(level)
if debug {
zerolog.SetGlobalLevel(zerolog.DebugLevel)
}
},
}

helpSystem := help.NewHelpSystem()
helpSystem.SetupCobraRootCommand(rootCmd)

err := clay.InitViper("mcp", rootCmd)
cobra.CheckErr(err)
err = clay.InitLogger()
cobra.CheckErr(err)

// Add persistent flags
rootCmd.PersistentFlags().BoolVarP(&debug, "debug", "d", false, "Enable debug logging")
rootCmd.PersistentFlags().StringVarP(&logLevel, "log-level", "l", "info", "Log level (trace, debug, info, warn, error, fatal, panic)")
rootCmd.PersistentFlags().BoolVar(&withCaller, "with-caller", true, "Show caller information in logs")
rootCmd.PersistentFlags().StringVarP(&transport, "transport", "t", "command", "Transport type (command or sse)")
rootCmd.PersistentFlags().StringVarP(&serverURL, "server", "s", "http://localhost:3001", "Server URL for SSE transport")
rootCmd.PersistentFlags().StringSliceVarP(&cmdArgs, "command", "c", []string{"mcp-server", "start", "--transport", "stdio"}, "Command and arguments for command transport (first argument is the command)")
Expand Down
47 changes: 14 additions & 33 deletions cmd/mcp-server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,18 @@ import (
"syscall"
"time"

"github.com/go-go-golems/glazed/pkg/help"
"github.com/go-go-golems/go-go-mcp/pkg/prompts"
"github.com/go-go-golems/go-go-mcp/pkg/protocol"
"github.com/go-go-golems/go-go-mcp/pkg/resources"
"github.com/go-go-golems/go-go-mcp/pkg/server"
"github.com/go-go-golems/go-go-mcp/pkg/tools"
"github.com/go-go-golems/go-go-mcp/pkg/tools/examples"
"github.com/go-go-golems/go-go-mcp/pkg/tools/examples/cursor"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"github.com/spf13/cobra"
"golang.org/x/term"

clay "github.com/go-go-golems/clay/pkg"
)

var (
Expand All @@ -46,40 +47,20 @@ Supports both stdio and SSE transports for client-server communication.
The server implements the Model Context Protocol (MCP) specification,
providing a framework for building MCP servers and clients.`,
PersistentPreRun: func(cmd *cobra.Command, args []string) {
level, err := zerolog.ParseLevel(logLevel)
if err != nil {
fmt.Fprintf(os.Stderr, "Invalid log level %s, defaulting to info\n", logLevel)
level = zerolog.InfoLevel
}

var writer zerolog.ConsoleWriter
if term.IsTerminal(int(os.Stderr.Fd())) {
writer = zerolog.ConsoleWriter{Out: os.Stderr, TimeFormat: time.RFC3339}
} else {
writer = zerolog.ConsoleWriter{
Out: os.Stderr,
TimeFormat: time.RFC3339,
NoColor: true,
}
}

logger := zerolog.New(writer).With().Timestamp()
if withCaller {
logger = logger.Caller()
}
log.Logger = logger.Logger()

zerolog.SetGlobalLevel(level)
if debug {
zerolog.SetGlobalLevel(zerolog.DebugLevel)
}
// reinitialize the logger because we can now parse --log-level and co
// from the command line flag
err := clay.InitLogger()
cobra.CheckErr(err)
},
}

// Add persistent flags available to all commands
rootCmd.PersistentFlags().BoolVarP(&debug, "debug", "d", false, "Enable debug logging")
rootCmd.PersistentFlags().StringVarP(&logLevel, "log-level", "l", "info", "Log level (trace, debug, info, warn, error, fatal, panic)")
rootCmd.PersistentFlags().BoolVar(&withCaller, "with-caller", true, "Show caller information in logs")
helpSystem := help.NewHelpSystem()
helpSystem.SetupCobraRootCommand(rootCmd)

err := clay.InitViper("mcp", rootCmd)
cobra.CheckErr(err)
err = clay.InitLogger()
cobra.CheckErr(err)

// Start command
startCmd := &cobra.Command{
Expand Down

0 comments on commit 792daa8

Please sign in to comment.