From a9007d7b864b2c2829cfb46f2c61253c614df25b Mon Sep 17 00:00:00 2001 From: bherbruck Date: Mon, 12 Oct 2026 13:31:43 +0000 Subject: [PATCH] fix(#270): mcp --connect failure says how to start the app with --control When nothing listens on the address, the error now adds: start it with `solvecraft --control PORT` (or SOLVECRAFT_CONTROL_PORT=PORT) and retry. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RjGw4gA5ZvKrU8MQP6sBgT --- apps/solvecraft-cli/src/main.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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()), };