Skip to main content
Glama
__main__.py3.44 kB
"""CLI entry point for SSO MCP Server. This module provides the main entry point when running the package as a module: python -m sso_mcp_server or via the sso-mcp-server command. """ from __future__ import annotations import argparse import sys def parse_args(args: list[str] | None = None) -> argparse.Namespace: """Parse command-line arguments. Args: args: Command-line arguments (defaults to sys.argv[1:]). Returns: Parsed arguments namespace. """ parser = argparse.ArgumentParser( prog="sso-mcp-server", description="MCP server providing development checklists with Azure SSO authentication", ) parser.add_argument( "--port", type=int, default=None, help="Port to run the MCP server on (overrides MCP_PORT env var)", ) parser.add_argument( "--checklist-dir", type=str, default=None, help="Directory containing checklist files (overrides CHECKLIST_DIR env var)", ) parser.add_argument( "--log-level", choices=["DEBUG", "INFO", "WARNING", "ERROR"], default=None, help="Logging level (overrides LOG_LEVEL env var)", ) parser.add_argument( "--version", action="store_true", help="Show version and exit", ) return parser.parse_args(args) def main(args: list[str] | None = None) -> int: """Main entry point for the SSO MCP Server. Args: args: Command-line arguments (defaults to sys.argv[1:]). Returns: Exit code (0 for success, non-zero for errors). """ parsed = parse_args(args) if parsed.version: from sso_mcp_server import __version__ print(f"sso-mcp-server {__version__}") return 0 # Import after argument parsing to avoid slow startup for --help/--version import os from sso_mcp_server import configure_logging, get_logger from sso_mcp_server.config import ConfigurationError, Settings, reset_settings # Override environment variables with CLI arguments if parsed.port: os.environ["MCP_PORT"] = str(parsed.port) if parsed.checklist_dir: os.environ["CHECKLIST_DIR"] = parsed.checklist_dir if parsed.log_level: os.environ["LOG_LEVEL"] = parsed.log_level # Reset settings to pick up new environment variables reset_settings() try: # Load and validate settings settings = Settings.from_env() # Configure logging configure_logging(settings.log_level) logger = get_logger("main") logger.info( "starting_mcp_server", port=settings.mcp_port, checklist_dir=str(settings.checklist_dir), log_level=settings.log_level, ) # Import and run server from sso_mcp_server.server import run_server run_server(settings) return 0 except ConfigurationError as e: print(f"\nConfiguration Error: {e.message}", file=sys.stderr) if e.action: print(f" Action: {e.action}", file=sys.stderr) print("\nSee docs/quickstart.md for configuration help.", file=sys.stderr) return 1 except KeyboardInterrupt: print("\nServer stopped by user") return 0 except Exception as e: print(f"Error: {e}", file=sys.stderr) return 1 if __name__ == "__main__": sys.exit(main())

Latest Blog Posts

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/DauQuangThanh/sso-mcp-server'

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