From 824bf796a871b526546d13f698e26f4b1f01fa1f Mon Sep 17 00:00:00 2001 From: Bill ZHANG <36790218+Lutra-Fs@users.noreply.github.com> Date: Sat, 22 Nov 2025 22:18:05 +1100 Subject: [PATCH] fix(gemini): correct MCP server config format for Gemini CLI (#275) Transform MCP server configurations to match Gemini CLI's expected format: - Remove 'type' field (Gemini infers transport from field presence) - Use 'httpUrl' field for HTTP streaming servers (type: "http") - Keep 'url' field for SSE servers (type: "sse") - Keep 'command' field for stdio servers unchanged This fixes MCP servers not being recognized by Gemini CLI when configured through cc-switch. --- src-tauri/src/gemini_mcp.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src-tauri/src/gemini_mcp.rs b/src-tauri/src/gemini_mcp.rs index b2eb91a..3976190 100644 --- a/src-tauri/src/gemini_mcp.rs +++ b/src-tauri/src/gemini_mcp.rs @@ -96,7 +96,20 @@ pub fn set_mcp_servers_map( obj = server_obj; } - // 移除 UI 辅助字段 + // Gemini CLI 格式转换: + // - Gemini 不使用 "type" 字段(从字段名推断传输类型) + // - HTTP 使用 "httpUrl" 字段,SSE 使用 "url" 字段 + let transport_type = obj.get("type").and_then(|v| v.as_str()); + if transport_type == Some("http") { + // HTTP streaming: 将 "url" 重命名为 "httpUrl" + if let Some(url_value) = obj.remove("url") { + obj.insert("httpUrl".to_string(), url_value); + } + } + // SSE 保持 "url" 字段不变 + + // 移除 UI 辅助字段和 type 字段(Gemini 不需要) + obj.remove("type"); obj.remove("enabled"); obj.remove("source"); obj.remove("id");