1
1
package cmd
2
2
3
3
import (
4
+ "context"
4
5
"fmt"
6
+ "log/slog"
7
+ "os"
8
+ "time"
9
+
5
10
"github.com/mark3labs/mcp-go/server"
6
11
"github.com/spf13/cobra"
7
- "log"
8
- "time"
9
12
)
10
13
11
14
const (
23
26
var MCP = server .NewMCPServer (
24
27
"yutu" , Version ,
25
28
server .WithToolCapabilities (true ),
29
+ server .WithResourceCapabilities (true , true ),
26
30
server .WithLogging (),
27
31
server .WithRecovery (),
28
32
)
@@ -32,10 +36,15 @@ var mcpCmd = &cobra.Command{
32
36
Short : mcpShort ,
33
37
Long : mcpLong ,
34
38
Run : func (cmd * cobra.Command , args []string ) {
39
+ ctx := context .Background ()
35
40
var err error
36
41
interval := 13 * time .Second
37
42
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
+ )
39
48
40
49
switch mode {
41
50
case "stdio" :
@@ -45,12 +54,29 @@ var mcpCmd = &cobra.Command{
45
54
MCP ,
46
55
server .WithHeartbeatInterval (interval ),
47
56
)
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
+ )
49
63
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 )
50
71
}
51
72
52
73
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 )
54
80
}
55
81
},
56
82
}
0 commit comments