diff --git a/service/cache.go b/service/cache.go
index 43ec439..00b3abd 100644
--- a/service/cache.go
+++ b/service/cache.go
@@ -9,7 +9,7 @@
 	"strings"
 	"time"
 
-	cfg "github.com/korap/korap-mcp/config"
+	"github.com/korap/korap-mcp/config"
 	"github.com/korap/korap-mcp/logger"
 	"github.com/maypok86/otter"
 	"github.com/rs/zerolog"
@@ -31,54 +31,29 @@
 type Cache struct {
 	cache  *otter.Cache[string, *CacheEntry]
 	logger zerolog.Logger
-	config CacheConfig
+	config *config.CacheConfig
 }
 
-// CacheConfig configures the cache behavior
-type CacheConfig struct {
-	// Enabled controls whether caching is active
-	Enabled bool
-	// DefaultTTL is the default time-to-live for cache entries
-	DefaultTTL time.Duration
-	// SearchTTL is the TTL for search results
-	SearchTTL time.Duration
-	// MetadataTTL is the TTL for metadata and corpus information
-	MetadataTTL time.Duration
-	// MaxSize is the maximum number of cache entries
-	MaxSize int
-}
-
-// DefaultCacheConfig returns a default cache configuration
-func DefaultCacheConfig() CacheConfig {
-	return CacheConfig{
-		Enabled:     true,
-		DefaultTTL:  5 * time.Minute,
-		SearchTTL:   2 * time.Minute,  // Search results change less frequently
-		MetadataTTL: 15 * time.Minute, // Metadata is more stable
-		MaxSize:     1000,
-	}
-}
-
-// NewCache creates a new cache instance
-func NewCache(config CacheConfig) (*Cache, error) {
+// NewCache creates a new cache instance from config.CacheConfig
+func NewCache(cacheConfig *config.CacheConfig) (*Cache, error) {
 	// Create default logging config for cache
-	logConfig := &cfg.LoggingConfig{
+	logConfig := &config.LoggingConfig{
 		Level:  "info",
 		Format: "text",
 	}
 
-	if !config.Enabled {
+	if !cacheConfig.Enabled {
 		return &Cache{
 			cache:  nil,
 			logger: logger.GetLogger(logConfig),
-			config: config,
+			config: cacheConfig,
 		}, nil
 	}
 
 	// Create otter cache with specified capacity
-	cache, err := otter.MustBuilder[string, *CacheEntry](config.MaxSize).
+	cache, err := otter.MustBuilder[string, *CacheEntry](cacheConfig.MaxSize).
 		CollectStats().
-		WithTTL(config.DefaultTTL).
+		WithTTL(cacheConfig.GetDefaultTTL()).
 		Build()
 	if err != nil {
 		return nil, fmt.Errorf("failed to create cache: %w", err)
@@ -87,7 +62,7 @@
 	return &Cache{
 		cache:  &cache,
 		logger: logger.GetLogger(logConfig),
-		config: config,
+		config: cacheConfig,
 	}, nil
 }
 
@@ -188,9 +163,9 @@
 		"hit_ratio":    stats.Ratio(),
 		"evictions":    stats.EvictedCount(),
 		"max_size":     c.config.MaxSize,
-		"default_ttl":  c.config.DefaultTTL.String(),
-		"search_ttl":   c.config.SearchTTL.String(),
-		"metadata_ttl": c.config.MetadataTTL.String(),
+		"default_ttl":  c.config.DefaultTTL,
+		"search_ttl":   c.config.SearchTTL,
+		"metadata_ttl": c.config.MetadataTTL,
 	}
 }
 
@@ -200,17 +175,17 @@
 
 	// Search endpoints get shorter TTL
 	if strings.Contains(endpoint, "search") || strings.Contains(endpoint, "query") {
-		return c.config.SearchTTL
+		return c.config.GetSearchTTL()
 	}
 
 	// Metadata and corpus endpoints get longer TTL
 	if strings.Contains(endpoint, "corpus") || strings.Contains(endpoint, "metadata") ||
 		strings.Contains(endpoint, "statistics") || strings.Contains(endpoint, "info") {
-		return c.config.MetadataTTL
+		return c.config.GetMetadataTTL()
 	}
 
 	// Default TTL for other endpoints
-	return c.config.DefaultTTL
+	return c.config.GetDefaultTTL()
 }
 
 // Close closes the cache and cleans up resources
diff --git a/service/cache_test.go b/service/cache_test.go
index 037f0b8..9288660 100644
--- a/service/cache_test.go
+++ b/service/cache_test.go
@@ -5,36 +5,37 @@
 	"testing"
 	"time"
 
+	"github.com/korap/korap-mcp/config"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
 
 func TestDefaultCacheConfig(t *testing.T) {
-	config := DefaultCacheConfig()
+	cacheConfig := config.DefaultCacheConfig()
 
-	assert.True(t, config.Enabled)
-	assert.Equal(t, 5*time.Minute, config.DefaultTTL)
-	assert.Equal(t, 2*time.Minute, config.SearchTTL)
-	assert.Equal(t, 15*time.Minute, config.MetadataTTL)
-	assert.Equal(t, 1000, config.MaxSize)
+	assert.True(t, cacheConfig.Enabled)
+	assert.Equal(t, "5m", cacheConfig.DefaultTTL)
+	assert.Equal(t, "2m", cacheConfig.SearchTTL)
+	assert.Equal(t, "15m", cacheConfig.MetadataTTL)
+	assert.Equal(t, 1000, cacheConfig.MaxSize)
 }
 
 func TestNewCache(t *testing.T) {
 	tests := []struct {
 		name           string
-		config         CacheConfig
+		config         *config.CacheConfig
 		expectError    bool
 		expectNilCache bool
 	}{
 		{
 			name:           "enabled cache",
-			config:         DefaultCacheConfig(),
+			config:         config.DefaultCacheConfig(),
 			expectError:    false,
 			expectNilCache: false,
 		},
 		{
 			name: "disabled cache",
-			config: CacheConfig{
+			config: &config.CacheConfig{
 				Enabled: false,
 			},
 			expectError:    false,
@@ -42,11 +43,11 @@
 		},
 		{
 			name: "custom configuration",
-			config: CacheConfig{
+			config: &config.CacheConfig{
 				Enabled:     true,
-				DefaultTTL:  1 * time.Minute,
-				SearchTTL:   30 * time.Second,
-				MetadataTTL: 5 * time.Minute,
+				DefaultTTL:  "1m",
+				SearchTTL:   "30s",
+				MetadataTTL: "5m",
 				MaxSize:     500,
 			},
 			expectError:    false,
@@ -78,7 +79,7 @@
 }
 
 func TestCacheGetSet(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	ctx := context.Background()
@@ -99,7 +100,7 @@
 }
 
 func TestCacheExpiry(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	ctx := context.Background()
@@ -125,7 +126,7 @@
 }
 
 func TestCacheDelete(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	ctx := context.Background()
@@ -147,7 +148,7 @@
 }
 
 func TestCacheClear(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	ctx := context.Background()
@@ -179,7 +180,7 @@
 }
 
 func TestCacheStats(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	ctx := context.Background()
@@ -203,8 +204,8 @@
 }
 
 func TestCacheStatsDisabled(t *testing.T) {
-	config := CacheConfig{Enabled: false}
-	cache, err := NewCache(config)
+	cacheConfig := &config.CacheConfig{Enabled: false}
+	cache, err := NewCache(cacheConfig)
 	require.NoError(t, err)
 
 	stats := cache.Stats()
@@ -213,8 +214,8 @@
 }
 
 func TestCacheDisabled(t *testing.T) {
-	config := CacheConfig{Enabled: false}
-	cache, err := NewCache(config)
+	cacheConfig := &config.CacheConfig{Enabled: false}
+	cache, err := NewCache(cacheConfig)
 	require.NoError(t, err)
 
 	ctx := context.Background()
@@ -238,7 +239,7 @@
 }
 
 func TestGenerateCacheKey(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	tests := []struct {
@@ -304,7 +305,7 @@
 }
 
 func TestCacheKeyDeterministic(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	// Test that map parameter order doesn't affect cache key generation
@@ -341,8 +342,8 @@
 }
 
 func TestGetTTLForEndpoint(t *testing.T) {
-	config := DefaultCacheConfig()
-	cache, err := NewCache(config)
+	cacheConfig := config.DefaultCacheConfig()
+	cache, err := NewCache(cacheConfig)
 	require.NoError(t, err)
 
 	tests := []struct {
@@ -353,42 +354,42 @@
 		{
 			name:     "search endpoint",
 			endpoint: "/api/v1/search",
-			expected: config.SearchTTL,
+			expected: cacheConfig.GetSearchTTL(),
 		},
 		{
 			name:     "query endpoint",
 			endpoint: "/query",
-			expected: config.SearchTTL,
+			expected: cacheConfig.GetSearchTTL(),
 		},
 		{
 			name:     "corpus endpoint",
 			endpoint: "/corpus",
-			expected: config.MetadataTTL,
+			expected: cacheConfig.GetMetadataTTL(),
 		},
 		{
 			name:     "metadata endpoint",
 			endpoint: "/metadata",
-			expected: config.MetadataTTL,
+			expected: cacheConfig.GetMetadataTTL(),
 		},
 		{
 			name:     "statistics endpoint",
 			endpoint: "/statistics",
-			expected: config.MetadataTTL,
+			expected: cacheConfig.GetMetadataTTL(),
 		},
 		{
 			name:     "info endpoint",
 			endpoint: "/info",
-			expected: config.MetadataTTL,
+			expected: cacheConfig.GetMetadataTTL(),
 		},
 		{
 			name:     "other endpoint",
 			endpoint: "/other",
-			expected: config.DefaultTTL,
+			expected: cacheConfig.GetDefaultTTL(),
 		},
 		{
 			name:     "case insensitive",
 			endpoint: "/API/V1/SEARCH",
-			expected: config.SearchTTL,
+			expected: cacheConfig.GetSearchTTL(),
 		},
 	}
 
@@ -423,7 +424,7 @@
 }
 
 func TestCacheClose(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	// Add some data
@@ -435,7 +436,7 @@
 	assert.NoError(t, err)
 
 	// Disabled cache close should also not error
-	disabledCache, err := NewCache(CacheConfig{Enabled: false})
+	disabledCache, err := NewCache(&config.CacheConfig{Enabled: false})
 	require.NoError(t, err)
 
 	err = disabledCache.Close()
diff --git a/service/client.go b/service/client.go
index a7c532c..3cfd127 100644
--- a/service/client.go
+++ b/service/client.go
@@ -27,7 +27,7 @@
 	BaseURL     string
 	Timeout     time.Duration
 	OAuthConfig *config.OAuthConfig
-	CacheConfig *CacheConfig
+	CacheConfig *config.CacheConfig
 }
 
 // NewClient creates a new KorAP API client
@@ -63,14 +63,14 @@
 
 	// Initialize cache if configuration is provided
 	if opts.CacheConfig != nil {
-		cache, err := NewCache(*opts.CacheConfig)
+		cache, err := NewCache(opts.CacheConfig)
 		if err != nil {
 			return nil, fmt.Errorf("failed to create cache: %w", err)
 		}
 		client.cache = cache
 	} else {
 		// Use default cache configuration
-		defaultConfig := DefaultCacheConfig()
+		defaultConfig := config.DefaultCacheConfig()
 		cache, err := NewCache(defaultConfig)
 		if err != nil {
 			return nil, fmt.Errorf("failed to create default cache: %w", err)
diff --git a/service/client_test.go b/service/client_test.go
index 6ebb61e..1785ede 100644
--- a/service/client_test.go
+++ b/service/client_test.go
@@ -353,12 +353,12 @@
 	defer server.Close()
 
 	t.Run("cache enabled", func(t *testing.T) {
-		cacheConfig := DefaultCacheConfig()
-		cacheConfig.DefaultTTL = 1 * time.Minute
+		cacheConfig := config.DefaultCacheConfig()
+		cacheConfig.DefaultTTL = "1m"
 
 		client, err := NewClient(ClientOptions{
 			BaseURL:     server.URL,
-			CacheConfig: &cacheConfig,
+			CacheConfig: cacheConfig,
 		})
 		assert.NoError(t, err)
 		defer client.Close()
@@ -388,11 +388,11 @@
 	})
 
 	t.Run("cache disabled", func(t *testing.T) {
-		cacheConfig := CacheConfig{Enabled: false}
+		cacheConfig := &config.CacheConfig{Enabled: false}
 
 		client, err := NewClient(ClientOptions{
 			BaseURL:     server.URL,
-			CacheConfig: &cacheConfig,
+			CacheConfig: cacheConfig,
 		})
 		assert.NoError(t, err)
 		defer client.Close()
@@ -419,17 +419,17 @@
 	})
 
 	t.Run("cache expiry", func(t *testing.T) {
-		cacheConfig := CacheConfig{
+		cacheConfig := &config.CacheConfig{
 			Enabled:     true,
-			DefaultTTL:  50 * time.Millisecond,
-			SearchTTL:   50 * time.Millisecond,
-			MetadataTTL: 50 * time.Millisecond,
+			DefaultTTL:  "50ms",
+			SearchTTL:   "50ms",
+			MetadataTTL: "50ms",
 			MaxSize:     100,
 		}
 
 		client, err := NewClient(ClientOptions{
 			BaseURL:     server.URL,
-			CacheConfig: &cacheConfig,
+			CacheConfig: cacheConfig,
 		})
 		assert.NoError(t, err)
 		defer client.Close()
