spawn npx ENOENTでMCPが起動しない原因と対処法

MCPサーバーを設定したのに起動せず、ログに spawn npx ENOENT と出ている場合、AIサービスの障害ではありません。MCPサーバーを起動するための npx というコマンドを、アプリが見つけられていないだけです。
直す場所は設定ファイルの "command" の1か所で、多くの場合はnpxの場所をフルパス(省略せずに書いた場所)で書けば起動します。本記事では、原因の見分け方とClaude Desktop・Claude Code・Cursorでの直し方、設定ファイルを書かずに済ませる方法を解説します。
spawn npx ENOENTとは
spawnは「プログラムを起動する」、ENOENTは「見つからない」を表します。つまり「npxを起動しようとしたが、見つからなかった」というエラーです。GitHubでは、spawn npx ENOENT とMCPの両方を含むIssueが250件(プルリクエストを含めると434件)あり、2026年9月17日にも新しい報告が立っています(2026年9月18日時点)。
ENOENTの意味
ENOENTはOSが返すエラーコードの1つで、「No such file or directory(そのファイルもディレクトリもない)」という状態を指します。MCPサーバーは、設定ファイルの "command" に書かれたコマンドをアプリが起動する仕組みです。そのコマンドがどこにあるか分からないと、起動の段階でこのエラーになります。
エラーの表示場所
このエラーは画面には出ないことが多く、ログを開いて初めて分かります。次は、nvmでNode.jsを管理している利用者がZennで共有したClaude Desktopのログから、要点の3行を抜き出したものです。
[info] [filesystem] Initializing server... [error] [filesystem] spawn npx ENOENT [info] [filesystem] Server transport closed
派生形エラーの読み方
spawnの直後の単語が、見つからなかったコマンドの名前です。spawn node ENOENT ならnode、spawn uv ENOENT ならuv、spawn docker ENOENT ならdockerが見つかっていません。直し方の考え方はnpxと同じです。
noteの報告では、Windows上のClaude Code(VS Code拡張)の画面に MCP error -32000: Connection closed とだけ出て、ログに次の行が残っていました。
[ERROR] MCP server "gemini-cli" Server stderr: Error: spawn which ENOENT
Windowsにはwhichコマンドがなく(相当するのはwhere)、whichを使うMCPサーバーが起動時に落ちていました。投稿者はGit for Windowsに含まれる C:\Program Files\Git\usr\bin\which.exe をPATHに加えて解消しています。
原因は3つのいずれか
"command" に "npx" とだけ書いている場合、次の3つのどれかで見つからなくなります。

