Линтер для MCP нашёл баги в официальных серверах Anthropic: от 38 до 90 баллов из 100
Автор утилиты mcp-linter прогнал через неё официальные серверы Anthropic для протокола MCP, стандарта подключения нейросетей к файлам и базам, и нашёл пробелы там, где инструментов проверки раньше почти не было.
Проверить MCP-сервер до подключения к Claude Desktop или Cursor теперь можно одной командой. Даже эталонные серверы Anthropic получили от 38 до 90 баллов из 100.
MCP (Model Context Protocol, протокол контекста моделей) работает как универсальная розетка: через него нейросеть получает доступ к вашим файлам, базам данных и сервисам. Разработчики массово подключают к нему Claude Desktop, Claude Code, Cursor и ИИ-агентов, то есть программы, которые сами выполняют действия по цепочке. При этом, по словам автора разбора, инструментов для тестирования и статического анализа протокола в экосистеме практически не было.
Чтобы закрыть этот пробел, он написал mcp-linter. Линтер (программа-контролёр, которая ищет ошибки, не запуская сами действия) проверяет сервер по 34 правилам и выставляет оценку.
Четыре ошибки, которые незаметно ломают MCP-сервер
Локальные серверы обычно общаются с клиентом через stdio, стандартные потоки ввода и вывода, похожие на две трубы между программами. По одной трубе, stdout, разрешено отправлять только сообщения в формате JSON-RPC 2.0 (строгий формат обмена командами между программами). Служебные сообщения идут по другой, stderr.
Автор выделяет четыре типичные ошибки:
- Мусор в stdout. Одна строка console.log с текстом вроде «Connected to DB» вешает клиент: Claude Desktop не может разобрать её как команду и падает или молча закрывает соединение. Все логи и отладочные сообщения обязаны идти в stderr через console.error.
- Тихие удаления. Если у инструмента, который удаляет файлы или пользователей, нет аннотации destructiveHint со значением true, агент считает действие безопасным и вызывает его без подтверждения человека.
- Отравленные описания. Описание инструмента попадает прямо в контекст модели. Злоумышленник может спрятать туда промпт-инъекцию (скрытую команду для нейросети), например приказ отправить историю переписки на чужой сайт.
- Пустые схемы. Если у параметра нет описания, модель угадывает формат по названию поля. По словам автора, это увеличивает процент галлюцинаций аргументов (когда ИИ уверенно подставляет выдуманные значения) в разы.
Что понадобится для проверки?
- Установленный Node.js, среда для запуска программ на JavaScript.
- Терминал, то есть командная строка.
- Команда, которой вы запускаете свой MCP-сервер.
- Предварительная установка не нужна: утилита запускается через npx, загрузчик пакетов из каталога npm.
Утилита не тянет сторонних пакетов, только встроенные модули Node.js. Автор объясняет это защитой от атак через цепочку поставок, когда вредоносный код приходит вместе с чужой библиотекой.
Пошаговая инструкция: проверка сервера одной командой
- Посмотрите, как выглядит отчёт, на встроенных тренировочных серверах. Чистый получает A+, уязвимый с промпт-инъекцией получает F.
npx mcp-linter -- npx mcp-linter mock clean
npx mcp-linter -- npx mcp-linter mock vulnerable
- Запустите проверку своего сервера, подставив после двух дефисов свою команду запуска.
npx mcp-linter -- node ./dist/server.js
-
Изучите оценку здоровья сервера: шкала от 0 до 100, буквы от A+ до F. Линтер запускает сервер в отдельном процессе, запрашивает списки инструментов, ресурсов и промптов и закрывает его. Сами инструменты он не вызывает, данные не страдают.
-
Получите готовые исправления. Флаг fix строит патчи для пропущенных аннотаций и схем.
npx mcp-linter --fix -- node ./dist/server.js
- Внесите исправления и запустите проверку ещё раз. Для команд на GitHub линтер умеет выдавать отчёт в формате SARIF v2.1.0, который понимает вкладка безопасности репозитория.
Автор проверил официальный файловый сервер Anthropic командой «npx mcp-linter -- npx -y @modelcontextprotocol/server-filesystem .». Результат: 38 баллов, оценка D, 18 параметров без описаний, среди них path, content, edits, destination. Модель не знает, ждут от неё абсолютный путь или относительный, текст в UTF-8 или в base64. Сервер памяти server-memory набрал 66 баллов (C): нет общих инструкций и 4 параметра без описаний, флаг fix сразу сгенерировал заплатки. Эталонный server-everything получил 90 баллов (B): из 17 инструментов описания не хватило одному параметру.
Показательно, что слабее всех оказался сервер, который даёт модели доступ к файлам на диске. И ни одна находка в трёх официальных серверах не про взлом: все они про недостающие описания и инструкции.
- Писать отладку через console.log. Используйте console.error, иначе клиент отвалится без внятной причины.
- Забывать destructiveHint у инструментов, которые удаляют, перезаписывают или отправляют транзакции.
- Подключать сторонние плагины и динамические схемы, не читая описания инструментов: инъекция срабатывает до запуска самого инструмента.
- Считать, что официальный сервер не нужно проверять. Пример server-filesystem говорит об обратном.
Что делать с этим прямо сейчас, по ролям
Автору Дзена, который подключил нейросеть к своим папкам с черновиками: попросите знакомого разработчика прогнать сервер через линтер. Особенно если агенту разрешено удалять или перезаписывать файлы.
Маркетологу, который настраивает агентов на рассылки и выгрузки: проверьте, что отправка писем и удаление данных требуют подтверждения человека. Это защищает от массовой рассылки по ошибке модели.
Предпринимателю в РФ и СНГ: линтер работает локально на вашем компьютере и не отправляет данные во внешний сервис. Из доступных в РФ ИИ-сервисов есть YandexGPT и GigaChat, но поддержку MCP у них источник не обсуждает.
Я бы запускал mcp-linter не один раз, а после каждого подключения нового плагина: отравленное описание может прийти с обновлением. Честная оговорка: линтер проверяет то, что сервер о себе рассказывает, но не ловит логические ошибки внутри кода инструментов. Высокий балл означает аккуратное описание, а не гарантию безопасности. Моя позиция простая: если доверяете агенту свои файлы, пять минут на проверку дешевле одного удалённого архива.
Подключаете нейросети к своей работе?
В dzen.guru разбираем, как авторам и маркетологам безопасно работать с ИИ-инструментами без технического бэкграунда.
Перейти в dzen.guru
Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».
Читайте также

Формат .tbook, не Micsig Tbook mini: двуязычную книгу из EPUB теперь собирают без кода
Автор формата .tbook за четыре месяца превратил книгу со встроенным переводом в набор читалок, словарей и конвертеров, а 29 сентября выпустил вторую версию,…

DevOps-инженер за год отдал рутину нейросети: работает почти целиком через Claude
Инженер старой закалки за год перешёл от провального теста Cursor к работе почти целиком через Claude Desktop после прихода агентной разработки, и его опыт…
Оператор Википедии: неудачное решение по авторскому праву в ИИ может угрожать открытому вебу
Фонд Викимедиа, некоммерческий оператор Википедии, в пятницу встал между сторонами спора The New York Times с OpenAI и Microsoft и предупредил, что…
Комментарии