mirror of
https://github.com/instructkr/claude-code.git
synced 2026-05-28 00:16:45 +00:00
fix: mcp show <nonexistent> now returns status:error + error_kind:server_not_found + exit 1; extend ok:false gate to also check status:error
This commit is contained in:
@@ -2806,7 +2806,11 @@ fn render_mcp_report_json_for(
|
||||
runtime_config.mcp().get(server_name),
|
||||
);
|
||||
if let Some(map) = value.as_object_mut() {
|
||||
map.insert("status".to_string(), Value::String("ok".to_string()));
|
||||
// Only override status to "ok" if the server was found;
|
||||
// render_mcp_server_report_json already sets status:"error" for not-found.
|
||||
if map.get("found") == Some(&Value::Bool(true)) {
|
||||
map.insert("status".to_string(), Value::String("ok".to_string()));
|
||||
}
|
||||
map.insert("config_load_error".to_string(), Value::Null);
|
||||
}
|
||||
Ok(value)
|
||||
@@ -3890,6 +3894,7 @@ fn render_mcp_server_report_json(
|
||||
Some(server) => json!({
|
||||
"kind": "mcp",
|
||||
"action": "show",
|
||||
"status": "ok",
|
||||
"working_directory": cwd.display().to_string(),
|
||||
"found": true,
|
||||
"server": mcp_server_json(server_name, server),
|
||||
@@ -3897,6 +3902,8 @@ fn render_mcp_server_report_json(
|
||||
None => json!({
|
||||
"kind": "mcp",
|
||||
"action": "show",
|
||||
"status": "error",
|
||||
"error_kind": "server_not_found",
|
||||
"working_directory": cwd.display().to_string(),
|
||||
"found": false,
|
||||
"server_name": server_name,
|
||||
|
||||
@@ -5872,7 +5872,8 @@ impl LiveCli {
|
||||
// Propagate ok:false → non-zero exit so automation callers
|
||||
// can rely on exit code instead of inspecting the envelope.
|
||||
// (#68: mcp error envelopes previously always exited 0.)
|
||||
let is_error = value.get("ok").and_then(|v| v.as_bool()) == Some(false);
|
||||
let is_error = value.get("ok").and_then(|v| v.as_bool()) == Some(false)
|
||||
|| value.get("status").and_then(|v| v.as_str()) == Some("error");
|
||||
println!("{}", serde_json::to_string_pretty(&value)?);
|
||||
if is_error {
|
||||
std::process::exit(1);
|
||||
|
||||
Reference in New Issue
Block a user