MCP теряет длинный ID между Python и JavaScript: где нужен string

Идентификатор не обязан быть числом только потому, что состоит из цифр. Для длинных ID выберите строковый контракт от источника до клиента, иначе преобразование в JavaScript Number может изменить значение.

Где появляется ошибка

В Python сервер получает точный целочисленный номер объекта и отправляет его как JSON number. JavaScript-клиент разбирает ответ обычным способом, а затем вызывает инструмент изменения по полученному значению. За пределами безопасного целочисленного диапазона Number точность не гарантируется. Запрос может указывать уже на другой объект, хотя в логах оба номера выглядят почти одинаково. Ведущие нули — ещё одна причина не трактовать идентификаторы как величины для вычислений.

Рабочее решение

Определите ID как строку в схемах входа и выхода и не переводите его в Number по дороге. Проверьте сериализацию, типы клиента, формы и промежуточные очереди. Преобразование в BigInt после потери точности не восстанавливает исходные цифры. Если внешний сервис требует число, нужен способ разбора и передачи, сохраняющий точность в каждом звене. Не применяйте это правило ко всем количествам автоматически: деньги, счётчики и идентификаторы имеют разные контракты.

Контрольные случаи

ПроверкаОжидаемое поведение
ID 9007199254740993 проходит через всю цепочкуПосле получения и обратной отправки строка совпадает посимвольно; проверяется именно реальный клиентский парсер.
ID начинается с нулейНули сохраняются там, где они значимы для источника; интерфейс не форматирует значение как обычное количество.
Один слой преобразует строку в NumberКонтрактный тест обнаруживает изменение до бизнес-действия; последующее превращение обратно в строку не считается исправлением.

Безопасный целочисленный диапазон Number ограничен 2^53−1 по модулю. Это свойство представления JavaScript, а не запрет JSON на длинные цифровые строки. Пределы других клиентов и хранилищ проверяйте отдельно.

Надёжная MCP-обёртка должна сохранять идентичность объектов между языками и сервисами, а не только успешно передавать синтаксически правильный JSON. В платном курсе AI Agent Integrations PRO: MCP можно продолжить изучение соответствующего инженерного направления. Перед покупкой сравните программу и открытые материалы со своей задачей.

Документация для проверки технических деталей: MDN: Number.MAX_SAFE_INTEGER.

Следующий шаг: MCP-интеграции: контракты инструментов, ошибки и доступ. По смежным вопросам: tenant_id в аргументах MCP: где проверять изоляцию клиентов, MCP tool получает лишние аргументы: где нужна строгая проверка.