diff --git a/apps/solvecraft-cli/src/main.rs b/apps/solvecraft-cli/src/main.rs index 91da5e22..aff72a9b 100644 --- a/apps/solvecraft-cli/src/main.rs +++ b/apps/solvecraft-cli/src/main.rs @@ -289,7 +289,13 @@ fn cmd_exec(args: &[String]) -> Result<(), String> { fn cmd_mcp(args: &[String]) -> Result<(), String> { let backend: Box = match (flag(args, "--connect"), flag(args, "--in")) { (Some(_), Some(_)) => return Err("mcp: use either --connect or --in, not both".into()), - (Some(addr), None) => Box::new(solvecraft_mcp::Remote::connect(addr).map_err(|e| format!("cannot connect to {addr}: {e}"))?), + (Some(addr), None) => Box::new(solvecraft_mcp::Remote::connect(addr).map_err(|e| { + let port = addr.rsplit(':').next().filter(|p| p.parse::().is_ok()).unwrap_or("PORT"); + format!( + "cannot connect to {addr}: {e}\nno SolidCraft app is listening there; start it with \ + `solvecraft --control {port}` (or SOLVECRAFT_CONTROL_PORT={port}) and retry" + ) + })?), (None, Some(path)) => Box::new(solvecraft_mcp::Headless::new(load(path)?)), (None, None) => Box::new(solvecraft_mcp::Headless::default()), };