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_hyperliquid.client import HyperliquidClient from mcp_hyperliquid.server import create_app configure_root_logging() # CER-P5-009 def main(): wallet_file = os.environ["HYPERLIQUID_WALLET_FILE"] with open(wallet_file) as f: creds = json.load(f) env_info = resolve_environment( creds, env_var="HYPERLIQUID_TESTNET", flag_key="testnet", exchange="hyperliquid", default_base_url_live="https://api.hyperliquid.xyz", default_base_url_testnet="https://api.hyperliquid-testnet.xyz", ) client = HyperliquidClient( wallet_address=creds["wallet_address"], private_key=creds["private_key"], testnet=(env_info.environment == "testnet"), api_wallet_address=creds.get("api_wallet_address"), ) 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, # CER-P5-009: delega al root JSON logger host=os.environ.get("HOST", "0.0.0.0"), port=int(os.environ.get("PORT", "9012")), ) if __name__ == "__main__": main()