Files
cc-switch/docs/v3.7.0-unified-mcp-refactor.md
Jason 32a6de074c docs: add comprehensive v3.7.0 unified MCP refactor plan
## Document Overview
Created detailed refactoring plan document covering:
- Project goals and architecture changes
- Data structure migration strategy (v3.6.x → v3.7.0)
- Complete development progress tracking
- Frontend remaining tasks roadmap
- Testing plan and delivery checklist

## Completed Work (Documented)
 Phase 1: Backend data structure migration
  - McpApps, McpServer, McpRoot definitions
  - Automatic migration logic
  - Integration into load() method

 Phase 2: Backend services refactor
  - Complete McpService rewrite
  - Single-server sync functions
  - New Tauri commands
  - Backward compatibility layer
  - All compilation errors fixed

 Phase 3 (Partial): Frontend types and API
  - Updated TypeScript types (McpApps, McpServer)
  - New API methods (getAllServers, toggleApp, etc.)

## Remaining Work (Documented)
📝 React Query hooks (useMcp.ts)
📝 UnifiedMcpPanel component
📝 i18n translations
📝 Main app integration
📝 Sub-components (table, form, import dialog)

## Key Highlights
- Detailed UI wireframes and component structure
- Step-by-step migration flow documentation
- Risk assessment and mitigation strategies
- Technical insights and architecture benefits

Related: v3.7.0 unified MCP management
2025-11-14 15:09:22 +08:00

26 KiB
Raw Permalink Blame History

v3.7.0 统一 MCP 管理重构计划

📋 项目概述

目标:将原有的按应用分离的 MCP 管理Claude/Codex/Gemini 各自独立管理)重构为统一管理面板,每个 MCP 服务器通过多选框控制应用到哪些客户端。

版本v3.6.2 → v3.7.0

开始时间2025-11-14


🎯 核心需求

原有架构v3.6.x

┌─────────────┐  ┌─────────────┐  ┌─────────────┐
│ Claude面板  │  │ Codex面板   │  │ Gemini面板  │
│ MCP管理     │  │ MCP管理     │  │ MCP管理     │
└─────────────┘  └─────────────┘  └─────────────┘
      ↓                ↓                ↓
   mcp.claude     mcp.codex       mcp.gemini
   {servers}      {servers}       {servers}

新架构v3.7.0

┌───────────────────────────────────────┐
│        统一 MCP 管理面板              │
│  ┌────────┬────────┬────────┬────┐   │
│  │ 服务器 │ Claude │ Codex  │Gem │   │
│  ├────────┼────────┼────────┼────┤   │
│  │ mcp-1  │   ✓    │   ✓    │    │   │
│  │ mcp-2  │   ✓    │        │ ✓  │   │
│  └────────┴────────┴────────┴────┘   │
└───────────────────────────────────────┘
            ↓
      mcp.servers
      {
        "mcp-1": {
          apps: {claude: true, codex: true, gemini: false}
        }
      }

📐 技术架构

数据结构设计

新增McpApps应用启用状态

#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct McpApps {
    pub claude: bool,
    pub codex: bool,
    pub gemini: bool,
}

更新McpServer统一服务器定义

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct McpServer {
    pub id: String,
    pub name: String,
    pub server: serde_json::Value,  // 连接配置stdio/http
    pub apps: McpApps,               // 新增:标记应用到哪些客户端
    pub description: Option<String>,
    pub homepage: Option<String>,
    pub docs: Option<String>,
    pub tags: Vec<String>,
}

更新McpRoot新旧结构并存

#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct McpRoot {
    // v3.7.0 新结构
    #[serde(skip_serializing_if = "Option::is_none")]
    pub servers: Option<HashMap<String, McpServer>>,

    // v3.6.x 旧结构(保留用于迁移)
    #[serde(default, skip_serializing_if = "McpConfig::is_empty")]
    pub claude: McpConfig,
    #[serde(default, skip_serializing_if = "McpConfig::is_empty")]
    pub codex: McpConfig,
    #[serde(default, skip_serializing_if = "McpConfig::is_empty")]
    pub gemini: McpConfig,
}

迁移策略

旧配置 (v3.6.x)                    新配置 (v3.7.0)
─────────────────                  ─────────────────
mcp:                              mcp:
  claude:                           servers:
    servers:                          mcp-fetch:
      mcp-fetch: {...}      →           id: "mcp-fetch"
  codex:                                server: {...}
    servers:                            apps:
      mcp-filesystem: {...}               claude: true
                                          codex: true
                                          gemini: false

