From c228078e259886a06985f2e5944108a3e8eb61c5 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Thu, 13 Aug 2026 07:49:54 +0000 Subject: [PATCH] fix(mcp): respect configured package registry Closes #5912 --- .../editor/EditorSettingsDialog.vue | 2 +- apps/desktop/src/lib/backend/http.ts | 4 +-- src-tauri/src/commands/mcp.rs | 29 ++++++++++--------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/apps/desktop/src/components/editor/EditorSettingsDialog.vue b/apps/desktop/src/components/editor/EditorSettingsDialog.vue index b5cd615dd..d0ebb180e 100644 --- a/apps/desktop/src/components/editor/EditorSettingsDialog.vue +++ b/apps/desktop/src/components/editor/EditorSettingsDialog.vue @@ -1816,7 +1816,7 @@ const mcpStatusLabel = computed(() => { }); const mcpCommand = computed(() => { - if (!mcpStatus.value) return "npm install -g @dbx-app/mcp-server@latest --registry=https://registry.npmjs.org"; + if (!mcpStatus.value) return "npm install -g @dbx-app/mcp-server@latest"; return mcpStatus.value.installed ? mcpStatus.value.update_command : mcpStatus.value.install_command; }); diff --git a/apps/desktop/src/lib/backend/http.ts b/apps/desktop/src/lib/backend/http.ts index 2756284ca..bee1b5472 100644 --- a/apps/desktop/src/lib/backend/http.ts +++ b/apps/desktop/src/lib/backend/http.ts @@ -3787,8 +3787,8 @@ export async function checkMcpServerStatus(): Promise Result { match &self.package_manager { - McpPackageManager::Pnpm { command_path } if self.has_mcp_package() => run_package_manager_command( - command_path, - &["update", "-g", MCP_PACKAGE_NAME, "--registry=https://registry.npmjs.org"], - &self.node_launcher_path, - ), - _ => self.npm_output(&[ - "install", - "-g", - "@dbx-app/mcp-server@latest", - "--registry=https://registry.npmjs.org", - ]), + McpPackageManager::Pnpm { command_path } if self.has_mcp_package() => { + run_package_manager_command(command_path, &["update", "-g", MCP_PACKAGE_NAME], &self.node_launcher_path) + } + _ => self.npm_output(&["install", "-g", "@dbx-app/mcp-server@latest"]), } } } @@ -1410,6 +1403,7 @@ mod tests { elif [ \"$2\" = '--version' ]; then printf '10.9.2\\n'; \ elif [ \"$2\" = 'root' ]; then printf '%s\\n' {}; \ elif [ \"$2\" = 'prefix' ]; then printf '%s\\n' {}; \ + elif [ \"$2\" = 'install' ]; then exit 0; \ else exit 1; fi\n", shell_quote(log_path.to_string_lossy().as_ref()), shell_quote(log_path.to_string_lossy().as_ref()), @@ -1428,9 +1422,15 @@ mod tests { assert_eq!(probed.npm_root, canonical_runtime_path(&npm_root).unwrap()); assert_eq!(probed.node_version, "v24.16.0"); assert_eq!(probed.mcp_script_path, canonical_runtime_path(&script_path)); + let install_output = probed.install_or_update().unwrap(); + assert!(install_output.success); let calls = std::fs::read_to_string(log_path).unwrap(); assert!(calls.contains("npm root -g")); assert!(calls.contains("npm prefix -g")); + assert!(calls + .lines() + .any(|line| line == format!("{} install -g @dbx-app/mcp-server@latest", npm_cli_path.display()))); + assert!(!calls.contains("--registry")); assert!(calls.contains(&format!("PATH={}", canonical_runtime_path(&dir).unwrap().display()))); let _ = std::fs::remove_dir_all(dir); @@ -1516,7 +1516,8 @@ mod tests { let update_output = probed.install_or_update().unwrap(); assert!(update_output.success); let pnpm_log = std::fs::read_to_string(pnpm_log_path).unwrap(); - assert!(pnpm_log.contains("ARGS=update -g @dbx-app/mcp-server --registry=https://registry.npmjs.org")); + assert!(pnpm_log.contains("ARGS=update -g @dbx-app/mcp-server\n")); + assert!(!pnpm_log.contains("--registry")); assert!(pnpm_log.contains(&format!("PNPM_HOME={}", dir.display()))); assert!(pnpm_log.contains(&format!("PATH={}", bin_dir.display())));