diff --git a/logger/logger.go b/logger/logger.go
new file mode 100644
index 0000000..2d58030
--- /dev/null
+++ b/logger/logger.go
@@ -0,0 +1,57 @@
+package logger
+
+import (
+	"io"
+	"os"
+	"time"
+
+	"github.com/korap/korap-mcp/config"
+	"github.com/rs/zerolog"
+)
+
+// SetupLogger configures zerolog based on the provided configuration
+func SetupLogger(cfg *config.LoggingConfig) (zerolog.Logger, error) {
+	// Set global log level
+	level, err := zerolog.ParseLevel(cfg.Level)
+	if err != nil {
+		return zerolog.Logger{}, err
+	}
+	zerolog.SetGlobalLevel(level)
+
+	// Determine output destination
+	var output io.Writer
+	if cfg.File != "" {
+		file, err := os.OpenFile(cfg.File, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
+		if err != nil {
+			return zerolog.Logger{}, err
+		}
+		output = file
+	} else {
+		output = os.Stdout
+	}
+
+	// Configure output format
+	var logger zerolog.Logger
+	if cfg.Format == "json" {
+		logger = zerolog.New(output).With().Timestamp().Logger()
+	} else {
+		// Text format with console writer for better readability
+		consoleWriter := zerolog.ConsoleWriter{
+			Out:        output,
+			TimeFormat: time.RFC3339,
+		}
+		logger = zerolog.New(consoleWriter).With().Timestamp().Logger()
+	}
+
+	return logger, nil
+}
+
+// GetLogger returns a configured logger instance
+func GetLogger(cfg *config.LoggingConfig) zerolog.Logger {
+	logger, err := SetupLogger(cfg)
+	if err != nil {
+		// Fallback to default logger if setup fails
+		return zerolog.New(os.Stderr).With().Timestamp().Logger()
+	}
+	return logger
+}