迁移逻辑

  1. 检测 mcp.servers 是否存在
  2. 若不存在,从 mcp.claude/codex/gemini.servers 收集所有服务器
  3. 合并同 id 服务器的 apps 字段
  4. 清空旧结构字段
  5. 保存配置(自动触发)

开发进度

Phase 1: 后端数据结构与迁移 已完成

1.1 修改数据结构app_config.rs

文件src-tauri/src/app_config.rs

变更

  • 新增 McpApps 结构体lines 30-62
  • 新增 McpServer 结构体lines 64-79
  • 更新 McpRoot 支持新旧结构lines 81-96
  • 添加辅助方法:is_enabled_for, set_enabled_for, enabled_apps

提交c7b235b - "feat(mcp): implement unified MCP management for v3.7.0"

1.2 实现迁移逻辑

文件src-tauri/src/app_config.rs

实现

  • migrate_mcp_to_unified() 方法lines 380-509
    • 从旧结构收集所有服务器
    • 按 id 合并重复服务器
    • 处理冲突(合并 apps 字段)
    • 清空旧结构
  • 集成到 MultiAppConfig::load() 方法lines 252-257
    • 自动检测并执行迁移
    • 迁移后保存配置

提交c7b235b - "feat(mcp): implement unified MCP management for v3.7.0"


Phase 2: 后端服务层重构 已完成

2.1 重写 McpService

文件src-tauri/src/services/mcp.rs

新增方法

  • get_all_servers() - 获取所有服务器lines 13-27
  • upsert_server() - 添加/更新服务器lines 30-52
  • delete_server() - 删除服务器lines 55-75
  • toggle_app() - 切换应用启用状态lines 78-111
  • sync_all_enabled() - 同步所有启用的服务器lines 180-188

兼容层方法(已废弃):

  • get_servers() - 按应用过滤服务器lines 196-210
  • set_enabled() - 委托到 toggle_applines 213-222
  • sync_enabled() - 同步特定应用lines 225-236
  • import_from_claude/codex/gemini() - 导入包装lines 239-266

提交c7b235b - "feat(mcp): implement unified MCP management for v3.7.0"

2.2 新增同步函数mcp.rs

文件src-tauri/src/mcp.rs

新增函数lines 800-965

  • json_server_to_toml_table() - JSON → TOML 转换助手lines 828-889
  • sync_single_server_to_claude() - 同步单个服务器到 Claudelines 800-814
  • remove_server_from_claude() - 从 Claude 移除服务器lines 817-826
  • sync_single_server_to_codex() - 同步单个服务器到 Codexlines 891-936
  • remove_server_from_codex() - 从 Codex 移除服务器lines 939-965
  • sync_single_server_to_gemini() - 同步单个服务器到 Geminilines 967-977
  • remove_server_from_gemini() - 从 Gemini 移除服务器lines 980-989

关键修复

  • 修复 toml_edit 类型转换(使用手动构建而非 serde 转换)
  • 修复 get_codex_config_path() 调用(返回 PathBuf 而非 Result

提交c7b235b - "feat(mcp): implement unified MCP management for v3.7.0" 修复提交7ae2a9f - "fix(mcp): resolve compilation errors and add backward compatibility"

2.3 新增 Tauri Commands

文件src-tauri/src/commands/mcp.rs

新增命令lines 147-196

  • get_mcp_servers() - 获取所有服务器lines 154-159
  • upsert_mcp_server() - 添加/更新服务器lines 162-168
  • delete_mcp_server() - 删除服务器lines 171-177
  • toggle_mcp_app() - 切换应用状态lines 180-189
  • sync_all_mcp_servers() - 同步所有服务器lines 192-195

更新旧命令(兼容层):

  • upsert_mcp_server_in_config() - 转换为统一结构lines 68-131
  • delete_mcp_server_in_config() - 忽略 app 参数lines 134-141

提交c7b235b - "feat(mcp): implement unified MCP management for v3.7.0" 修复提交7ae2a9f - "fix(mcp): resolve compilation errors and add backward compatibility"

2.4 注册新命令lib.rs

文件src-tauri/src/lib.rs

变更

  • 导出 McpServer 类型line 21
  • 导出新增的 mcp 同步函数lines 26-31
  • 注册 5 个新命令到 invoke_handlerlines 550-555

提交c7b235b - "feat(mcp): implement unified MCP management for v3.7.0"

2.5 添加缺失的函数claude_mcp.rs & gemini_mcp.rs

文件

  • src-tauri/src/claude_mcp.rs (lines 234-253)
  • src-tauri/src/gemini_mcp.rs (lines 160-179)

新增

  • read_mcp_servers_map() - 读取现有 MCP 服务器映射

提交7ae2a9f - "fix(mcp): resolve compilation errors and add backward compatibility"

2.6 编译验证

状态 编译成功

  • ⚠️ 16 个警告8 个废弃警告 + 8 个未使用函数警告 - 预期内)
  • 0 个错误

提交7ae2a9f - "fix(mcp): resolve compilation errors and add backward compatibility"


Phase 3: 前端开发 ⚠️ 部分完成

3.1 TypeScript 类型定义

文件src/types.ts

变更

  • 新增 McpApps 接口lines 129-133
  • 更新 McpServer 接口lines 136-149
    • 新增 apps: McpApps 字段
    • name 改为必填
    • 标记 enabled 为废弃
  • 新增 McpServersMap 类型别名line 152
  • 保持向后兼容(保留 enabled, source 等旧字段)

提交ac09551 - "feat(frontend): add unified MCP types and API layer for v3.7.0"

3.2 API 层更新

文件src/lib/api/mcp.ts

新增方法lines 99-141

  • getAllServers() - 获取所有服务器lines 106-108
  • upsertUnifiedServer() - 添加/更新服务器lines 113-115
  • deleteUnifiedServer() - 删除服务器lines 120-122
  • toggleApp() - 切换应用状态lines 127-133
  • syncAllServers() - 同步所有服务器lines 138-140

导入更新

  • 导入 McpServersMap 类型line 6

提交ac09551 - "feat(frontend): add unified MCP types and API layer for v3.7.0"

3.3 React Query Hooks 📝 待开发

计划文件src/hooks/useMcp.ts

需要实现的 Hooks

// 查询 hooks
export function useAllMcpServers() {
  return useQuery({
    queryKey: ['mcp', 'all'],
    queryFn: () => mcpApi.getAllServers(),
  });
}

// 变更 hooks
export function useUpsertMcpServer() {
  const queryClient = useQueryClient();
  return useMutation({
    mutationFn: (server: McpServer) => mcpApi.upsertUnifiedServer(server),
    onSuccess: () => {
      queryClient.invalidateQueries({ queryKey: ['mcp', 'all'] });
    },
  });
}

export function useToggleMcpApp() {
  const queryClient = useQueryClient();
  return useMutation({
    mutationFn: ({ serverId, app, enabled }: {
      serverId: string;
      app: AppId;
      enabled: boolean;
    }) => mcpApi.toggleApp(serverId, app, enabled),
    onSuccess: () => {
      queryClient.invalidateQueries({ queryKey: ['mcp', 'all'] });
    },
  });
}

export function useDeleteMcpServer() {
  const queryClient = useQueryClient();
  return useMutation({
    mutationFn: (id: string) => mcpApi.deleteUnifiedServer(id),
    onSuccess: () => {
      queryClient.invalidateQueries({ queryKey: ['mcp', 'all'] });
    },
  });
}

export function useSyncAllMcpServers() {
  return useMutation({
    mutationFn: () => mcpApi.syncAllServers(),
  });
}

依赖

  • @tanstack/react-query (已安装)
  • src/lib/api/mcp.ts ( 已完成)
  • src/types.ts ( 已完成)

3.4 统一 MCP 面板组件 📝 待开发

计划文件src/components/mcp/UnifiedMcpPanel.tsx

组件结构

interface UnifiedMcpPanelProps {
  className?: string;
}

export function UnifiedMcpPanel({ className }: UnifiedMcpPanelProps) {
  const { t } = useTranslation();
  const { data: servers, isLoading } = useAllMcpServers();
  const toggleApp = useToggleMcpApp();
  const deleteServer = useDeleteMcpServer();
  const syncAll = useSyncAllMcpServers();

  // 组件实现...
}

UI 设计

┌─────────────────────────────────────────────────────┐
│  MCP 服务器管理                        ┌──────────┐ │
│                                        │ 添加服务器 │ │
│  ┌─────┐ ┌──────────────┐ ┌─────────┐ └──────────┘ │
│  │ 搜索 │ │ 导入自...▼   │ │ 同步全部 │             │
│  └─────┘ └──────────────┘ └─────────┘             │
├─────────────────────────────────────────────────────┤
│                                                     │
│  ┌─────────────────────────────────────────────┐   │
│  │ 名称          │ Claude │ Codex │ Gemini │操作│   │
│  ├─────────────────────────────────────────────┤   │
│  │ mcp-fetch     │   ✓    │   ✓   │        │ ⚙️  │   │
│  │ filesystem    │   ✓    │       │   ✓    │ ⚙️  │   │
│  │ brave-search  │        │   ✓   │   ✓    │ ⚙️  │   │
│  └─────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────┘

功能特性

  • 📋 服务器列表展示(名称、描述、标签)
  • ☑️ 三个复选框控制应用启用状态Claude/Codex/Gemini
  • 添加新服务器(表单模态框)
  • ✏️ 编辑服务器(表单模态框)
  • 🗑️ 删除服务器(确认对话框)
  • 📥 导入功能(从 Claude/Codex/Gemini 导入)
  • 🔄 同步全部(手动触发同步到 live 配置)
  • 🔍 搜索过滤
  • 🏷️ 标签过滤

子组件

  1. McpServerTable (McpServerTable.tsx)

    • 服务器列表表格
    • 应用复选框
    • 操作按钮(编辑、删除)
  2. McpServerFormModal (McpServerFormModal.tsx)

    • 添加/编辑表单
    • stdio/http 类型切换
    • 应用选择(多选)
    • 元信息编辑(描述、标签、链接)
  3. McpImportDialog (McpImportDialog.tsx)

    • 选择导入来源Claude/Codex/Gemini
    • 服务器预览
    • 批量导入

依赖组件(来自 shadcn/ui

  • Table, TableBody, TableCell, TableHead, TableHeader, TableRow
  • Checkbox
  • Button
  • Dialog, DialogContent, DialogHeader, DialogTitle
  • Input, Textarea, Label
  • Select, SelectContent, SelectItem, SelectTrigger, SelectValue
  • Badge
  • Tooltip

3.5 主界面集成 📝 待开发

文件src/App.tsx

变更计划

// 原有代码v3.6.x
{currentApp === 'claude' && <ClaudeMcpPanel />}
{currentApp === 'codex' && <CodexMcpPanel />}
{currentApp === 'gemini' && <GeminiMcpPanel />}

// 新代码v3.7.0
<UnifiedMcpPanel />

移除的组件

  • ClaudeMcpPanel.tsx
  • CodexMcpPanel.tsx
  • GeminiMcpPanel.tsx

注意:保留旧组件文件备份,以便回滚

3.6 国际化文本更新 📝 待开发

文件

  • src/locales/zh/translation.json
  • src/locales/en/translation.json

需要添加的翻译键

{
  "mcp": {
    "unifiedPanel": {
      "title": "MCP 服务器管理 / MCP Server Management",
      "addServer": "添加服务器 / Add Server",
      "editServer": "编辑服务器 / Edit Server",
      "deleteServer": "删除服务器 / Delete Server",
      "deleteConfirm": "确定要删除此服务器吗?/ Are you sure to delete this server?",
      "syncAll": "同步全部 / Sync All",
      "syncAllSuccess": "已同步所有启用的服务器 / All enabled servers synced",
      "importFrom": "导入自... / Import from...",
      "search": "搜索服务器... / Search servers...",
      "noServers": "暂无服务器 / No servers yet",
      "enabledApps": "启用的应用 / Enabled Apps",
      "apps": {
        "claude": "Claude",
        "codex": "Codex",
        "gemini": "Gemini"
      },
      "form": {
        "id": "服务器 ID / Server ID",
        "name": "显示名称 / Display Name",
        "type": "类型 / Type",
        "stdio": "本地进程 / Local Process",
        "http": "远程服务 / Remote Service",
        "command": "命令 / Command",
        "args": "参数 / Arguments",
        "env": "环境变量 / Environment Variables",
        "cwd": "工作目录 / Working Directory",
        "url": "URL",
        "headers": "请求头 / Headers",
        "description": "描述 / Description",
        "tags": "标签 / Tags",
        "homepage": "主页 / Homepage",
        "docs": "文档 / Documentation",
        "selectApps": "选择应用 / Select Apps",
        "selectAppsHint": "勾选此服务器要应用到哪些客户端 / Check which clients this server applies to"
      },
      "table": {
        "name": "名称 / Name",
        "type": "类型 / Type",
        "apps": "应用 / Apps",
        "actions": "操作 / Actions",
        "edit": "编辑 / Edit",
        "delete": "删除 / Delete"
      },
      "import": {
        "title": "导入 MCP 服务器 / Import MCP Servers",
        "fromClaude": "从 Claude 导入 / Import from Claude",
        "fromCodex": "从 Codex 导入 / Import from Codex",
        "fromGemini": "从 Gemini 导入 / Import from Gemini",
        "success": "成功导入 {{count}} 个服务器 / Successfully imported {{count}} server(s)",
        "noServersFound": "未找到可导入的服务器 / No servers found to import"
      }
    }
  }
}

🔄 迁移流程

用户体验

1. 用户升级到 v3.7.0
   ↓
2. 首次启动应用
   ↓
3. 后端自动执行迁移
   - 检测旧结构 (mcp.claude/codex/gemini.servers)
   - 合并到统一结构 (mcp.servers)
   - 保存迁移后的配置
   - 日志记录迁移详情
   ↓
4. 前端加载新面板
   - 显示所有服务器
   - 三个复选框显示各应用启用状态
   ↓
5. 用户无缝使用

数据完整性保证

  1. 迁移前验证

    • 校验旧结构合法性
    • 记录迁移前状态
  2. 迁移中处理

    • 合并同 id 服务器的 apps 字段
    • 处理 id 冲突(保留第一个,记录警告)
    • 保留所有元信息(描述、标签、链接)
  3. 迁移后清理

    • 清空旧结构claude/codex/gemini
    • 自动保存新配置
    • 日志记录迁移完成
  4. 回滚机制

    • 配置文件有备份(config.v1.backup.<timestamp>.json
    • 迁移失败时可手动回滚

🧪 测试计划

后端测试 已验证

  • 编译测试cargo check
  • 数据结构序列化/反序列化
  • 迁移逻辑单元测试
  • 服务层方法测试
  • 同步函数测试

前端测试 待进行

  • TypeScript 类型检查
  • API 调用测试
  • 组件渲染测试
  • 用户交互测试
  • 国际化文本检查

集成测试 待进行

  • 完整迁移流程测试
    • 从空配置启动
    • 从 v3.6.x 配置升级
    • 多服务器合并场景
    • 冲突处理验证
  • 多应用同步测试
    • 启用单个应用
    • 启用多个应用
    • 动态切换应用
    • 同步到 live 配置验证
  • 边界情况测试
    • 空服务器列表
    • 超长服务器名称
    • 特殊字符处理
    • 并发操作

📦 交付清单

代码文件

后端Rust 已完成

  • src-tauri/src/app_config.rs - 数据结构定义与迁移
  • src-tauri/src/services/mcp.rs - 服务层重构
  • src-tauri/src/mcp.rs - 同步函数实现
  • src-tauri/src/commands/mcp.rs - Tauri 命令
  • src-tauri/src/lib.rs - 命令注册
  • src-tauri/src/claude_mcp.rs - Claude MCP 操作
  • src-tauri/src/gemini_mcp.rs - Gemini MCP 操作

前端TypeScript/React⚠️ 部分完成

  • src/types.ts - 类型定义更新
  • src/lib/api/mcp.ts - API 层更新
  • src/hooks/useMcp.ts - React Query Hooks
  • src/components/mcp/UnifiedMcpPanel.tsx - 统一面板组件
  • src/components/mcp/McpServerTable.tsx - 服务器表格
  • src/components/mcp/McpServerFormModal.tsx - 表单模态框
  • src/components/mcp/McpImportDialog.tsx - 导入对话框
  • src/App.tsx - 主界面集成
  • src/locales/zh/translation.json - 中文翻译
  • src/locales/en/translation.json - 英文翻译

文档

  • 本重构计划文档 (docs/v3.7.0-unified-mcp-refactor.md)
  • 用户升级指南 (docs/upgrade-to-v3.7.0.md)
  • API 变更说明 (docs/api-changes-v3.7.0.md)

Git 提交记录

  • c7b235b - feat(mcp): implement unified MCP management for v3.7.0
  • 7ae2a9f - fix(mcp): resolve compilation errors and add backward compatibility
  • ac09551 - feat(frontend): add unified MCP types and API layer for v3.7.0

🎯 下一步行动

立即任务(优先级 P0

  1. 实现 useMcp Hook

    • 文件:src/hooks/useMcp.ts
    • 估时1-2 小时
    • 依赖API 层(已完成)
  2. 创建 UnifiedMcpPanel 核心组件

    • 文件:src/components/mcp/UnifiedMcpPanel.tsx
    • 估时3-4 小时
    • 依赖useMcp Hook
  3. 添加国际化文本

    • 文件:src/locales/{zh,en}/translation.json
    • 估时30 分钟
  4. 集成到主界面

    • 文件:src/App.tsx
    • 估时30 分钟
    • 依赖UnifiedMcpPanel 组件

次要任务(优先级 P1

  1. 实现子组件

    • McpServerTable
    • McpServerFormModal
    • McpImportDialog
    • 估时4-6 小时
  2. 编写测试用例

    • 后端单元测试
    • 前端组件测试
    • 集成测试
    • 估时6-8 小时
  3. 编写用户文档

    • 升级指南
    • API 变更说明
    • 估时2-3 小时

优化任务(优先级 P2

  1. 性能优化

    • 服务器列表虚拟滚动
    • 批量操作优化
    • 估时2-3 小时
  2. 用户体验增强

    • 添加加载状态
    • 添加错误提示
    • 添加操作确认
    • 估时2-3 小时
  3. 代码清理

    • 移除旧的分应用面板组件
    • 清理废弃代码
    • 代码格式化
    • 估时1-2 小时

💡 技术亮点

1. 平滑迁移机制

  • 自动检测旧配置并迁移
  • 新旧结构并存(过渡期)
  • 无需用户手动操作
  • 保留所有历史数据

2. 向后兼容

  • 旧命令继续可用(带废弃警告)
  • 前端可增量更新
  • 渐进式重构策略

3. 类型安全

  • Rust 强类型保证数据完整性
  • TypeScript 类型定义与后端一致
  • serde 序列化/反序列化自动处理

4. 清晰的架构分层

Frontend (React)
    ↓ (Tauri IPC)
Commands Layer
    ↓
Services Layer
    ↓
Data Layer (Config + Live Sync)

5. SSOT 原则

  • 单一配置源:~/.cc-switch/config.json
  • 统一管理:mcp.servers 字段
  • 按需同步:写入各应用 live 配置

📚 参考资源

内部文档

相关 Issues/PRs

  • 无(新功能开发)

技术栈文档


📝 变更日志

2025-11-14

  • 完成后端 Phase 1 & 2数据结构、服务层、命令层
  • 修复所有编译错误
  • 完成前端类型定义和 API 层
  • 创建本重构计划文档

待更新...


👥 团队协作

开发者Claude Code (AI Assistant) + User

审查者User

测试者User


⚠️ 风险与对策

风险 1迁移数据丢失

概率:低 影响:高 对策

  • 迁移前自动备份配置
  • 详细日志记录
  • 测试各种边界情况

风险 2性能问题大量服务器

概率:中 影响:中 对策

  • 实现虚拟滚动
  • 分页或懒加载
  • 性能测试

风险 3兼容性问题

概率:中 影响:中 对策

  • 保留旧命令兼容层
  • 前端增量更新
  • 多版本测试

风险 4用户学习成本

概率:低 影响:低 对策

  • 清晰的 UI 设计
  • 详细的升级指南
  • 操作提示和引导

🎉 预期收益

用户体验提升

  • 简化操作:不再需要在不同应用面板切换
  • 统一视图:一目了然看到所有 MCP 配置
  • 灵活配置:轻松控制每个 MCP 应用到哪些客户端

代码质量提升

  • 架构优化:统一数据源,消除冗余
  • 维护性:单一面板组件,代码更简洁
  • 扩展性:未来添加新应用(如 Cursor更容易

性能提升

  • 减少重复加载:统一管理减少配置文件读写
  • 更快同步:批量操作更高效

📞 联系方式

问题反馈GitHub Issues

功能建议GitHub Discussions


文档版本v1.0 最后更新2025-11-14 状态🟡 开发中(后端完成 ,前端进行中 ⚠️