diff --git a/src/personal_mcp/web/config.py b/src/personal_mcp/web/config.py index b14e646..5a55245 100644 --- a/src/personal_mcp/web/config.py +++ b/src/personal_mcp/web/config.py @@ -1,9 +1,11 @@ +from contextvars import ContextVar from pathlib import Path from pydantic import Field from pydantic_settings import BaseSettings from pydantic_settings import SettingsConfigDict +DEFAULT_ENV_FILE = Path(".env").resolve() _REPO_ROOT = Path(__file__).resolve().parents[3] @@ -11,7 +13,7 @@ class Settings(BaseSettings): """Runtime settings for the HTTP MCP and docs server.""" model_config = SettingsConfigDict( - env_file=".env", + env_file=DEFAULT_ENV_FILE, env_prefix="PERSONAL_MCP_", extra="ignore", ) @@ -25,5 +27,12 @@ class Settings(BaseSettings): site_dir: Path = Field(default=_REPO_ROOT / "site") +_settings: ContextVar[Settings | None] = ContextVar("settings", default=None) + + def get_settings() -> Settings: - return Settings() + settings = _settings.get() + if settings is None: + settings = Settings() + _settings.set(settings) + return settings