From a00eb764f7da12ee9dfe13ff920c098fb10d94bd Mon Sep 17 00:00:00 2001 From: Jason Date: Mon, 17 Nov 2025 23:17:21 +0800 Subject: [PATCH] fix(provider): sync MCP config for all apps on provider switch Previously, only Codex provider switches triggered MCP synchronization, which could cause MCP configuration loss when switching Claude or Gemini providers. Changes: - Enable MCP sync for all app types (Claude, Codex, Gemini) during provider switch - Migrate to v3.7.0 unified MCP sync mechanism using McpService::sync_all_enabled() - Replace app-specific sync_enabled_to_codex() with unified sync for all apps - Remove unused mcp module import This ensures MCP servers remain properly configured across all applications after provider switches, preventing configuration loss. --- src-tauri/src/services/provider.rs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src-tauri/src/services/provider.rs b/src-tauri/src/services/provider.rs index 623b81e..53a9a41 100644 --- a/src-tauri/src/services/provider.rs +++ b/src-tauri/src/services/provider.rs @@ -11,7 +11,6 @@ use crate::config::{ write_json_file, write_text_file, }; use crate::error::AppError; -use crate::mcp; use crate::provider::{Provider, ProviderMeta, UsageData, UsageResult}; use crate::settings::{self, CustomEndpoint}; use crate::store::AppState; @@ -547,11 +546,9 @@ impl ProviderService { fn apply_post_commit(state: &AppState, action: &PostCommitAction) -> Result<(), AppError> { Self::write_live_snapshot(&action.app_type, &action.provider)?; if action.sync_mcp { - let config_clone = { - let guard = state.config.read().map_err(AppError::from)?; - guard.clone() - }; - mcp::sync_enabled_to_codex(&config_clone)?; + // 使用 v3.7.0 统一的 MCP 同步机制,支持所有应用 + use crate::services::mcp::McpService; + McpService::sync_all_enabled(state)?; } if action.refresh_snapshot { Self::refresh_provider_snapshot(state, &action.app_type, &action.provider.id)?; @@ -1248,7 +1245,7 @@ impl ProviderService { app_type: app_type_clone.clone(), provider, backup, - sync_mcp: matches!(app_type_clone, AppType::Codex), + sync_mcp: true, // v3.7.0: 所有应用切换时都同步 MCP,防止配置丢失 refresh_snapshot: true, };