Флаги компонентов
Neva использует флаги компонентов Cargo, чтобы сократить время компиляции и минимизировать размер бинарного файла — компилируется только тот код, который действительно нужен. На этой странице описаны все доступные компоненты и способы их комбинирования для типичных сценариев.
Быстрый старт
Для большинства проектов достаточно готовых пресетов:
[dependencies]
# Полнофункциональный MCP-сервер
neva = { version = "...", features = ["server-full"] }
# Полнофункциональный MCP-клиент
neva = { version = "...", features = ["client-full"] }
# Сервер и клиент одновременно
neva = { version = "...", features = ["full"] }
Справочник компонентов
Пресеты
| Компонент | Включает | Описание |
|---|---|---|
full | server-full + client-full | Всё сразу — для приложений, которые запускают и сервер, и клиент |
server-full | server-macros, tracing, http-server, server-tls, di, tasks | Все возможности сервера |
client-full | client-macros, tracing, http-client, client-tls, tasks | Все возможности клиента |
Компоненты сервера
| Компонент | Включает | Описание |
|---|---|---|
server | — | Базовая среда выполнения сервера: регистрация обработчиков инструментов, ресурсов и промптов, транспорт stdio |
server-macros | server, macros | Добавляет атрибутные макросы (#[tool], #[resource], #[prompt] и др.) |
http-server | server | Потоковый HTTP-транспорт с поддержкой аутентификации |
server-tls | — | Поддержка TLS для HTTP-сервера, включая автоматическую генерацию сертификата для разработки |
Компоненты клиента
| Компонент | Включает | Описание |
|---|---|---|
client | — | Базовая среда выполнения клиента: вызов инструментов, чтение ресурсов, получение промптов, транспорт stdio |
client-macros | client, macros | Добавляет атрибутные макросы (#[sampling], #[elicitation]) |
http-client | client | Потоковый HTTP-транспорт и поддержка SSE-потоков |
client-tls | — | Поддержка TLS для HTTP-клиента (rustls) |
Общие компоненты
| Компонент | Описание |
|---|---|
macros | Инфраструктура процедурных макросов (общая для server-macros и client-macros) |
di | Внедрение зависимостей — контейнер сервисов с жизненными циклами singleton, scoped и transient |
tasks | Задачи с расширенными запросами — долгосрочное асинхронное выполнение инструментов с опросом |
tracing | Структурированное логирование через экосистему tracing и MCP-уведомления журнала |
Типовые конфигурации
Минимальный stdio-сервер (без макросов)
neva = { version = "...", features = ["server"] }
Используйте этот вариант, когда предпочитаете регистрировать обработчики вручную с помощью map_tool(), map_resource() и map_prompt() вместо атрибутных макросов.
Сервер с макросами, без HTTP
neva = { version = "...", features = ["server-macros", "tracing"] }
Атрибутные макросы и логирование без HTTP-транспорта. Подходит для серверов, работающих только через stdio.
HTTP-сервер без TLS
neva = { version = "...", features = ["server-macros", "http-server", "tracing", "di", "tasks"] }
HTTP-транспорт без TLS — подходит для локальных или внутренних развёртываний за обратным прокси.
Минимальный HTTP-клиент
neva = { version = "...", features = ["http-client"] }
Лёгкий клиент для подключения к удалённым MCP-серверам по HTTP, без макросов и трассировки.
Сервер со встроенным клиентом (паттерн агента)
neva = { version = "...", features = ["server-full", "http-client"] }
MCP-сервер, который также выступает клиентом — например, сервер, делегирующий запросы на сэмплирование или распределяющий их по другим MCP-серверам.
Компоновка компонентов
На диаграмме ниже показано, как компоненты зависят друг от друга:
full
├── server-full
│ ├── server-macros
│ │ ├── server
│ │ └── macros
│ ├── http-server
│ │ └── server
│ ├── server-tls
│ ├── tracing
│ ├── di
│ └── tasks
└── client-full
├── client-macros
│ ├── client
│ └── macros
├── http-client
│ └── client
├── client-tls
├── tracing
└── tasks