Skip to content

Commit 367140e

Browse files
committed
♻️ Refactor logger in mcp
issue #64
1 parent 02e0cca commit 367140e

File tree

3 files changed

+64
-6
lines changed

3 files changed

+64
-6
lines changed

cmd/activity/list.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ package activity
33
import (
44
"bytes"
55
"context"
6+
"io"
7+
"log/slog"
8+
69
"github.com/eat-pray-ai/yutu/cmd"
710
"github.com/eat-pray-ai/yutu/pkg/activity"
811
"github.com/eat-pray-ai/yutu/pkg/utils"
912
"github.com/mark3labs/mcp-go/mcp"
1013
"github.com/spf13/cobra"
11-
"io"
1214
)
1315

1416
var defaultParts = []string{"id", "snippet", "contentDetails"}
@@ -122,11 +124,22 @@ func listHandler(
122124
output, _ = args["output"].(string)
123125
jpath, _ = args["jsonpath"].(string)
124126

127+
slog.InfoContext(ctx, "activity list started")
128+
125129
var writer bytes.Buffer
126130
err := list(&writer)
127131
if err != nil {
132+
slog.ErrorContext(
133+
ctx, "activity list failed",
134+
"error", err,
135+
"args", args,
136+
)
128137
return mcp.NewToolResultError(err.Error()), err
129138
}
139+
slog.InfoContext(
140+
ctx, "activity list completed successfully",
141+
"resultSize", writer.Len(),
142+
)
130143
return mcp.NewToolResultText(writer.String()), nil
131144
}
132145

cmd/constants.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package cmd
22

3+
import (
4+
"log/slog"
5+
"os"
6+
)
7+
38
const (
49
PartsUsage = "Comma separated parts"
510
MRUsage = "The maximum number of items that should be returned"
@@ -8,3 +13,17 @@ const (
813
JPUsage = "JSONPath expression to filter the output"
914
JsonMIME = "application/json"
1015
)
16+
17+
var Logger *slog.Logger
18+
19+
func init() {
20+
Logger = slog.New(
21+
slog.NewTextHandler(
22+
os.Stdout, &slog.HandlerOptions{
23+
Level: slog.LevelInfo,
24+
},
25+
),
26+
)
27+
28+
slog.SetDefault(Logger)
29+
}

cmd/mcp.go

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package cmd
22

33
import (
4+
"context"
45
"fmt"
6+
"log/slog"
7+
"os"
8+
"time"
9+
510
"github.com/mark3labs/mcp-go/server"
611
"github.com/spf13/cobra"
7-
"log"
8-
"time"
912
)
1013

1114
const (
@@ -23,6 +26,7 @@ var (
2326
var MCP = server.NewMCPServer(
2427
"yutu", Version,
2528
server.WithToolCapabilities(true),
29+
server.WithResourceCapabilities(true, true),
2630
server.WithLogging(),
2731
server.WithRecovery(),
2832
)
@@ -32,10 +36,15 @@ var mcpCmd = &cobra.Command{
3236
Short: mcpShort,
3337
Long: mcpLong,
3438
Run: func(cmd *cobra.Command, args []string) {
39+
ctx := context.Background()
3540
var err error
3641
interval := 13 * time.Second
3742
addr := fmt.Sprintf(":%d", port)
38-
message := fmt.Sprintf("%s server listening on %s", mode, addr)
43+
slog.InfoContext(
44+
ctx, "starting MCP server",
45+
"mode", mode,
46+
"version", Version,
47+
)
3948

4049
switch mode {
4150
case "stdio":
@@ -45,12 +54,29 @@ var mcpCmd = &cobra.Command{
4554
MCP,
4655
server.WithHeartbeatInterval(interval),
4756
)
48-
log.Printf("%s/%s\n", message, "mcp")
57+
58+
slog.InfoContext(
59+
ctx, "http server configuration",
60+
"url", fmt.Sprintf("http://localhost:%d/mcp", port),
61+
"heartbeat_interval", interval,
62+
)
4963
err = httpServer.Start(addr)
64+
default:
65+
slog.ErrorContext(
66+
ctx, "invalid server mode",
67+
"mode", mode,
68+
"valid_modes", []string{"stdio", "http"},
69+
)
70+
os.Exit(1)
5071
}
5172

5273
if err != nil {
53-
log.Printf("Server error: %v\n", err)
74+
slog.ErrorContext(
75+
ctx, "starting server failed",
76+
"error", err,
77+
"mode", mode,
78+
)
79+
os.Exit(1)
5480
}
5581
},
5682
}

0 commit comments

Comments
 (0)