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.
This commit is contained in:
@@ -96,7 +96,20 @@ pub fn set_mcp_servers_map(
|
|||||||
obj = server_obj;
|
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("enabled");
|
||||||
obj.remove("source");
|
obj.remove("source");
|
||||||
obj.remove("id");
|
obj.remove("id");
|
||||||
|
|||||||
Reference in New Issue
Block a user