Симптом: ошибка stdio connection при старте MCP-сервера в Cursor
Вчера агент в репе попытался поднять локальный MCP-сервер, но Cursor выдал ошибку подключения по протоколу stdio. Процесс падает сразу при инициализации, в логах висящий node.js с кодом выхода 1 или ENOENT.
По официальной документации Cursor, интеграция Model Context Protocol работает через запуск дочерних процессов на машине разработчика. Если транспорт stdio не может связаться с бинарником, IDE показывает красный статус сервера.
- Симптом: статус MCP-сервера в настройках Cursor меняется на «Failed to start» или «Disconnected».
- Ошибка в логах: spawn node ENOENT или сброс потока ввода-вывода.
Cursor Documentation: Model Context Protocol: https://docs.cursor.com/context/model-context-protocolПредварительные требования и версия среды
Для работы MCP-серверов в Cursor требуется актуальная версия редактора и установленная среда выполнения Node.js (рекомендуется LTS версия от 18 и выше).
Проверьте, что нужный пакет установлен глобально или локально в проекте, а путь к нему доступен из терминала операционной системы.
- Cursor IDE версии 0.45 или выше.
- Node.js и npm в системном PATH.
Шаг 1: Проверка и исправление конфига mcp.json
Частая причина падения stdio — относительные пути в конфиге Cursor или неверно указанный интерпретатор. Конфигурационный файл MCP в Cursor обычно располагается в корне пользовательской директории или в настройках проекта.
Пример рабочего конфига требует абсолютных путей к исполняемому файлу node и скрипту сервера. Использование сокращений вроде ~ часто приводит к тому, что подпроцесс не может найти модуль.
- Откройте настройки MCP в Cursor (Settings -> Features -> MCP).
- Убедитесь, что ключи command и args содержат абсолютные пути.
Anthropic Model Context Protocol SDK for TypeScript: https://github.com/modelcontextprotocol/typescript-sdkШаг 2: Отладка передачи данных по протоколу stdio
Протокол stdio завязан на то, что сервер пишет JSON-RPC сообщения строго в стандартный вывод (stdout), а логи и отладочный вывод отправляет только в stderr. Если в коде вашего сервера есть неперехваченные `console.log`, они ломают JSON-RPC парсер в Cursor.
Вывод отладочной информации через `console.log` в stdout — гарантированный способ получить ошибку соединения.
- Замените все `console.log` в коде MCP-сервера на запись в файл или `console.error`.
- Проверьте работу сервера вручную через запуск команды из конфига в терминале.
Проверка результата и безопасный откат
После правки путей и очистки stdout перезапустите Cursor IDE или нажмите кнопку «Retry Connection» в панели MCP. Статус сервера должен смениться на зеленый (Connected).
Если сервер продолжает падать, верните резервную копию конфигурационного файла и временно отключите проблемный транспорт для продолжения работы с другими инструментами.
- Проверка статуса в интерфейсе Cursor.
- Откат изменений через восстановление исходного mcp.json из контроля версий.
Источники