Files
cc-switch/src/lib/api/mcp.ts
T
Jason 2f18d6ec00 refactor(mcp): complete v3.7.0 cleanup - remove legacy code and warnings
This commit finalizes the v3.7.0 unified MCP architecture migration by
removing all deprecated code paths and eliminating compiler warnings.

Frontend Changes (~950 lines removed):
- Remove deprecated components: McpPanel, McpListItem, McpToggle
- Remove deprecated hook: useMcpActions
- Remove unused API methods: importFrom*, syncEnabledTo*, syncAllServers
- Simplify McpFormModal by removing dual-mode logic (unified/legacy)
- Remove syncOtherSide checkbox and conflict detection
- Clean up unused imports and state variables
- Delete associated test files

Backend Changes (~400 lines cleaned):
- Remove unused Tauri commands: import_mcp_from_*, sync_enabled_mcp_to_*
- Delete unused Gemini MCP functions: get_mcp_status, upsert/delete_mcp_server
- Add #[allow(deprecated)] to compatibility layer commands
- Add #[allow(dead_code)] to legacy helper functions for future migration
- Simplify boolean expression in mcp.rs per Clippy suggestion

API Deprecation:
- Mark legacy APIs with @deprecated JSDoc (getConfig, upsertServerInConfig, etc.)
- Preserve backward compatibility for v3.x, planned removal in v4.0

Verification:
-  Zero TypeScript errors (pnpm typecheck)
-  Zero Clippy warnings (cargo clippy)
-  All code formatted (prettier + cargo fmt)
-  Builds successfully

Total cleanup: ~1,350 lines of code removed/marked
Breaking changes: None (all legacy APIs still functional)
2025-11-14 22:43:25 +08:00

123 lines
3.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { invoke } from "@tauri-apps/api/core";
import type {
McpConfigResponse,
McpServer,
McpServerSpec,
McpServersMap,
McpStatus,
} from "@/types";
import type { AppId } from "./types";
export const mcpApi = {
async getStatus(): Promise<McpStatus> {
return await invoke("get_claude_mcp_status");
},
async readConfig(): Promise<string | null> {
return await invoke("read_claude_mcp_config");
},
async upsertServer(
id: string,
spec: McpServerSpec | Record<string, any>,
): Promise<boolean> {
return await invoke("upsert_claude_mcp_server", { id, spec });
},
async deleteServer(id: string): Promise<boolean> {
return await invoke("delete_claude_mcp_server", { id });
},
async validateCommand(cmd: string): Promise<boolean> {
return await invoke("validate_mcp_command", { cmd });
},
/**
* @deprecated 使用 getAllServers() 代替(v3.7.0+
*/
async getConfig(app: AppId = "claude"): Promise<McpConfigResponse> {
return await invoke("get_mcp_config", { app });
},
/**
* @deprecated 使用 upsertUnifiedServer() 代替(v3.7.0+
*/
async upsertServerInConfig(
app: AppId,
id: string,
spec: McpServer,
options?: { syncOtherSide?: boolean },
): Promise<boolean> {
const payload = {
app,
id,
spec,
...(options?.syncOtherSide !== undefined
? { syncOtherSide: options.syncOtherSide }
: {}),
};
return await invoke("upsert_mcp_server_in_config", payload);
},
/**
* @deprecated 使用 deleteUnifiedServer() 代替(v3.7.0+
*/
async deleteServerInConfig(
app: AppId,
id: string,
options?: { syncOtherSide?: boolean },
): Promise<boolean> {
const payload = {
app,
id,
...(options?.syncOtherSide !== undefined
? { syncOtherSide: options.syncOtherSide }
: {}),
};
return await invoke("delete_mcp_server_in_config", payload);
},
/**
* @deprecated 使用 toggleApp() 代替(v3.7.0+
*/
async setEnabled(app: AppId, id: string, enabled: boolean): Promise<boolean> {
return await invoke("set_mcp_enabled", { app, id, enabled });
},
// ========================================================================
// v3.7.0 新增:统一 MCP 管理 API
// ========================================================================
/**
* 获取所有 MCP 服务器(统一结构)
*/
async getAllServers(): Promise<McpServersMap> {
return await invoke("get_mcp_servers");
},
/**
* 添加或更新 MCP 服务器(统一结构)
*/
async upsertUnifiedServer(server: McpServer): Promise<void> {
return await invoke("upsert_mcp_server", { server });
},
/**
* 删除 MCP 服务器
*/
async deleteUnifiedServer(id: string): Promise<boolean> {
return await invoke("delete_mcp_server", { id });
},
/**
* 切换 MCP 服务器在指定应用的启用状态
*/
async toggleApp(
serverId: string,
app: AppId,
enabled: boolean,
): Promise<void> {
return await invoke("toggle_mcp_app", { serverId, app, enabled });
},
};