diff --git a/aenv/src/cli/cmds/common.py b/aenv/src/cli/cmds/common.py index 0968a8b..e62a11e 100644 --- a/aenv/src/cli/cmds/common.py +++ b/aenv/src/cli/cmds/common.py @@ -90,6 +90,8 @@ def wrapper(*args, **kwargs): except ValidationError as e: ErrorHandler.handle_error(e) sys.exit(1) + except click.exceptions.Exit as e: + sys.exit(e.exit_code) except Exception as e: if verbose: logger.exception("Unexpected error") diff --git a/aenv/src/cli/cmds/run.py b/aenv/src/cli/cmds/run.py index 790836c..94e7a14 100644 --- a/aenv/src/cli/cmds/run.py +++ b/aenv/src/cli/cmds/run.py @@ -76,8 +76,11 @@ def validate_dependencies() -> None: "--work-dir", help="Specify aenv development root directory", default=os.getcwd() ) @click.option("--inspector-port", type=int, default=6274, help="MCP Inspector port") +@click.option( + "--quiet", is_flag=True, help="Only start local environment no need inspector" +) @pass_config -def run(cfg: Config, work_dir, inspector_port): +def run(cfg: Config, work_dir, inspector_port, quiet): """Start local environment for testing the current aenv project This command validates the working directory, checks dependencies, @@ -97,26 +100,26 @@ def run(cfg: Config, work_dir, inspector_port): console.info("📁 Validating working environment...") run_environment(work_dir) console.success("✅ Working environment validation passed") - - # Validate dependencies - console.info("🔧 Checking dependencies...") - validate_dependencies() - console.success("✅ Dependency check passed") - - # Install inspector - console.info("📦 Installing MCP Inspector...") - mcp_inspector.install_inspector() - console.success("✅ MCP Inspector installation completed") - - # Start MCP server and Inspector - console.info("🚀 Starting MCP server and Inspector...") - console.console().print( - f" MCP Inspector will be available at: [cyan]http://localhost:{inspector_port}[/cyan]" - ) - console.console().print(" Press Ctrl+C to stop services\n") + if not quiet: + # Validate dependencies + console.info("🔧 Checking dependencies...") + validate_dependencies() + console.success("✅ Dependency check passed") + + # Install inspector + console.info("📦 Installing MCP Inspector...") + mcp_inspector.install_inspector() + console.success("✅ MCP Inspector installation completed") + + # Start MCP server and Inspector + console.info("🚀 Starting MCP server and Inspector...") + console.console().print( + f" MCP Inspector will be available at: [cyan]http://localhost:{inspector_port}[/cyan]" + ) + console.console().print("Press Ctrl+C to stop services\n") aenv_logger = get_logger("mcp_manager") if cfg.verbose: aenv_logger.setLevel("DEBUG") manager = MCPManager(logger=aenv_logger) - manager.start(work_dir, inspector_port) + manager.start(work_dir, inspector_port, quiet) diff --git a/aenv/src/cli/utils/mcp/mcp_task_manager.py b/aenv/src/cli/utils/mcp/mcp_task_manager.py index ec83c3a..a34061a 100644 --- a/aenv/src/cli/utils/mcp/mcp_task_manager.py +++ b/aenv/src/cli/utils/mcp/mcp_task_manager.py @@ -322,7 +322,9 @@ def __init__(self, logger: Optional[logging.Logger] = None): self.logger = logger or logging.getLogger(__name__) self.task_manager = TaskManager(logger) - def start(self, work_dir: str, inspector_port: int = 6274) -> None: + def start( + self, work_dir: str, inspector_port: int = 6274, quiet: bool = False + ) -> None: """Start MCP server and Inspector""" self.logger.debug("Starting MCP server and Inspector tasks...") @@ -336,9 +338,12 @@ def signal_handler(signum, frame): signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) - - # Start tasks - self.task_manager.start_both(work_dir=work_dir, inspector_port=inspector_port) + if quiet: + self.task_manager.start_mcp_server(work_dir) + else: + self.task_manager.start_both( + work_dir=work_dir, inspector_port=inspector_port + ) # Run until complete self.task_manager.run_until_complete()