MCPcopy Create free account
hub / github.com/GCWing/BitFun / execute_mcp_toggle

Method execute_mcp_toggle

src/apps/cli/src/modes/chat.rs:2340–2375  ·  view source on GitHub ↗

Execute MCP server toggle (called from main loop after render)

(
        &mut self,
        server_id: &str,
        chat_view: &mut ChatView,
        chat_state: &mut ChatState,
        rt_handle: &tokio::runtime::Handle,
    )

Source from the content-addressed store, hash-verified

2338
2339 /// Execute MCP server toggle (called from main loop after render)
2340 fn execute_mcp_toggle(
2341 &mut self,
2342 server_id: &str,
2343 chat_view: &mut ChatView,
2344 chat_state: &mut ChatState,
2345 rt_handle: &tokio::runtime::Handle,
2346 ) {
2347 let mcp_service = match crate::get_mcp_service() {
2348 Some(svc) => svc.clone(),
2349 None => {
2350 chat_state.add_system_message("MCP service not initialized".to_string());
2351 chat_view.mcp_selector_set_loading(None);
2352 return;
2353 }
2354 };
2355
2356 let server_manager = mcp_service.server_manager();
2357 let task_server_id = server_id.to_string();
2358 let tracked_server_id = task_server_id.clone();
2359
2360 let handle = rt_handle.spawn(async move {
2361 let status = server_manager.get_server_status(&task_server_id).await;
2362 match status {
2363 Ok(bitfun_core::service::mcp::MCPServerStatus::Connected)
2364 | Ok(bitfun_core::service::mcp::MCPServerStatus::Healthy) => {
2365 server_manager.stop_server(&task_server_id).await
2366 }
2367 _ => server_manager.start_server(&task_server_id).await,
2368 }
2369 });
2370
2371 self.pending_mcp_tasks.push(PendingMcpTask::Toggle {
2372 server_id: tracked_server_id,
2373 handle,
2374 });
2375 }
2376
2377 fn is_mcp_server_task_running(&self, server_id: &str) -> bool {
2378 self.pending_mcp_tasks.iter().any(|task| match task {

Callers 1

runMethod · 0.80

Calls 10

get_mcp_serviceFunction · 0.85
add_system_messageMethod · 0.80
server_managerMethod · 0.80
get_server_statusMethod · 0.80
cloneMethod · 0.45
spawnMethod · 0.45
stop_serverMethod · 0.45
start_serverMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected