fix(MCPService): Improve server addition and status update error handling; add localized error messages

This commit is contained in:
Vaayne 2025-03-12 14:37:49 +08:00 committed by 亢奋猫
parent 03c18287fc
commit 723e686455
7 changed files with 31 additions and 16 deletions

View File

@ -193,15 +193,14 @@ export default class MCPService extends EventEmitter {
throw new Error(`Server with name ${server.name} already exists`)
}
// Add to servers list
const updatedServers = [...this.servers, server]
this.servers = updatedServers
this.notifyReduxServersChanged(updatedServers)
// Activate if needed
if (server.isActive) {
await this.activate(server).catch(this.logError(`Failed to activate server ${server.name}`))
await this.activate(server)
}
// Add to servers list
this.servers = [...this.servers, server]
this.notifyReduxServersChanged(this.servers)
}
/**
@ -260,16 +259,16 @@ export default class MCPService extends EventEmitter {
throw new Error(`Server ${name} not found`)
}
// Update server status
server.isActive = isActive
this.notifyReduxServersChanged([...this.servers])
// Activate or deactivate as needed
if (isActive) {
await this.activate(server)
} else {
await this.deactivate(name)
}
// Update server status
server.isActive = isActive
this.notifyReduxServersChanged([...this.servers])
}
/**
@ -336,6 +335,7 @@ export default class MCPService extends EventEmitter {
this.emit('server-started', { name })
} catch (error) {
log.error(`[MCP] Error activating server ${name}:`, error)
server.isActive = false
throw error
}
}

View File

@ -786,6 +786,7 @@
"active": "Active",
"addServer": "Add Server",
"addSuccess": "Server added successfully",
"addError": "Failed to add server",
"args": "Arguments",
"argsTooltip": "Each argument on a new line",
"command": "Command",
@ -794,6 +795,7 @@
"confirmDelete": "Delete Server",
"confirmDeleteMessage": "Are you sure you want to delete the server?",
"deleteSuccess": "Server deleted successfully",
"deleteError": "Failed to delete server",
"description": "Description",
"duplicateName": "A server with this name already exists",
"editServer": "Edit Server",
@ -807,6 +809,7 @@
"title": "MCP Servers",
"type": "Type",
"updateSuccess": "Server updated successfully",
"updateError": "Failed to update server",
"url": "URL",
"toggleError": "Toggle failed"
},

View File

@ -786,6 +786,7 @@
"active": "有効",
"addServer": "サーバーを追加",
"addSuccess": "サーバーが正常に追加されました",
"addError": "サーバーの追加に失敗しました",
"args": "引数",
"argsTooltip": "1行に1つの引数を入力してください",
"command": "コマンド",
@ -793,7 +794,8 @@
"config_description": "モデルコンテキストプロトコルサーバーの設定",
"confirmDelete": "サーバーを削除",
"confirmDeleteMessage": "本当にこのサーバーを削除しますか?",
"deleteSuccess": "サーバーが正常に削除されました",
"deleteError": "サーバーの削除に失敗しました",
"deleteSuccess": "サーバーが正常に削除されました",
"description": "説明",
"duplicateName": "同じ名前のサーバーが既に存在します",
"editServer": "サーバーを編集",
@ -807,7 +809,8 @@
"title": "MCP サーバー",
"type": "タイプ",
"updateSuccess": "サーバーが正常に更新されました",
"url": "URL",
"updateError": "サーバーの更新に失敗しました",
"url": "URL",
"toggleError": "切り替えに失敗しました"
},
"messages.divider": "メッセージ間に区切り線を表示",

View File

@ -786,6 +786,7 @@
"active": "Активен",
"addServer": "Добавить сервер",
"addSuccess": "Сервер успешно добавлен",
"addError": "Ошибка добавления сервера",
"args": "Аргументы",
"argsTooltip": "Каждый аргумент с новой строки",
"command": "Команда",
@ -793,7 +794,8 @@
"config_description": "Настройка серверов протокола контекста модели",
"confirmDelete": "Удалить сервер",
"confirmDeleteMessage": "Вы уверены, что хотите удалить этот сервер?",
"deleteSuccess": "Сервер успешно удален",
"deleteError": "Не удалось удалить сервер",
"deleteSuccess": "Сервер успешно удален",
"description": "Описание",
"duplicateName": "Сервер с таким именем уже существует",
"editServer": "Редактировать сервер",
@ -807,6 +809,7 @@
"title": "Серверы MCP",
"type": "Тип",
"updateSuccess": "Сервер успешно обновлен",
"updateError": "Ошибка обновления сервера",
"url": "URL",
"toggleError": "Переключение не удалось"
},

View File

@ -786,6 +786,7 @@
"active": "启用",
"addServer": "添加服务器",
"addSuccess": "服务器添加成功",
"addError": "添加服务器失败",
"args": "参数",
"argsTooltip": "每个参数占一行",
"command": "命令",
@ -793,7 +794,8 @@
"config_description": "配置模型上下文协议服务器",
"confirmDelete": "删除服务器",
"confirmDeleteMessage": "您确定要删除该服务器吗?",
"deleteSuccess": "服务器删除成功",
"deleteError": "删除服务器失败",
"deleteSuccess": "服务器删除成功",
"description": "描述",
"duplicateName": "已存在同名服务器",
"editServer": "编辑服务器",
@ -807,6 +809,7 @@
"title": "MCP 服务器",
"type": "类型",
"updateSuccess": "服务器更新成功",
"updateError": "更新服务器失败",
"url": "URL",
"toggleError": "切换失败"
},

View File

@ -786,6 +786,7 @@
"active": "啟用",
"addServer": "新增伺服器",
"addSuccess": "伺服器新增成功",
"addError": "添加伺服器失敗",
"args": "參數",
"argsTooltip": "每個參數佔一行",
"command": "指令",
@ -793,6 +794,7 @@
"config_description": "設定模型上下文協議伺服器",
"confirmDelete": "刪除伺服器",
"confirmDeleteMessage": "您確定要刪除該伺服器嗎?",
"deleteError": "刪除伺服器失敗",
"deleteSuccess": "伺服器刪除成功",
"description": "描述",
"duplicateName": "已存在相同名稱的伺服器",
@ -807,6 +809,7 @@
"title": "MCP 伺服器",
"type": "類型",
"updateSuccess": "伺服器更新成功",
"updateError": "更新伺服器失敗",
"url": "URL",
"toggleError": "切換失敗"
},

View File

@ -160,9 +160,9 @@ const MCPSettings: FC = () => {
})
}
const handleToggleActive = (name: string, isActive: boolean) => {
const handleToggleActive = async (name: string, isActive: boolean) => {
try {
window.api.mcp.setServerActive(name, isActive)
await window.api.mcp.setServerActive(name, isActive)
} catch (error: any) {
window.message.error(`${t('settings.mcp.toggleError')}: ${error.message}`)
}