55 "fmt"
66 "io"
77 "log"
8+ "log/slog"
89 "net/http"
910 "net/url"
1011 "os"
@@ -21,7 +22,6 @@ import (
2122 "github.com/mark3labs/mcp-go/mcp"
2223 "github.com/mark3labs/mcp-go/server"
2324 "github.com/shurcooL/githubv4"
24- "github.com/sirupsen/logrus"
2525)
2626
2727type MCPServerConfig struct {
@@ -203,17 +203,19 @@ func RunStdioServer(cfg StdioServerConfig) error {
203203
204204 stdioServer := server .NewStdioServer (ghServer )
205205
206- logrusLogger := logrus . New ()
206+ var slogHandler slog. Handler
207207 if cfg .LogFilePath != "" {
208208 file , err := os .OpenFile (cfg .LogFilePath , os .O_CREATE | os .O_WRONLY | os .O_APPEND , 0600 )
209209 if err != nil {
210210 return fmt .Errorf ("failed to open log file: %w" , err )
211211 }
212-
213- logrusLogger . SetLevel ( logrus . DebugLevel )
214- logrusLogger . SetOutput ( file )
212+ slogHandler = slog . NewTextHandler ( file , & slog. HandlerOptions { Level : slog . LevelDebug })
213+ } else {
214+ slogHandler = slog . NewTextHandler ( os . Stderr , & slog. HandlerOptions { Level : slog . LevelInfo } )
215215 }
216- stdLogger := log .New (logrusLogger .Writer (), "stdioserver" , 0 )
216+ logger := slog .New (slogHandler )
217+ logger .Info ("starting server" , "version" , cfg .Version , "host" , cfg .Host , "dynamicToolsets" , cfg .DynamicToolsets , "readOnly" , cfg .ReadOnly )
218+ stdLogger := log .New (os .Stderr , "stdioserver" , 0 )
217219 stdioServer .SetErrorLogger (stdLogger )
218220
219221 if cfg .ExportTranslations {
@@ -227,7 +229,7 @@ func RunStdioServer(cfg StdioServerConfig) error {
227229 in , out := io .Reader (os .Stdin ), io .Writer (os .Stdout )
228230
229231 if cfg .EnableCommandLogging {
230- loggedIO := mcplog .NewIOLogger (in , out , logrusLogger )
232+ loggedIO := mcplog .NewIOLogger (in , out , logger )
231233 in , out = loggedIO , loggedIO
232234 }
233235 // enable GitHub errors in the context
@@ -241,9 +243,10 @@ func RunStdioServer(cfg StdioServerConfig) error {
241243 // Wait for shutdown signal
242244 select {
243245 case <- ctx .Done ():
244- logrusLogger . Infof ("shutting down server... " )
246+ logger . Info ("shutting down server" , "signal" , "context done " )
245247 case err := <- errC :
246248 if err != nil {
249+ logger .Error ("error running server" , "error" , err )
247250 return fmt .Errorf ("error running server: %w" , err )
248251 }
249252 }
0 commit comments