Skip to main content
Glama

MCP Connection Hub

by claymore666
system.py7.06 kB
""" System management commands for the MCP Connection Hub CLI. This module provides commands for managing the system. """ import typer from typing import Optional from rich.console import Console from rich.table import Table from rich.progress import Progress import time # Create Typer app for system commands app = typer.Typer(name="system", help="System management commands") # Create Console for rich output console = Console() @app.command("status") def system_status(): """ Show detailed system status. """ # API Server Status api_table = Table(title="API Server Status") api_table.add_column("Component", style="cyan") api_table.add_column("Status", style="green") api_table.add_column("Details", style="yellow") # Add placeholder data (will be implemented properly in future milestones) api_table.add_row("API Server", "Running", "PID: 12345, Uptime: 2h 15m") api_table.add_row("Endpoints", "OK", "6 endpoints active") api_table.add_row("CORS", "Enabled", "All origins (*)") console.print(api_table) console.print() # Database Status db_table = Table(title="Database Status") db_table.add_column("Component", style="cyan") db_table.add_column("Status", style="green") db_table.add_column("Details", style="yellow") # Add placeholder data (will be implemented properly in future milestones) db_table.add_row("Connection", "Connected", "SQLite") db_table.add_row("Tables", "OK", "5 tables") db_table.add_row("Size", "OK", "1.2 MB") console.print(db_table) console.print() # Tool Status tool_table = Table(title="Tool Status") tool_table.add_column("Tool", style="cyan") tool_table.add_column("Status", style="green") tool_table.add_column("Mode", style="blue") # Add placeholder data (will be implemented properly in future milestones) tool_table.add_row("brave_web_search", "Enabled", "Sync") console.print(tool_table) @app.command("restart") def restart_system( force: bool = typer.Option(False, "--force", "-f", help="Force restart without confirmation") ): """ Restart the system. """ # Placeholder implementation (will be implemented properly in future milestones) if not force: confirm = typer.confirm("Are you sure you want to restart the system?") if not confirm: console.print("[yellow]Restart cancelled[/yellow]") return with Progress() as progress: task = progress.add_task("[cyan]Restarting system...", total=100) # Simulate restart process for i in range(0, 101, 10): time.sleep(0.2) # Simulate work progress.update(task, completed=i) console.print("[green]System restarted successfully[/green]") @app.command("backup") def backup_system( output: str = typer.Option("./backup.zip", "--output", "-o", help="Output file path") ): """ Backup system data. """ # Placeholder implementation (will be implemented properly in future milestones) with Progress() as progress: task = progress.add_task("[cyan]Backing up system data...", total=100) # Simulate backup process for i in range(0, 101, 5): time.sleep(0.1) # Simulate work progress.update(task, completed=i) console.print(f"[green]Backup created: {output}[/green]") @app.command("restore") def restore_system( backup_file: str = typer.Argument(..., help="Backup file path"), force: bool = typer.Option(False, "--force", "-f", help="Force restore without confirmation") ): """ Restore system from backup. """ # Placeholder implementation (will be implemented properly in future milestones) if not force: confirm = typer.confirm("This will overwrite current data. Are you sure?") if not confirm: console.print("[yellow]Restore cancelled[/yellow]") return with Progress() as progress: task = progress.add_task("[cyan]Restoring from backup...", total=100) # Simulate restore process for i in range(0, 101, 5): time.sleep(0.1) # Simulate work progress.update(task, completed=i) console.print(f"[green]System restored from {backup_file}[/green]") @app.command("logs") def view_logs( lines: int = typer.Option(20, "--lines", "-n", help="Number of lines to show"), follow: bool = typer.Option(False, "--follow", "-f", help="Follow log output"), level: str = typer.Option("INFO", "--level", "-l", help="Minimum log level to show") ): """ View system logs. """ # Placeholder implementation (will be implemented properly in future milestones) console.print(f"[cyan]Showing {lines} lines of logs at level {level}:[/cyan]") # Sample log entries sample_logs = [ "[2023-06-01 12:34:56] [INFO] System started", "[2023-06-01 12:34:57] [INFO] API server listening on 0.0.0.0:8000", "[2023-06-01 12:34:58] [INFO] Database connected", "[2023-06-01 12:35:01] [INFO] Tool 'brave_web_search' registered", "[2023-06-01 12:35:10] [DEBUG] Received request to /api/v1/chat/completions", "[2023-06-01 12:35:11] [WARNING] Tool execution took longer than expected: 5.2s" ] for log in sample_logs[-lines:]: if level == "DEBUG" or (level == "INFO" and "[DEBUG]" not in log) or (level == "WARNING" and "[DEBUG]" not in log and "[INFO]" not in log): console.print(log) if follow: console.print("[cyan]Following logs (press Ctrl+C to stop)...[/cyan]") try: # Simulate log following for i in range(5): time.sleep(1) log = f"[2023-06-01 12:35:{20+i}] [INFO] Heartbeat received" console.print(log) except KeyboardInterrupt: console.print("[yellow]Log following stopped[/yellow]") @app.command("health") def system_health(): """ Run system health check. """ # Placeholder implementation (will be implemented properly in future milestones) with Progress() as progress: task = progress.add_task("[cyan]Running system health check...", total=100) # Simulate health check for i in range(0, 101, 10): time.sleep(0.2) # Simulate work progress.update(task, completed=i) # Health check results health_table = Table(title="System Health Check Results") health_table.add_column("Component", style="cyan") health_table.add_column("Status", style="green") health_table.add_column("Details", style="yellow") health_table.add_row("API Server", "Healthy", "Response time: 12ms") health_table.add_row("Database", "Healthy", "Query time: 5ms") health_table.add_row("Tool Registry", "Healthy", "All tools responsive") health_table.add_row("Configuration", "Healthy", "All settings valid") console.print(health_table)

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/claymore666/MCPConnectionHub'

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