diff --git a/apps/desktop/src/components/editor/EditorSettingsDialog.vue b/apps/desktop/src/components/editor/EditorSettingsDialog.vue index e4208f4241..a21adaf1fd 100644 --- a/apps/desktop/src/components/editor/EditorSettingsDialog.vue +++ b/apps/desktop/src/components/editor/EditorSettingsDialog.vue @@ -1920,7 +1920,7 @@ async function installMcp() { // 安装成功后刷新状态 await refreshMcpStatus(); } catch (e: any) { - mcpInstallMessage.value = e?.message || String(e); + mcpInstallMessage.value = translateBackendError(t, e); mcpInstallError.value = true; } finally { mcpInstalling.value = false; @@ -1942,7 +1942,7 @@ async function uninstallMcp() { mcpInstallMessage.value = await uninstallMcpServer(); await refreshMcpStatus(); } catch (e: any) { - mcpInstallMessage.value = t("settings.mcpUninstallFailed", { error: e?.message || String(e) }); + mcpInstallMessage.value = t("settings.mcpUninstallFailed", { error: translateBackendError(t, e) }); mcpInstallError.value = true; } finally { mcpUninstalling.value = false; @@ -2915,7 +2915,7 @@ const aiSupportsAnthropicApiStyle = computed(() => aiEditProvider.value === "cus const aiCliMcpNeedsInstall = computed(() => aiIsCliProvider.value && (!mcpStatus.value || !mcpStatus.value.installed)); const aiCliMcpCanInstall = computed(() => { const status = mcpStatus.value; - return !mcpInstalling.value && !mcpUninstalling.value && !!status?.npm_available && (!status.installed || status.update_available); + return !mcpInstalling.value && !mcpUninstalling.value && !!status?.runtime_available && (!status.installed || status.update_available); }); const aiCliMcpActionLabel = computed(() => { if (!mcpStatus.value?.installed) return t("settings.mcpInstallButton"); @@ -6348,7 +6348,10 @@ onUnmounted(() => {
-
+
+ {{ t("settings.mcpManualManagementHint") }} +
+
{{ mcpCommand }}
@@ -6356,7 +6359,7 @@ onUnmounted(() => { - -