Keboola Explorer MCP Server

"""Command-line interface for the Keboola MCP server.""" import argparse import logging import sys from typing import List, Optional from .config import Config from .server import create_server logger = logging.getLogger(__name__) def parse_args(args: Optional[List[str]] = None) -> argparse.Namespace: """Parse command line arguments. Args: args: Command line arguments. If None, uses sys.argv[1:]. Returns: Parsed arguments """ parser = argparse.ArgumentParser(description="Keboola MCP Server") parser.add_argument( "--transport", choices=["stdio", "sse"], default="stdio", help="Transport to use for MCP communication", ) parser.add_argument( "--log-level", choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"], default="INFO", help="Logging level", ) parser.add_argument( "--api-url", default="https://connection.keboola.com", help="Keboola Storage API URL" ) return parser.parse_args(args) def main(args: Optional[List[str]] = None) -> None: """Run the MCP server. Args: args: Command line arguments. If None, uses sys.argv[1:]. """ parsed_args = parse_args(args) # Create config from the CLI arguments config = Config.from_dict( {"storage_api_url": parsed_args.api_url, "log_level": parsed_args.log_level} ) try: # Create and run server mcp = create_server(config) mcp.run(transport=parsed_args.transport) except Exception as e: logger.error(f"Server failed: {e}") sys.exit(1) if __name__ == "__main__": main()