""" FleetMind MCP Server - Hugging Face Space Entry Point (Track 1) This file serves as the entry point for HuggingFace Space deployment. Exposes 29 MCP tools via Server-Sent Events (SSE) endpoint for AI clients. Architecture: User → MCP Client (Claude Desktop, Continue, etc.) → SSE Endpoint (this file) → FleetMind MCP Server (server.py) → Tools (chat/tools.py) → Database (PostgreSQL) For Track 1: Building MCP Servers - Enterprise Category https://huggingface.co/MCP-1st-Birthday Compatible with: - Claude Desktop (via SSE transport) - Continue.dev (VS Code extension) - Cline (VS Code extension) - Any MCP client supporting SSE protocol """ import os import sys import logging from pathlib import Path # Add project root to path sys.path.insert(0, str(Path(__file__).parent)) # Configure logging for HuggingFace Space logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[logging.StreamHandler()] ) logger = logging.getLogger(__name__) # Import the MCP server instance from server import mcp # ============================================================================ # HUGGING FACE SPACE CONFIGURATION # ============================================================================ # HuggingFace Space default port HF_SPACE_PORT = int(os.getenv("PORT", 7860)) HF_SPACE_HOST = os.getenv("HOST", "0.0.0.0") # ============================================================================ # MAIN ENTRY POINT # ============================================================================ if __name__ == "__main__": logger.info("=" * 70) logger.info("FleetMind MCP Server - HuggingFace Space (Track 1)") logger.info("=" * 70) logger.info("MCP Server: FleetMind Dispatch Coordinator v1.0.0") logger.info("Protocol: Model Context Protocol (MCP)") logger.info("Transport: Server-Sent Events (SSE)") logger.info(f"SSE Endpoint: https://mcp-1st-birthday-fleetmind-dispatch-ai.hf.space/sse") logger.info("=" * 70) logger.info("Features:") logger.info(" ✓ 29 AI Tools (Order + Driver + Assignment Management)") logger.info(" ✓ 2 Real-Time Resources (orders://all, drivers://all)") logger.info(" ✓ Gemini 2.0 Flash AI - Intelligent Assignment") logger.info(" ✓ Google Maps API Integration (Routes + Geocoding)") logger.info(" ✓ Weather-Aware Routing (OpenWeatherMap)") logger.info(" ✓ PostgreSQL Database (Neon)") logger.info("=" * 70) logger.info("Compatible Clients:") logger.info(" • Claude Desktop") logger.info(" • Continue.dev (VS Code)") logger.info(" • Cline (VS Code)") logger.info(" • Any MCP-compatible client") logger.info("=" * 70) logger.info("How to Connect (Claude Desktop):") logger.info(' Add to claude_desktop_config.json:') logger.info(' {') logger.info(' "mcpServers": {') logger.info(' "fleetmind": {') logger.info(' "command": "npx",') logger.info(' "args": [') logger.info(' "mcp-remote",') logger.info(' "https://mcp-1st-birthday-fleetmind-dispatch-ai.hf.space/sse"') logger.info(' ]') logger.info(' }') logger.info(' }') logger.info(' }') logger.info("=" * 70) logger.info(f"Starting SSE server on {HF_SPACE_HOST}:{HF_SPACE_PORT}...") logger.info("Waiting for MCP client connections...") logger.info("=" * 70) try: # Add landing page using custom_route decorator from starlette.responses import HTMLResponse @mcp.custom_route("/", methods=["GET"]) async def landing_page(request): """Landing page with MCP connection information""" return HTMLResponse(""" FleetMind MCP Server

🚚 FleetMind MCP Server

Enterprise Model Context Protocol Server for AI-Powered Delivery Dispatch

MCP 1st Birthday Hackathon Track 1: Building MCP Enterprise Category


🔌 MCP Server Connection

SSE Endpoint URL:
https://mcp-1st-birthday-fleetmind-dispatch-ai.hf.space/sse

⚙️ Claude Desktop Configuration

Add this to your claude_desktop_config.json file:

{
  "mcpServers": {
    "fleetmind": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp-1st-birthday-fleetmind-dispatch-ai.hf.space/sse"
      ]
    }
  }
}

📋 How to Connect

  1. Install Claude Desktop
  2. Locate your claude_desktop_config.json file
  3. Add the configuration shown above
  4. Restart Claude Desktop
  5. Look for "FleetMind" in the 🔌 tools menu

🛠️ Available Tools (29 Total)

📍 Geocoding & Routing (3 tools):
geocode_address, calculate_route, calculate_intelligent_route
📦 Order Management (8 tools):
create_order, count_orders, fetch_orders, get_order_details, search_orders, get_incomplete_orders, update_order, delete_order
👥 Driver Management (8 tools):
create_driver, count_drivers, fetch_drivers, get_driver_details, search_drivers, get_available_drivers, update_driver, delete_driver
🔗 Assignment Management (8 tools):
create_assignment, auto_assign_order, intelligent_assign_order, get_assignment_details, update_assignment, unassign_order, complete_delivery, fail_delivery
🗑️ Bulk Operations (2 tools):
delete_all_orders, delete_all_drivers

⭐ Key Features


📚 Resources


FleetMind v1.0 - Built for MCP 1st Birthday Hackathon
29 AI Tools | 2 Real-Time Resources | Enterprise-Ready

""") logger.info("[OK] Landing page added at / route") logger.info("[OK] MCP SSE endpoint available at /sse") # Run MCP server with SSE transport (includes both /sse and custom routes) mcp.run( transport="sse", host=HF_SPACE_HOST, port=HF_SPACE_PORT ) except Exception as e: logger.error(f"Failed to start server: {e}") logger.error("Check that:") logger.error(" 1. Database connection is configured (DB_HOST, DB_USER, etc.)") logger.error(" 2. Google Maps API key is set (GOOGLE_MAPS_API_KEY)") logger.error(" 3. Port 7860 is available") raise