from __future__ import annotations import json import os import uvicorn from mcp_common.auth import load_token_store_from_files from mcp_common.environment import resolve_environment from mcp_common.logging import configure_root_logging from mcp_alpaca.client import AlpacaClient from mcp_alpaca.server import create_app configure_root_logging() def main(): creds_file = os.environ["ALPACA_CREDENTIALS_FILE"] with open(creds_file) as f: creds = json.load(f) creds.setdefault("base_url_live", "https://api.alpaca.markets") creds.setdefault("base_url_testnet", "https://paper-api.alpaca.markets") env_info = resolve_environment( creds, env_var="ALPACA_PAPER", flag_key="paper", exchange="alpaca", ) client = AlpacaClient( api_key=creds["api_key_id"], secret_key=creds["secret_key"], paper=(env_info.environment == "testnet"), ) token_store = load_token_store_from_files( core_token_file=os.environ.get("CORE_TOKEN_FILE"), observer_token_file=os.environ.get("OBSERVER_TOKEN_FILE"), ) app = create_app( client=client, token_store=token_store, creds=creds, env_info=env_info, ) uvicorn.run( app, log_config=None, host=os.environ.get("HOST", "0.0.0.0"), port=int(os.environ.get("PORT", "9020")), ) if __name__ == "__main__": main()