NitroStack Logo
/python
/cli
/configuration

Configuration

Python NitroStack has no nitro.yaml. Configure with .env, process environment, and ServerConfig.

ConfigModule.for_root(env_file_path=".env", defaults={...}) plus ConfigService.get / get_or_throw.

Environment variables

VariableDescription
HOSTBind address (default 127.0.0.1). Use 0.0.0.0 in containers.
PORT / MCP_SERVER_PORTHTTP port (default 3000). Overridden by --port.
WIDGETS_DEV_PORTWidget port (default 3001). Overridden by --widget.
MCP_TRANSPORT_TYPEstdio | http | dual
NODE_ENVproduction defaults transport to dual unless overridden
MCP_STATELESStrue forces modern/stateless HTTP; false forces sessionful
NITRO_MCP_PROTOCOL_VERSIONProtocol era (auto, modern, legacy, …)
MCP_MAX_SESSIONSConcurrent Streamable HTTP sessions; extra sessions get HTTP 429
MCP_SESSION_TIMEOUT_MSIdle timeout for stateful HTTP sessions
MCP_GRACEFUL_SHUTDOWN_TIMEOUT_MSIn-flight drain on shutdown (default 10000)
MCP_ALLOWED_HOSTS / MCP_ALLOWED_ORIGINSDNS-rebinding allow-lists when CORS is off
TRUSTED_PROXIES / MCP_TRUSTED_PROXIESWho may send X-Forwarded-Host / X-Forwarded-Proto
NITROSTACK_APP_MODEWidget mode: universal | openai | mcp-app
NITROSTACK_LOG_FILE / NITROSTACK_LOG_LEVEL / NITROSTACK_LOG_TO_STDOUTLogging
NITROSTACK_HTTP_DEBUG1 logs every HTTP request to stderr
OAUTH_REQUIREDWhen unset, OAuthGuard may allow no-token (Studio mock)
API_KEY / API_KEY_*API key auth
JWT_SECRETHS256 JWT

ServerConfig.protocol_era is used only when MCP_STATELESS and NITRO_MCP_PROTOCOL_VERSION are both unset.

Example

Python
from nitrostack import ServerConfig, mcp_app, module

server = ServerConfig(
    name="my-server",
    version="1.0.0",
    transport_type="http",
    max_sessions=100,
    session_timeout_ms=1_800_000,
)

Next steps