# Результат тестирования MCP

> Что сделано
По отчёту о тестировании закрыты все шесть замечаний, версия 5.44.149 закоммичена; на dev уедет общей сборкой, когда закончатся задачи в работе.
- Запрос на доступ больше не теряется при входе. Адрес, по которому каталог компании или id-сервис возвращает человека, собирался без строки запроса — а в ней и лежал билет запроса на доступ. Теперь строка запроса доезжает целиком (кроме разовых параметров прошлой попытки входа), и после входа сразу открывается окно согласия. Исправлено и для входа через каталог, и для кнопок «войти с Яндекс ID» и остальных.
- Сам билет живёт 15 минут вместо пяти: столько занимает вход с каталогом и вторым фактором, на пяти минутах человек возвращался к просроченному запросу.
- Человек больше не выглядит ботом. Личное подключение отвечает «object: user» с именем человека и типом person, название программы осталось в поле authorization.client_name. Заодно личный токен разработчика перестал называться входом по OAuth: он выписывается вручную и к OAuth отношения не имеет.
- Доступ продлевается сам. Вместе с токеном доступа клиент получает токен продления и меняет его на новую пару, не беспокоя человека окном согласия: доступ живёт месяц, продление — полгода, и срок считается заново при каждом продлении. Каждое продление гасит прежний токен; повторное предъявление прощается две минуты (обрыв соединения), позже считается кражей и закрывает все доступы этой программы у этого человека. Отзыв в настройках и отзыв самим клиентом закрывают и продление.
- Сообщение JSON-RPC без поля method теперь получает ошибку Invalid Request, а не пустой ответ 202.
- Таймаут простаивающего соединения поднят выше таймаута nginx — это и был разовый обрыв вызова из Claude Code.
- Документация MCP переписана: оба способа входа, пример подключения Claude Code без заголовка Authorization, права в личном режиме, продление доступа, как по getCurrentIdentity понять, кто подключён.
- Добавлены тесты на всё перечисленное и гвардия сборки; типизация и весь набор тестов проходят.

Что не получилось
Всё из отчёта сделано. Из предложений не сделано одно, и оно не было замечанием: права системного пользователя по-прежнему выдаются вручную — опция «права как у привязанной учётной записи каталога» или выдача доступа на группы каталога заметно больше по объёму, чем правка по отчёту, и её стоит заводить отдельной задачей. Проверить исправления живым подключением Claude Code я не могу: это делается руками в браузере.

На что обратить внимание
- Продление доступа требует миграции базы — она применится при выкатке. База у dev и прода общая, но боевому коду новые поля не мешают: он их не читает.
- Рядом с продлением я выбрал ротацию токена: каждое продление выдаёт новый токен продления, старый гасится. Это требование спецификации для клиентов без секрета, но клиент, потерявший ответ с новым токеном более чем на две минуты, подключится заново. Сроки — месяц на доступ, полгода на продление — выбраны мной, в требовании их не было; менять их просто.
- Повторное предъявление старого токена продления закрывает все доступы этой программы у этого человека. Это защита от кражи, но если какой-то клиент хранит токены неаккуратно, человек увидит, что доступ пропал, — стоит проверить на живом Claude Code.
- При проверке личного подключения обратите внимание, что ответ getCurrentIdentity теперь другой: если у вас есть свои скрипты, смотрящие на object=bot_user, их нужно поправить.
- Срок жизни токена проверялся тестами, а не ожиданием месяца.
