|
18 | 18 | logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(message)s") |
19 | 19 | logger = logging.getLogger("ExpensesMCP") |
20 | 20 |
|
| 21 | +def require_env_var(name: str) -> str: |
| 22 | + value = os.getenv(name) |
| 23 | + if value is None or value.strip() == "": |
| 24 | + logger.error(f"Missing required environment variable: {name}") |
| 25 | + exit(1) |
| 26 | + return value |
| 27 | + |
21 | 28 | # Cosmos DB configuration from environment variables |
22 | | -AZURE_COSMOSDB_ACCOUNT = os.environ["AZURE_COSMOSDB_ACCOUNT"] |
23 | | -AZURE_COSMOSDB_DATABASE = os.environ["AZURE_COSMOSDB_DATABASE"] |
24 | | -AZURE_COSMOSDB_CONTAINER = os.environ["AZURE_COSMOSDB_CONTAINER"] |
| 29 | +AZURE_COSMOSDB_ACCOUNT = require_env_var("AZURE_COSMOSDB_ACCOUNT") |
| 30 | +AZURE_COSMOSDB_DATABASE = require_env_var("AZURE_COSMOSDB_DATABASE") |
| 31 | +AZURE_COSMOSDB_CONTAINER = require_env_var("AZURE_COSMOSDB_CONTAINER") |
25 | 32 | RUNNING_IN_PRODUCTION = os.getenv("RUNNING_IN_PRODUCTION", "false").lower() == "true" |
26 | 33 | AZURE_CLIENT_ID = os.getenv("AZURE_CLIENT_ID", "") |
27 | 34 |
|
28 | 35 | # Keycloak authentication configuration |
29 | | -KEYCLOAK_REALM_URL = os.environ[ |
30 | | - "KEYCLOAK_REALM_URL" |
31 | | -] # e.g., https://routeconfig.<env>.azurecontainerapps.io/auth/realms/mcp |
32 | | -MCP_SERVER_BASE_URL = os.environ["MCP_SERVER_BASE_URL"] # e.g., https://routeconfig.<env>.azurecontainerapps.io |
| 36 | +KEYCLOAK_REALM_URL = require_env_var("KEYCLOAK_REALM_URL") # e.g., https://routeconfig.<env>.azurecontainerapps.io/auth/realms/mcp |
| 37 | +MCP_SERVER_BASE_URL = require_env_var("MCP_SERVER_BASE_URL") # e.g., https://routeconfig.<env>.azurecontainerapps.io |
33 | 38 | MCP_SERVER_AUDIENCE = os.getenv("MCP_SERVER_AUDIENCE", "mcp-server") |
34 | 39 |
|
35 | 40 | # Configure Keycloak JWT verification |
|
0 commit comments