MCP-Frappe/frappe_mcp/session.py

30 lines
706 B
Python

"""
Per-connection session config using Python contextvars.
Each SSE connection sets its own Frappe credentials, isolated from other users.
Falls back to .env values if no per-session config is set (local stdio mode).
"""
from contextvars import ContextVar
from dataclasses import dataclass
@dataclass
class SessionConfig:
frappe_url: str
api_key: str
api_secret: str
site_name: str = ""
read_only_mode: bool = False
request_timeout: int = 30
_session: ContextVar[SessionConfig | None] = ContextVar("frappe_session", default=None)
def set_session(config: SessionConfig) -> None:
_session.set(config)
def get_session() -> SessionConfig | None:
return _session.get()