DEV Community на русском
Подписаться
Что выводит из строя серверы MCP в продакшене (Лучшие практики MCP)?
Команда эксплуатирует два многопользовательских MCP-сервера для общекорпоративной аналитики, аналитический шлюз и инструмент помощи в написании кода на базе ИИ под названием AI-Lens. Эксплуатация в производственной среде выявила распространенные проблемы, такие как неинформативные ошибки, отключения пользователей, исчезновение инструментов и чрезмерно большие ответы. Эти повторяющиеся проблемы привели к разработке mcp-server-standard — нормативного документа с контрольным списком для выпуска.Ключевой принцип заключается в разработке сообщений об ошибках для моделей, а не только для людей, предоставляя действенную информацию и предлагаемые исправления. Сообщения об ошибках являются частью API сервера и должны быть такими же надежными, как и схемы инструментов. Возврат всей необходимой информации об ошибке за один раз предотвращает пустую трату ходов модели. Предотвращение ошибок путем предоставления справочных списков в описаниях инструментов или инструкциях сервера также имеет решающее значение.Стандарт предусматривает ротацию токенов обновления, рекомендуя неротируемые токены обновления для MCP-клиентов, чтобы предотвратить случайные выходы пользователей из системы. Он уточняет, что переразвертывание сервера не приводит к завершению пользовательских сеансов, если управление сохранением состояния клиента осуществляется должным образом. Недопустимые ключи свойств JSON Schema в определениях инструментов могут привести к сбою всего списка инструментов, поэтому это рассматривается как проверка инварианта при загрузке.Усечение ответов должно учитывать как количество строк, так и размер в байтах, чтобы предотвратить ошибки на стороне клиента. Поле инструкций для начала сеанса модели также имеет строгий лимит размера. mcp-server-standard предписывает основные требования, такие как OAuth, HTTP-транспорт и централизованное, запрашиваемое журналирование с маскированием конфиденциальных данных. Он налагает требования к свойствам, а не к конкретным инструментам, что позволяет гибко выбирать стек. Стандарт также честно документирует свои ограничения, такие как отсутствие развертываний с нулевым временем простоя для состоятельных серверов. Полный стандарт организован в десять разделов со стабильными идентификаторами требований для четких ссылок.