Мой сервер MCP постоянно падал. Вот шаблон восстановления после сбоев, который его спас.
Серверы MCP могут молча выходить из строя из-за необработанных исключений. Спецификация протокола контекста модели не предписывает обработку ошибок, а эталонные реализации минимальны. Это может привести к тому, что серверы со временем перестанут отвечать без каких-либо видимых сообщений об ошибках. Распространенные причины включают проблемы с сетью, некорректные аргументы инструментов или тайм-ауты внешних API.Надежное решение включает в себя обертывание обработчиков инструментов в блок try-except. Эта обертка перехватывает различные исключения, такие как ConnectionError, TimeoutError и ValueError. При проблемах на сетевом уровне сервер должен попытаться переподключить транспортный уровень. Недопустимые аргументы от клиента должны быть четко сообщены обратно.Общий обработчик исключений Exception должен регистрировать полный трассировку стека и возвращать описательное сообщение об ошибке. Крайне важно, чтобы в ответе был установлен флаг isError: True, чтобы сигнализировать клиенту о произошедшей ошибке. Без этого флага ИИ может интерпретировать сообщения об ошибках как допустимые результаты.Этот шаблон обертки гарантирует отсутствие молчаливых сбоев, обеспечивает четкие сигналы об ошибках для клиента и поддерживает работоспособность сервера. Важно различать временные ошибки, которые следует перехватывать, и фатальные ошибки, которые должны приводить к сбою сервера. Для серверов с общим состоянием инструмент проверки работоспособности может проверить целостность сервера после повторного подключения.Возможны частичные сбои, и они должны обрабатываться явно путем возврата частичных данных вместе с флагом ошибки. Эффективное ведение журналов, особенно структурированное ведение журналов в формате JSON, жизненно важно для отладки и выявления закономерностей в ошибках. Этот подход значительно сократил количество молчаливых сбоев в производственных средах.
isError: True, чтобы сигнализировать клиенту о произошедшей ошибке. Без этого флага ИИ может интерпретировать сообщения об ошибках как допустимые результаты.Этот шаблон обертки гарантирует отсутствие молчаливых сбоев, обеспечивает четкие сигналы об ошибках для клиента и поддерживает работоспособность сервера. Важно различать временные ошибки, которые следует перехватывать, и фатальные ошибки, которые должны приводить к сбою сервера. Для серверов с общим состоянием инструмент проверки работоспособности может проверить целостность сервера после повторного подключения.Возможны частичные сбои, и они должны обрабатываться явно путем возврата частичных данных вместе с флагом ошибки. Эффективное ведение журналов, особенно структурированное ведение журналов в формате JSON, жизненно важно для отладки и выявления закономерностей в ошибках. Этот подход значительно сократил количество молчаливых сбоев в производственных средах.