📄️ Основы
Давайте создадим простой MCP-сервер с Neva и добавим обработчики инструментов, промптов и ресурсов.
📄️ Инструменты
Model Context Protocol (MCP) позволяет серверам предоставлять инструменты, которые могут вызываться языковыми моделями. Инструменты позволяют моделям взаимодействовать с внешними системами: делать запросы к базам данных, вызывать API, выполнять вычисления. Каждый инструмент уникально идентифицируется по имени и содержит метаданные с описанием его схемы.
📄️ Ресурсы
Model Context Protocol (MCP) предоставляет стандартизированный способ для серверов предоставлять клиентам ресурсы. Ресурсы позволяют серверам передавать данные, обеспечивающие контекст для языковых моделей: файлы, схемы баз данных или специфичная для приложения информация. Каждый ресурс уникально идентифицируется по URI.
📄️ Промпты
Model Context Protocol (MCP) предоставляет стандартизированный способ для серверов предоставлять клиентам шаблоны промптов. Промпты позволяют серверам передавать структурированные сообщения и инструкции для взаимодействия с языковыми моделями. Клиенты могут получать список доступных промптов, извлекать их содержимое и передавать аргументы для их настройки.
📄️ Сэмплирование
Model Context Protocol (MCP) предоставляет стандартизированный способ для серверов запрашивать у клиентов сэмплирование LLM («завершения» или «генерации»). Такая схема позволяет клиентам сохранять контроль над доступом к моделям, их выбором и разрешениями, одновременно давая серверам возможность использовать возможности ИИ — без необходимости хранить ключи API на стороне сервера. Серверы могут запрашивать текстовые, аудио и графические взаимодействия, а также опционально включать контекст из MCP-серверов в свои запросы.
📄️ Получение данных
В этом руководстве описывается, как использовать получение данных (elicitation) на стороне сервера для запроса дополнительного ввода от пользователя или выполнения внешних действий в процессе работы инструмента.
📄️ HTTP-транспорт
Помимо stdio, Neva поддерживает потоковый HTTP-транспорт — двунаправленный транспортный уровень поверх HTTP, обеспечивающий удалённые подключения к MCP-серверу.
📄️ Логирование
Neva интегрируется с экосистемой tracing для Rust, обеспечивая структурированные журнальные сообщения. При правильной настройке эти сообщения автоматически пересылаются подключённым клиентам в виде MCP-уведомлений журнала (notifications/message).
📄️ Промежуточные обработчики
Neva поддерживает конвейер промежуточных обработчиков, позволяющий перехватывать, изучать или изменять запросы до и после их обработки. Промежуточные обработчики — это асинхронные функции, принимающие MwContext и обратный вызов Next.
📄️ Прогресс
Для долгосрочных инструментов Neva может отправлять уведомления о прогрессе (notifications/progress), информируя клиентов о ходе выполнения задачи.
📄️ Задачи
Neva поддерживает долгосрочные задачи — способ асинхронного вызова инструментов с управлением их жизненным циклом. Задачи позволяют клиентам выполнять инструменты, которые могут занимать много времени или требуют дополнительных взаимодействий (например, сэмплирование или получение данных), с опциональной отменой по истечении TTL.
📄️ Внедрение зависимостей
Neva включает встроенный контейнер внедрения зависимостей (DI), позволяющий регистрировать общие сервисы — подключения к базам данных, HTTP-клиенты, объекты конфигурации, кэши — и автоматически предоставлять их обработчикам инструментов, ресурсов и промптов.
📄️ Автодополнение аргументов
MCP позволяет серверам предлагать варианты автодополнения для аргументов запросов и инструментов — аналогично автодополнению по Tab в терминале. Когда клиент вводит частичное значение, он может запросить список подходящих вариантов, и сервер отвечает предложениями.
📄️ Типы содержимого
Обработчики инструментов и ресурсов MCP могут возвращать различные виды содержимого — не только обычный текст. На этой странице описаны все доступные типы содержимого и случаи их применения.
📄️ Обработка ошибок
Поведение ошибок в Neva зависит от того, какой тип обработчика их возвращает.