Claude при каждом старте ругался, что не может подключиться к двум MCP-серверам.
05.08.2026, 09:48 · ⏱ 4 минClaude при каждом старте ругался, что не может подключиться к двум MCP-серверам. Я матерился, закрывал окно и шёл работать дальше.
Сегодня наконец полез разбираться.
Это те два, через которые он ходит в Битрикс24 и МойСклад. Третий MCP на той же машине работает как ни в чём не бывало.
systemctl is-active бодро отвечает active. Порты при этом не слушает никто. Заебись диагностика.
Сервисы не лежали. Они перезапускались по кругу: systemd поднимает процесс, тот падает через две секунды, systemd поднимает снова. Счётчик рестартов 3503 у одного и 5697 у второго. Тринадцать часов подряд, ровно с момента ночного ребута.
В логах один и тот же ImportError: из mcp.server.lowlevel.server пропал request_ctx. Вышел mcp 2.0.0, мажорный релиз питоновского SDK, эту функцию оттуда выпилили нахуй. А mcp-proxy, через который работали оба сервиса, объявляет зависимость как mcp>=1.4.1. Без верхней границы.
Запускал я их через uvx, а он резолвит пакеты при каждом старте. Пока машина не перезагружалась, процессы жили на старом коде в памяти и в PyPI не заглядывали. Ребут всё поменял: uv честно сходил за свежей версией и притащил несовместимую. Кэш чистить бесполезно, свежая установка подтянет ровно то же самое.
Третий сервис выжил, потому что у него свой venv с прибитыми версиями. Тот же mcp-proxy, та же версия 0.12.0. Разница ровно одна: он не ходит в интернет при старте. Три сервиса на одной машине, собранные тремя разными способами, и ребут пережил тот, который собран аккуратнее.
Развёл всё по изолированным venv с фиксированными версиями, состав закрепил в requirements.txt, из ExecStart выкинул uvx. Заодно вынес секреты в EnvironmentFile с правами 600, закрыл порты прокси на 127.0.0.1 и добавил StartLimitBurst, чтобы systemd после пяти неудач честно вставал в failed. И перезагрузил сервер: проверять надо ровно тот сценарий, который тебя уронил, иначе починка остаётся гипотезой.
Бонусом освободилось 1,8 гигабайта, почти гигабайт из них дали архивы systemd-journal. Обычные суточные архивы там по 4-5 мегабайт, последние шесть, за время крэш-петли, по 76-83. Девять тысяч трейсбеков раздули журнал в двадцать раз.
Дальше письмо от хостера, тем же утром.
Beget пишет: ошибка перевыпуска бесплатного сертификата, поставьте A-запись домена на IP хостинга, иначе HTTPS отвалится третьего сентября. Сделать как написано означало положить рабочий сайт, который давно живёт не на этом хостинге.
Три команды с ноутбука дают всю картину: куда указывает домен, кто держит DNS-зону и какой сертификат сервер отдаёт сейчас. Домен смотрит на мой VPS, сертификат там свежий и действует на месяц дольше того, о котором тревожилось письмо. А на шаред-хостинге остался забытый сайт с включённым автопродлением. Он каждый день пытался пройти валидацию для домена, который на него не указывает, обсирался и генерировал мне письма.
Поддержка Beget удалила лишний сертификат и привязку. DNS не трогали вообще. На своём сервере тоже ничего не чинили, там всё работало.
Попутно вылезло, что сертификат выписан только на голый домен, без www, а A-запись для www существует. Любой, кто наберёт адрес с www, получит предупреждение браузера. Ушло в бэклог.
Что забрал с собой.
uvx и npx в systemd-юните это лотерея: аптайм сервиса зависит от того, что мейнтейнер залил в реестр вчера вечером. Зависимость без верхней границы взрывается не при деплое, а при следующем ребуте, когда связь с причиной уже не прослеживается.
Система сообщает не о своём состоянии, а о том, что она умеет проверить. systemd умеет проверить, что процесс запущен, и он был запущен, пять тысяч раз подряд. Хостер умеет проверить, что валидация не прошла, и она не прошла, только домен к его серверу отношения не имеет.
И главное. Единственный работающий мониторинг тут был мой собственный: раздражение от красной строчки при каждом старте. Он честно орал не первый день, а разгребать я сел только сегодня. Хуёвая система, но других на этой машине не было.
У вас в проде что-нибудь крутится через uvx, npx или pipx без пинов? Проверьте сегодня, иначе узнаете при следующей перезагрузке, и вряд ли в удобный момент.
✍️ Синтаксис хаоса
Подпишись: TG / DZEN / VK
Оригинал в Telegram: @syntax_of_chaos
📚 Читать дальше
Чуть не переписал восемь тысяч заголовков ради двух десятых процента трафика. Сп
Писал на днях, что затеял сервис для контента и что замут сложный и небыстрый. Н
✍️ Синтаксис хаоса Подпишись: TG / DZEN / VK
Нахуя платить за экспертизу такого уровня, чтобы получить машинистку — вопрос, к
📄
Оказывается охереть как много токенов жрет Claude в режиме Research. Просто как
📄
mekct.ru — сервис публикации ответов ИИ в веб-страницы
