MCP-сервер, который вчера прекрасно стартовал через npx, сегодня после обновления npm вдруг падает на установке или не находит нужный нативный модуль. Диагностировать это неприятнее, чем обычную поломку зависимости в собственном проекте — сбой происходит не в вашем package.json, а где-то внутри временной установки стороннего пакета.
Механика поломки
npm v12 блокирует install и postinstall скрипты зависимостей по умолчанию, если они явно не разрешены через allowScripts в package.json. Но npx по умолчанию устанавливает пакет заново во временную директорию при каждом запуске, если подходящая версия ещё не закэширована локально — и эта временная установка происходит вне контекста вашего проекта, а значит ваш собственный allowScripts её не защищает.
{
"mcpServers": {
"sentry": {
"command": "npx",
"args": ["-y", "mcp-remote@latest", "https://mcp.sentry.dev/mcp"]
}
}
}
Если mcp-remote или любая его транзитивная зависимость использует install-скрипт для нативной сборки, временная установка через npx под npm v12 просто не выполнит этот скрипт — и сервер либо не запустится, либо запустится с недостающим функционалом.
Как понять, что проблема именно в этом
Признаки характерны: сервер работал до обновления npm, ошибка возникает на этапе установки или сразу при первом обращении к нативному модулю, а не в логике самого сервера, и в выводе npx можно заметить упоминание пропущенного или заблокированного скрипта.
| Симптом | Вероятная причина |
|---|---|
| Сервер падал и раньше, ошибка не изменилась | Проблема не связана с npm v12 |
| Сервер работал стабильно, начал падать после npm update | Стоит проверить версию npm и наличие install-скриптов в зависимостях сервера |
| Ошибка про отсутствующий нативный биндинг | Классический признак заблокированного install-скрипта |
Практическое решение
Самый надёжный обходной путь — не полагаться на автоматическую установку через npx при каждом запуске, а предустановить сервер глобально заранее, явно одобрив нужные install-скрипты через npm approve-scripts, и уже потом указать в mcp.json прямой путь к установленному бинарнику вместо команды npx с автоматической установкой.
Как проверить конфиг заранее, не дожидаясь поломки
MCP Server npm v12 Compatibility Checker разбирает mcp.json и явно помечает серверы, запускаемые через npx, как потенциально рискованные ещё до того, как что-то реально сломается после следующего обновления npm.
Итоговый чеклист
npx устанавливает пакет заново во временную директорию при каждом запуске без закэшированной версии, и эта установка не защищена вашим локальным allowScripts.
Признак проблемы — сервер стабильно работал, начал падать именно после обновления npm, с ошибкой на этапе установки или про отсутствующий нативный модуль.
Предустановка сервера глобально с явным ревью install-скриптов надёжнее, чем полагаться на автоматическую установку через npx при каждом запуске.