We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/karthikravva/MCP-Energy-Hub'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
#!/usr/bin/env python3
"""
MCP Energy Hub - Startup Script
Initializes database and loads initial data for HuggingFace deployment
"""
import asyncio
import logging
import sys
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
async def startup():
"""Initialize the application"""
from app.db.session import init_db, async_session_maker
from app.ingestion.eia_collector import EIACollector
from app.models.database import DataCenterDB
from sqlalchemy import select, func
logger.info("π Starting MCP Energy Hub initialization...")
# Initialize database
logger.info("π¦ Initializing database...")
await init_db()
logger.info("β
Database initialized")
# Ensure regions exist and load initial data
logger.info("π Loading grid regions...")
async with async_session_maker() as session:
collector = EIACollector(session)
await collector.ensure_regions_exist()
logger.info("β
Grid regions loaded")
# Fetch initial EIA data
logger.info("β‘ Fetching EIA grid data...")
try:
count = await collector.run()
logger.info(f"β
Loaded {count} grid metrics records")
except Exception as e:
logger.warning(f"β οΈ Could not fetch EIA data: {e}")
# Seed data centers if empty
async with async_session_maker() as session:
result = await session.execute(select(func.count()).select_from(DataCenterDB))
dc_count = result.scalar()
if dc_count == 0:
logger.info("π’ Seeding data centers...")
from seed_datacenters import DATA_CENTERS
for dc_data in DATA_CENTERS:
dc = DataCenterDB(**dc_data)
session.add(dc)
await session.commit()
logger.info(f"β
Seeded {len(DATA_CENTERS)} data centers")
else:
logger.info(f"β
{dc_count} data centers already in database")
logger.info("π MCP Energy Hub ready!")
logger.info(" π API Docs: /docs")
logger.info(" π¨ Gradio UI: /ui")
logger.info(" π§ MCP Tools: /mcp/tools")
if __name__ == "__main__":
asyncio.run(startup())