feat: Updated the REPL mcp auth path to use the prettified error messaging
CI / All (macos-latest) (push) Waiting to run
CI / All (windows-latest) (push) Waiting to run
CI / All (ubuntu-latest) (push) Failing after 23s

This commit is contained in:
2026-07-07 15:18:56 -06:00
parent ce212fe660
commit 7673799d83
3 changed files with 18 additions and 10 deletions
+15 -3
View File
@@ -1,8 +1,9 @@
use crate::mcp::{
ConnectedServer, JsonField, McpServer, McpTransportType, oauth, spawn_mcp_server,
ConnectedServer, JsonField, McpServer, McpTransportType, is_auth_required_error, oauth,
spawn_mcp_server,
};
use anyhow::Result;
use anyhow::{Result, anyhow};
use parking_lot::Mutex;
use std::collections::HashMap;
use std::path::Path;
@@ -106,7 +107,18 @@ impl McpFactory {
} else {
None
};
let handle = spawn_mcp_server(spec, log_path, bearer_token).await?;
let handle = spawn_mcp_server(spec, log_path, bearer_token)
.await
.map_err(|e| {
if is_auth_required_error(&e) {
anyhow!(
"MCP server '{name}' requires OAuth authentication. \
Run `coyote --auth-mcp {name}` or `.mcp auth {name}` in the REPL to authenticate."
)
} else {
e
}
})?;
self.insert_active(key, &handle);
Ok(handle)
}
+2 -3
View File
@@ -287,8 +287,7 @@ impl McpRegistry {
Err(e) if is_auth_required_error(&e) => {
warn!(
"MCP server '{id}' requires OAuth authentication. \
Run `coyote --auth-mcp {id}` or `.mcp auth {id}` in the REPL to authenticate, \
then restart Coyote."
Run `coyote --auth-mcp {id}` or `.mcp auth {id}` in the REPL to authenticate."
);
return Ok(None);
}
@@ -409,7 +408,7 @@ fn merge_bearer_token(
}
}
fn is_auth_required_error(e: &Error) -> bool {
pub(crate) fn is_auth_required_error(e: &Error) -> bool {
e.chain()
.any(|cause| cause.to_string().contains("Auth required"))
}
+1 -4
View File
@@ -653,10 +653,7 @@ pub async fn run_repl_command(
callback_port,
)
.await?;
println!(
"Authentication saved. \
Restart Coyote to connect to '{server_name}'."
);
println!("Authentication saved.");
}
}
}