"""Configuration for Pathfinder MCP Server."""
import os
from dataclasses import dataclass
from typing import Literal
@dataclass
class ServerConfig:
"""Server configuration."""
# Transport settings
transport: Literal["stdio", "sse"] = "stdio"
host: str = "127.0.0.1"
port: int = 8080
# Context settings
max_context_tokens: int = 128_000
compact_threshold: float = 0.6 # 60%
warn_threshold: float = 0.7 # 70%
@classmethod
def from_env(cls) -> "ServerConfig":
"""Load configuration from environment variables."""
transport_str = os.environ.get("PATHFINDER_TRANSPORT", "stdio").lower()
transport: Literal["stdio", "sse"] = (
"sse" if transport_str == "sse" else "stdio"
)
# Railway/cloud platforms inject PORT - use it if PATHFINDER_PORT not set
default_port = os.environ.get("PORT", "8080")
return cls(
transport=transport,
host=os.environ.get("PATHFINDER_HOST", "127.0.0.1"),
port=int(os.environ.get("PATHFINDER_PORT", default_port)),
max_context_tokens=int(os.environ.get("PATHFINDER_MAX_TOKENS", "128000")),
)
# Global config instance
config = ServerConfig.from_env()