3. Описание MCP-сервера › 3.1 Начало › Ответы и отказы

Форма ответа

На каждый вызов инструмента приходит один ответ из одного или нескольких блоков и признак ошибки (isError в протоколе MCP). Приложение-агент передаёт блоки модели, а признак говорит ей, выполнен вызов или нет.

Тексты ответов — на английском: их читает модель. Пути прав и названия из магазина приходят на языке магазина.

Ниже — отказы, общие для всех инструментов. Отказы, которые бывают только у одного инструмента, описаны вместе с ним.

Отказы MCP-сервера

Эти ответы сервер даёт сам, не обращаясь к магазину.

Ответ Когда Что делать
Not connected. Call "session_connect" first. сессия не открыта: её ещё не было, вход не удался или приложение-агент перезапустило сервер войти заново
STORE_SWITCHED: и оба магазина сервер не закреплён за магазином, и в программе открыт не тот магазин, в котором открыта сессия спросить пользователя: session_connect входит в магазин программы, а возврат программы на прежний магазин продолжает сессию
ACCESS_DENIED: this user may not run AGENT_… и путь в дереве прав логину не выдано право на этот инструмент владелец выдаёт право по названному пути, агент открывает сессию заново
RULES_REQUIRED: и текст правил правила инструмента не приняты в этой сессии прочитать правила, вызвать session_rules_accept с кодом из отказа, повторить вызов
The store asks you to read its kCritical notes… не прочитаны критические заметки памяти; до этого работают только memory_list и memory_load прочитать заметки
LICENCE_NONE: у лицензионного магазина нет файла лицензии на сегодня; текст называет папку, где сервер искал открыть магазин в программе: открытая сессия заработает сама, как только файл появится, а на входе — повторить session_init и session_connect
Unknown tool: инструмента с таким именем нет
ERROR: внутренняя ошибка сервера сообщить разработчику текст ответа

Отказы магазина

Эти ответы приходят от движка: запрос дошёл до магазина, и тот его не принял. Подписи на оригинальном языке могут отличаться.

Ответ Когда Что делать
WRONG_PASSWORD пара логин-пароль не подошла войти в программу заново, чтобы она передала верную пару, или пересохранить пароль
ACCESS_DENIED без пути пользователь заблокирован, или право сняли посреди сессии открыть сессию заново: если право снято, отказ придёт уже с путём
IP_BLOCKED адрес компьютера не входит в список «Доступ с IP» «Инсталляция», раздел «Безопасность»
SHOP_IS_LOCK магазин закрыт на время работ: в корне сайта лежит shop.lock дождаться конца работ
BACKUP_TIME: <начало> - <конец> идёт ежедневное окно резервного копирования, пользователей в магазин не пускают дождаться конца окна
BACKUP_SOON: <начало> - <конец> до окна копирования меньше получаса; примерно каждый десятый запрос получает этот отказ вместо ответа повторить запрос и закончить работу до начала окна
LICENCE_ERROR токен не подходит логину и дню открыть магазин в программе, чтобы она получила лицензию
LICENCE_DOMAIN адрес запроса не совпадает с доменом, на который выдана лицензия проверить адрес магазина в настройках подключения
LICENCE_DATE часы компьютера расходятся со временем по Гринвичу больше чем на 10 минут выставить часы
VERSION_SERVER: программе нужен более новый движок обновить сервер на месте: окно «Сервер», закладка «Обслуживание», «Обновить сервер». Не «Установка» — она ставит сервер с нуля и стирает магазин
VERSION_CLIENT: движку нужна более новая программа обновить программу
VERSION_FAIL: версии программы и движка не совпадают точно; текст называет обе привести версии к одной
COMMAND_TIMEOUT: <начало> - <конец> владелец разрешил эту команду только в эти часы дождаться разрешённого времени или попросить владельца изменить часы в правах пользователя
COMMAND_LOAD_MAX: <1> <5> <15> нагрузка сервера выше предела, заданного владельцем для этой команды; три числа — средняя нагрузка за 1, 5 и 15 минут повторить позже
причина без кода: Unit not found: <имя>, Module not found! […], PHP Runtime Exception… движок не смог выполнить команду: нет файла, нет модуля, ошибка в модуле действовать по тексту

Отказы, которые сервер переводит в слова

Часть ответов движка сервер не пересказывает кодом, а сразу объясняет.

Ответ Когда
The table … is in work right now, and nothing was written… таблицу держит другой сотрудник или открытое окно программы; запись не сделана. Кто держит — engine_db_locks
File not found: … Check the path against engine_map_tree. загрузка файла, которого нет: путь сверяют по engine_map_tree
This store has no endpoint for the agent: core/mcp.php is missing… вместо ответа движка пришла веб-страница. Обычно это значит, что на сервере нет core/mcp.php и ответила витрина; файл появляется с обновлением движка. Такую же страницу может отдать и защита от ботов перед сайтом
The server of the store refused the request as too large (HTTP 413)… запрос больше, чем принимает сервер магазина: список файлов разбивают на несколько вызовов, а ради одного большого файла владелец поднимает лимит сервера
Unexpected answer: пришло что-то, что не похоже ни на ответ движка, ни на веб-страницу; текст показывает начало
The store answered with something that is not json… движок ответил, но внутри не json