Skip to main content
Glama
env_handler.py1.71 kB
import os from typing import Optional from dotenv import load_dotenv from .config_handler import is_slack_enabled load_dotenv() def _require(name: str) -> str: val = os.getenv(name) if not val: raise EnvironmentError(f"Missing required environment variable: {name}") return val def _optional(name: str, default: Optional[str] = None) -> Optional[str]: val = os.getenv(name) return val if val is not None else default # Always required DATABASE_URL: str = _require("DATABASE_URL") # Auth configuration (either JWT_SECRET for HS256 or JWT_JWKS_URL for RS256 JWKS) # Make both optional; middleware will decide which to use. By request, set a default JWKS URL. JWT_SECRET: Optional[str] = _optional("JWT_SECRET") JWT_JWKS_URL: Optional[str] = _optional("JWT_JWKS_URL") # Optional issuer/audience validation JWT_ISSUER: Optional[str] = _optional("JWT_ISSUER") JWT_AUDIENCE: Optional[str] = _optional("JWT_AUDIENCE") # Optional header-based auth passthrough AUTH_ALLOW_USER_ID_HEADER: str = _optional("AUTH_ALLOW_USER_ID_HEADER", "false") or "false" AUTH_USER_ID_HEADER_NAME: str = _optional("AUTH_USER_ID_HEADER_NAME", "x-user-id") or "x-user-id" # Conditionally required based on config.json having slack if is_slack_enabled(): SLACK_CLIENT_ID: str = _require("SLACK_CLIENT_ID") SLACK_CLIENT_SECRET: str = _require("SLACK_CLIENT_SECRET") SLACK_REDIRECT_URI: str = _require("SLACK_REDIRECT_URI") # Encryption keys for token column (comma-separated MultiFernet keys) TOKEN_ENCRYPTION_KEYS_RAW: Optional[str] = _optional("TOKEN_ENCRYPTION_KEYS") TOKEN_ENCRYPTION_KEYS = [k.strip() for k in TOKEN_ENCRYPTION_KEYS_RAW.split(",")] if TOKEN_ENCRYPTION_KEYS_RAW else []

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bernerspace/bernerspace'

If you have feedback or need assistance with the MCP directory API, please join our Discord server