設定 MCP Server 發生 spawn npx ENOENT spawn npx ENOENT 的解決方法
在前端開發日常中, nvm(Node Version Manager) 是不可或缺的工具之一。它讓我們可以在多個 Node.js 專案之間快速切換版本,保持每個專案的相容性與穩定性。 不過,當我最近嘗試安裝 Figma Context Mcp 的 server 時,卻因為使用了 nvm 而遇到了一個讓人摸不著頭緒的錯誤: spawn npx ENOENT spawn npx ENOENT。 🔍 問題根本原因(Root Cause) MCP server 在啟動時會使用 Python 或桌面應用透過 child_process.spawn 的方式呼叫 Node.js 子進程。不過,這種呼叫方式不會載入使用者 shell 的 PATH 設定。 若你是透過 nvm 安裝 Node.js, node 與 npx 的路徑(如 ~/.nvm/versions/node/... )不會自動被納入 PATH,導致 MCP 在啟動時找不到正確的 Node 環境。 簡單來說: nvm 下的 node 不在應用程式能看到的 PATH 中,導致執行 npx 時出現 ENOENT 錯誤。 ✅ 可行解決方案 方案一:不用 npx,直接指定完整路徑 將需要啟動的 MCP server 套件安裝為全域模組,然後在設定檔中,改為直接指定 node 執行檔與腳本的完整路徑: 這樣一來就能完全繞過 npx,在無需依賴 PATH 的情況下正確執行 MCP server。 如果想知道 node 安裝路徑,可以善用 where 指令 方案二:讓 Node 被系統找到 如果你仍希望使用 npx ,那就必須讓桌面應用或 subprocess 找得到 Node 的執行檔。方法有兩種: 建立 symlink: 將 nvm 安裝的 Node 建立連結到系統路徑中,例如: 這樣可讓任何 subprocess 或應用程式在沒有 shell 的情況下,仍能找到正確的 Node 執行檔。 改用 Homebrew 安裝 Node: 有使用者移除 nvm 改用 Homebrew 安裝 Node.js,因其安裝在 /opt/homebrew/bin 這類系統預設路徑,MCP s...