// Copyright 2025 The Go MCP SDK Authors. All rights reserved. // Use of this source code is governed by an MIT-style // license that can be found in the LICENSE file. package main import ( "context" "log" "time" "github.com/modelcontextprotocol/go-sdk/mcp" ) // createLoggingMiddleware creates an MCP middleware that logs method calls. func createLoggingMiddleware() mcp.Middleware { return func(next mcp.MethodHandler) mcp.MethodHandler { return func( ctx context.Context, method string, req mcp.Request, ) (mcp.Result, error) { start := time.Now() sessionID := req.GetSession().ID() // Log request details. log.Printf("[REQUEST] Session: %s | Method: %s", sessionID, method) // Call the actual handler. result, err := next(ctx, method, req) // Log response details. duration := time.Since(start) if err != nil { log.Printf("[RESPONSE] Session: %s | Method: %s | Status: ERROR | Duration: %v | Error: %v", sessionID, method, duration, err) } else { log.Printf("[RESPONSE] Session: %s | Method: %s | Status: OK | Duration: %v", sessionID, method, duration) } return result, err } } }