Skip to content

Commit 1afb8c2

Browse files
committed
fix(serve): keep HTTP running when MCP transport is unavailable
1 parent 1038bcc commit 1afb8c2

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

src/serve.rs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -894,8 +894,20 @@ pub async fn run_serve(data_dir: &Path, http_opts: Option<HttpServeOpts>) -> Res
894894
eprintln!("engraph MCP server starting...");
895895

896896
let transport = rmcp::transport::io::stdio();
897-
let server_handle = server.serve(transport).await?;
898-
server_handle.waiting().await?;
897+
match server.serve(transport).await {
898+
Ok(server_handle) => {
899+
server_handle.waiting().await?;
900+
}
901+
Err(e) => {
902+
if http_opts.is_some() {
903+
// MCP transport failed (e.g., no stdin) but HTTP is running — stay alive
904+
eprintln!("MCP transport unavailable ({e:#}), HTTP server still running...");
905+
cancel_token.cancelled().await;
906+
} else {
907+
return Err(anyhow::anyhow!("{e}"));
908+
}
909+
}
910+
}
899911

900912
cancel_token.cancel(); // triggers HTTP graceful shutdown
901913

0 commit comments

Comments
 (0)