all repos — mcp-todotxt @ 95843561d03ec718c9a7088b6f3c885d0b7d66ce

MCP server to manage todo.txt file

logging.go (view raw)

 1// Copyright 2025 The Go MCP SDK Authors. All rights reserved.
 2// Use of this source code is governed by an MIT-style
 3// license that can be found in the LICENSE file.
 4
 5package main
 6
 7import (
 8	"context"
 9	"log"
10	"time"
11
12	"github.com/modelcontextprotocol/go-sdk/mcp"
13)
14
15// createLoggingMiddleware creates an MCP middleware that logs method calls.
16func createLoggingMiddleware() mcp.Middleware {
17	return func(next mcp.MethodHandler) mcp.MethodHandler {
18		return func(
19			ctx context.Context,
20			method string,
21			req mcp.Request,
22		) (mcp.Result, error) {
23			start := time.Now()
24			sessionID := req.GetSession().ID()
25
26			// Log request details.
27			log.Printf("[REQUEST] Session: %s | Method: %s",
28				sessionID,
29				method)
30
31			// Call the actual handler.
32			result, err := next(ctx, method, req)
33
34			// Log response details.
35			duration := time.Since(start)
36
37			if err != nil {
38				log.Printf("[RESPONSE] Session: %s | Method: %s | Status: ERROR | Duration: %v | Error: %v",
39					sessionID,
40					method,
41					duration,
42					err)
43			} else {
44				log.Printf("[RESPONSE] Session: %s | Method: %s | Status: OK | Duration: %v",
45					sessionID,
46					method,
47					duration)
48			}
49
50			return result, err
51		}
52	}
53}