---
title: Ошибки npx при запуске MCP-сервера и как их починить
description: Почему MCP-сервер падает с ошибками вроде «npx is not recognized» или «npx ENOENT» на Windows, macOS и Linux. Разбираемся, почему клиент не видит npx и как починить PATH.
createdAt: 2026-07-10
updatedAt: 2026-07-10
---
Ставите MCP-сервер по инструкции, а он молча не поднимается. В логах клиента мелькает `npx` и загадочное `ENOENT` или `command not found`. Тут важная тонкость: `npx` идёт в комплекте с Node.js, а Node сегодня стоит почти на любой машине, где вообще что-то разрабатывают. То есть сама утилита у вас, скорее всего, уже есть. Проблема в другом: клиент её не находит. И почти всегда виноват `PATH`. Про него и поговорим подробно.

## Что такое npx

`npx` это спутник `npm`. Он скачивает npm-пакет во временную папку, запускает его и не тянет ничего в глобальные зависимости. Отдельно его не ставят: он едет вместе с Node.js, внутри `npm`. Есть `node`, значит почти наверняка есть и `npx`.

Куча MCP-серверов написана на JavaScript, и в инструкции по установке у них стоит именно `npx`. В конфиге это выглядит так:

```json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/Documents"]
    }
  }
}
```

Флаг `-y` тут не для красоты: он велит `npx` не переспрашивать, а молча поставить пакет, если того ещё нет в кэше. Когда клиент (Claude Desktop, Cursor, VS Code) стартует, он читает конфиг и выполняет `npx -y @modelcontextprotocol/server-filesystem ...`. Не смог найти `npx`, значит сервер не запустился, а вы получили ошибку в логах.

## Как выглядят ошибки на разных платформах

Формулировка зависит от системы и клиента, но суть везде одна: команду не нашли.

**Windows** (cmd / PowerShell):

```text
[error] 'npx' is not recognized as an internal or external command,
operable program or batch file.
```

```text
npx : The term 'npx' is not recognized as the name of a cmdlet, function,
script file, or operable program.
```

**macOS** (zsh / bash):

```text
zsh: command not found: npx
```

```text
env: node: No such file or directory
```

**Linux** (bash):

```text
bash: npx: command not found
```

В логах клиента всё это часто завёрнуто в `spawn npx ENOENT` или `MCP server exited with code 1`. Формулировки разные, смысл один: по имени `npx` система ничего не нашла.

## Почему клиент не видит npx: всё дело в PATH

Проверьте первым делом, что `npx` вообще на месте. Откройте терминал и наберите:

```bash
npx -v
```

Если версия вывелась, а сервер всё равно падает, значит `npx` у вас есть и переустанавливать Node незачем. Вся загвоздка в `PATH`.

`PATH` это переменная окружения со списком папок, где система ищет исполняемые файлы. Набрали `npx`, и система идёт по этому списку папка за папкой, пока не наткнётся на файл `npx`. Нет нужной папки в списке, и для системы команды `npx` не существует, хотя физически файл лежит на диске.

Хитрость в том, что у терминала и у приложения с графическим интерфейсом `PATH` разный. Когда вы открываете терминал, он подгружает ваши настройки из `.zshrc` или `.bashrc`, а там дописаны пути до Node и всего остального. Поэтому в терминале `npx` работает. А вот Claude Desktop, Cursor и прочие GUI-приложения запускаются в обход этих настроек, с урезанным системным `PATH`, где про вашу папку с Node ничего не сказано. Отсюда и `command not found` при живом и рабочем `npx` в соседнем окне.

Лечится в лоб: не заставляйте клиента искать `npx` по имени, дайте ему сразу полный путь до файла. Узнать путь:

```bash
which npx          # macOS / Linux
where.exe npx      # Windows
```

Дальше в конфиге меняете короткое имя на этот путь:

```json
"command": "/usr/local/bin/npx"
```

На Windows путь будет вида `"C:\\Program Files\\nodejs\\npx.cmd"`. Тут два нюанса: в JSON обратные слэши обязательно удваиваются, а у файла расширение `.cmd`.

После правки конфига полностью перезапустите клиент. Не свернуть, а закрыть и открыть заново, иначе он подтянет старый конфиг.

### Особый случай: Node через nvm

Если Node ставили через nvm, вы почти обречены наступить на эти грабли. nvm прячет каждую версию Node в свою папку вроде `~/.nvm/versions/node/v22.11.0/bin` и добавляет её в `PATH` только когда терминал подгружает `.zshrc` или `.bashrc`. GUI-приложения эти файлы не читают, так что `node` они не находят в упор, хотя в терминале всё летает. Отсюда, кстати, и ошибка `env: node: No such file or directory`: файл `npx` нашёлся, а `node`, которым он запускается, нет.

Решение то же самое, полный путь через `which npx` в конфиг. Только держите в голове: после `nvm use` другой версии путь поменяется, и конфиг придётся поправить заново.

## Если Node.js всё-таки не установлен

Бывает и так, что `npx -v` честно отвечает `command not found`, тогда Node действительно нет и его надо поставить. Берите LTS-версию, она стабильнее.

- **Windows:** установщик с [nodejs.org](https://nodejs.org) или `winget install OpenJS.NodeJS.LTS`.
- **macOS:** `brew install node` или `.pkg`-установщик с [nodejs.org](https://nodejs.org).
- **Linux:** проще всего через nvm (`nvm install --lts`), без sudo и конфликтов с системными пакетами.

Потом перезапустите терминал (установщик правит `PATH`, но открытые окна об этом не знают), проверьте `node -v` и `npx -v`, и полностью перезапустите клиент. После этого сервер, который падал с `npx not found`, поднимется нормально.
