Skip to main content
Glama
main.py•2.94 kB
#!/usr/bin/env python3 # Copyright (c) 2025 [Harivatsa G A]. All rights reserved. # This work is licensed under CC BY-NC-ND 4.0. # https://creativecommons.org/licenses/by-nc-nd/4.0/ # Attribution required. Commercial use and modifications prohibited. """ Kibana MCP Server - Main Entry Point """ import os import sys import argparse import uvicorn from loguru import logger # Add src to path for imports sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from src.core.config import config from src.core.logging_config import configure_logging_from_config from src.core.constants import APP_NAME, APP_VERSION from src.api.app import create_app def parse_args(): """Parse command-line arguments.""" parser = argparse.ArgumentParser( description=f"{APP_NAME} v{APP_VERSION} - Kibana MCP Server" ) parser.add_argument( '--host', type=str, default=None, help='Host to bind to (default: from config)' ) parser.add_argument( '--port', type=int, default=None, help='Port to bind to (default: from config)' ) parser.add_argument( '--config', type=str, default='config.yaml', help='Path to configuration file' ) parser.add_argument( '--log-level', type=str, choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], default=None, help='Logging level (default: from config)' ) parser.add_argument( '--reload', action='store_true', help='Enable auto-reload for development' ) return parser.parse_args() def main(): """Main entry point.""" args = parse_args() # Configure logging configure_logging_from_config(config) # Override log level if specified if args.log_level: from src.core.logging_config import setup_logging setup_logging(level=args.log_level) # Get host and port from args or config host = args.host or config.get('mcp_server.host', default='0.0.0.0') port = args.port or config.get('mcp_server.port', default=8000, expected_type=int) # Log startup info logger.info("=" * 60) logger.info(f"Starting {APP_NAME} v{APP_VERSION}") logger.info("=" * 60) logger.info(f"Host: {host}") logger.info(f"Port: {port}") logger.info(f"Config: {args.config}") logger.info(f"Environment: {config.env}") logger.info("=" * 60) # Create FastAPI app app = create_app() # Run server try: uvicorn.run( app, host=host, port=port, reload=args.reload, log_level="info" if args.log_level is None else args.log_level.lower() ) except KeyboardInterrupt: logger.info("Server stopped by user") except Exception as e: logger.error(f"Server error: {e}") sys.exit(1) if __name__ == "__main__": main()

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gaharivatsa/KIBANA_SERVER'

If you have feedback or need assistance with the MCP directory API, please join our Discord server