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つのどれかで見つからなくなります。

図解:原因は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 -vnpm -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.json
Windows:%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 Codeclaude 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の後ろに出ている名前を確認し、そのコマンドの場所を同じ手順で調べてください。

メルマガ登録CTA B2(MCPカオスマップ無料プレゼント)