"""
Enhanced MCP Server for Gemini LLM Integration.
Entrypoint: sets up logging, validates, registers tools, and runs the server.
"""
import os
import sys
from mcp.server.fastmcp import FastMCP
from dotenv import load_dotenv
# Add the src directory to the Python path for imports
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))
# Load environment variables
load_dotenv("../.env")
# Import modularized server components (absolute imports)
from server.logging_config import get_logger
from server.validation import validate_server_setup
from server.tool_registration import register_dynamic_tools
logger = get_logger("server")
# Create an enhanced MCP server
logger.info("Initializing enhanced MCP server...")
try:
mcp = FastMCP(
name="Enhanced Company Knowledge Base Server",
host="0.0.0.0",
port=8050,
)
logger.info("Enhanced MCP server initialized successfully")
except Exception as e:
logger.error(f"Failed to initialize MCP server: {e}")
raise
# Validate server setup
if not validate_server_setup(logger):
logger.error("Server setup validation failed. Please check your configuration.")
sys.exit(1)
# Register tools
try:
register_dynamic_tools(mcp, logger)
logger.info("Tool registration completed successfully")
except Exception as e:
logger.error(f"Failed to register tools: {e}")
sys.exit(1)
# Run the server
if __name__ == "__main__":
logger.info("Starting enhanced MCP server with stdio transport...")
try:
mcp.run(transport="stdio")
logger.info("Enhanced MCP server is running and ready to accept connections")
except KeyboardInterrupt:
logger.info("Server stopped by user")
except Exception as e:
logger.error(f"Error running MCP server: {e}")
raise