Newer
Older
vmk-360_data_mcp / src / vmk_data_mcp / config.py
"""Конфигурация сервера — читается из .env и env-переменных."""

from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict


class Settings(BaseSettings):
    model_config = SettingsConfigDict(
        env_file=".env",
        env_file_encoding="utf-8",
        extra="ignore",
    )

    # PostgreSQL
    database_url: str = Field(
        default="postgresql://postgres:postgres@localhost:5432/vmk_data",
        description="URL подключения к PostgreSQL (asyncpg)",
    )
    db_pool_min_size: int = Field(default=2, description="Минимум соединений в пуле")
    db_pool_max_size: int = Field(default=10, description="Максимум соединений в пуле")
    db_query_timeout: int = Field(
        default=30, description="Таймаут SQL-запросов в секундах"
    )

    # Ollama / Embeddings
    ollama_base_url: str = Field(
        default="http://192.168.1.75:11434",
        description="Базовый URL Ollama API",
    )
    ollama_embed_model: str = Field(
        default="nomic-embed-text",
        description="Модель для генерации эмбеддингов",
    )
    ollama_embed_dimensions: int = Field(
        default=768, description="Размерность вектора эмбеддинга"
    )
    ollama_request_timeout: float = Field(
        default=60.0, description="Таймаут запроса к Ollama в секундах"
    )

    # MCP Server
    mcp_server_name: str = Field(default="vmk-data-mcp")
    mcp_port: int = Field(default=8080, description="Порт HTTP транспорта")
    mcp_default_similarity: float = Field(
        default=0.7,
        ge=0.0,
        le=1.0,
        description="Порог косинусной близости для vector-поиска (0.7 = широкий)",
    )


settings = Settings()