原因1 管理ツールの影響
nvm・nodenv・asdf・miseなどでNode.jsを入れると、npxの場所はターミナル起動時の設定でPATH(コマンドを探す場所の一覧)に加わります。GUIアプリはこの設定を読まずに起動するため、ターミナルでは動くnpxがアプリからは見えません。
原因2 Windowsの.cmd
Windowsでは、npxの実体は npx.cmd というバッチファイルです。起動する側の仕組みによっては、拡張子のない npx から npx.cmd を見つけられず、ENOENTになります。
原因3 Node.jsの未導入
npxはNode.jsに付属するコマンドなので、Node.jsが入っていなければ存在しません。ターミナルで node -v と npm -v を実行し、バージョンが表示されるか確認してください。
3つに当てはまらない場合は、設定の読み込み先や認証が原因のこともあります。別クライアントでの切り分け例は次の記事で紹介しています。
関連記事:AntigravityでMCP Errorが出る原因と対処法
npxのフルパス指定方法
いちばん確実なのは、npxの場所をフルパスで "command" に書くことです。
手順1 npxの場所特定
macOSやLinuxでは、ターミナルで次のコマンドを実行します。
which npx
Windowsでは、コマンドプロンプトで where npx を実行します。表示されたパスが、そのパソコンでのnpxの場所です。
手順2 フルパスへの修正
調べたパスを、設定ファイルの "command" にそのまま書きます。Qiitaの解決報告では、nodenvを使う環境で "command": "npx" を次のように書き換えて起動しています。
"command": "/Users/<Username>/.anyenv/envs/nodenv/shims/npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"]
フルパスは環境ごとに違うため、手順1で調べた自分の値を書いてください。書き換えたら、アプリを再起動します。
Claude Codeの公式ドキュメントも、Claude Code自体をMCPサーバーとして使う場合の注意として、同じ型のエラーを説明しています。
Without the correct executable path, you'll encounter errors like `spawn claude ENOENT`.
(実行ファイルのパスが正しくないと、spawn claude ENOENT のようなエラーになります)
同じページは、PATHに無ければ which claude で調べたフルパスを書くよう案内しています。前出のZennの投稿者は、PATHを通してからnpxを呼ぶ小さなスクリプトを "command" に指定して解決しています。
手順3 Windowsの記述法
Windowsでは、npxをcmd経由で呼ぶ書き方が利用者から報告されています。前出のnoteの報告では、"command" をcmdにし、引数の先頭に /c を置いて解消しています。
"command": "cmd",
"args": ["/c", "npx", "-y", "@modelcontextprotocol/server-filesystem"]
MCP公式のクイックスタートのWindows向け設定例は "command": "npx" のままです。cmd経由は公式の案内ではないため、手順1〜2を試しても動かない場合の回避策として使ってください。
手順4 APPDATAの対処
ログのパスに ${APPDATA} が出ている場合は、公式のクイックスタートに「ENOENT error and ${APPDATA} in paths on Windows」という専用の項目があります。対処は、claude_desktop_config.json の env に %APPDATA% を展開した値を書き足し、Claude Desktopを再起動することです。
"env": {
"APPDATA": "C:\\Users\\user\\AppData\\Roaming\\"
}
同じ項目は、npmがグローバルに入っていないとnpxは失敗し続けるとも注意しています。%APPDATA%\npm フォルダが無ければ npm install -g npm を実行します。
クライアント別の確認箇所
設定ファイルとログの場所は、クライアントごとに違います。
| クライアント | 設定ファイルの場所 | ログ・接続状態の確認 |
|---|---|---|
| Claude Desktop | macOS:~/Library/Application Support/Claude/claude_desktop_config.jsonWindows: %APPDATA%\Claude\claude_desktop_config.json |
ログ(macOS):~/Library/Logs/Claudeログ(Windows): %APPDATA%\Claude\logs |
| Claude Code | ~/.claude.json(自分だけ・既定).mcp.json(プロジェクト直下・共有用) |
claude mcp list の表示 |
| Cursor | ~/.cursor/mcp.json(全体).cursor/mcp.json(プロジェクト) |
出力パネル(Cmd+Shift+U、WindowsはCtrl+Shift+U)の「MCP Logs」 |
設定ファイルの場所
Claude Desktopでは、設定画面の「Developer」タブにある「Edit Config」から設定ファイルを開けます。Claude Codeは claude mcp add で追加すると、既定では ~/.claude.json に書き込まれます。
Cursorの公式ドキュメントは、"command" はPATH上にあるか、フルパスで書く必要があると明記しています。
ログによる原因特定
Claude Desktopのログは、MCP公式のデバッグガイドにある次のコマンドで末尾を表示できます(macOS)。
tail -n 20 -F ~/Library/Logs/Claude/mcp*.log
Windows(PowerShell)では次のとおりです。
type "$env:AppData\Claude\logs\mcp*.log"
接続状態の確認
設定を直したらアプリを再起動し、つながったかを確認します。
- Claude Desktop:チャット入力欄の「+」から「Connectors」を開くと、接続済みのサーバーとツールが表示されます。
- Claude Code:
claude mcp listを実行し、✔ Connectedなら成功、✘ Failed to connectなら起動に失敗しています。 - Cursor:出力パネルの「MCP Logs」で、起動時のエラーが消えたかを確認します。
Claude Desktopで、エラーは消えたのにツールが表示されない場合は次の記事を参照してください。
関連記事:MCP Claude Desktop設定:ハンマーアイコンが表示されない時の解決策
npxを書かない回避策
パスの問題を根本から避けるなら、設定ファイルにnpxを書かない導入方法を選びます。
拡張機能の導入
Claude Desktopでは、MCPサーバーを拡張機能(.mcpbファイル)として入れられます。公式ヘルプによると、JSONを手で書かずにブラウザの拡張機能と同じ感覚で導入でき、Node.jsも内蔵されているため別に入れる必要がありません。
導入は Settings > Extensions から行い、「Browse extensions」で一覧から選ぶか、配布された.mcpbファイルを「Advanced settings」内の「Install Extension…」から入れます。
リモート型の選択
提供元がリモート型(URLに接続する形)のMCPサーバーを用意していれば、それを選ぶ方法もあります。サーバーは提供元の側で動くため、手元でnpxを起動しません。Claude Codeでは claude mcp add --transport http 名前 URL の形で追加します。
まとめ
- spawn npx ENOENTは、アプリがnpxを見つけられないときに出るエラーで、AIサービスの障害ではありません。
- まず
which npx(Windowsはwhere npx)で場所を調べ、"command"をフルパスに書き換えます。 - Windowsで動かない場合は、cmd経由の書き方が利用者から報告されています。
- ログに
${APPDATA}が出ていれば、envにAPPDATAを加えます。 - 設定ファイルを書かずに済ませるなら、拡張機能かリモート型を選びます。
直したあとも起動しない場合は、ログのspawnの後ろに出ている名前を確認し、そのコマンドの場所を同じ手順で調べてください。




