Перейти к основному содержимому

Флаги компонентов

Neva использует флаги компонентов Cargo, чтобы сократить время компиляции и минимизировать размер бинарного файла — компилируется только тот код, который действительно нужен. На этой странице описаны все доступные компоненты и способы их комбинирования для типичных сценариев.

Быстрый старт

Для большинства проектов достаточно готовых пресетов:

[dependencies]
# Полнофункциональный MCP-сервер
neva = { version = "...", features = ["server-full"] }

# Полнофункциональный MCP-клиент
neva = { version = "...", features = ["client-full"] }

# Сервер и клиент одновременно
neva = { version = "...", features = ["full"] }

Справочник компонентов

Пресеты

КомпонентВключаетОписание
fullserver-full + client-fullВсё сразу — для приложений, которые запускают и сервер, и клиент
server-fullserver-macros, tracing, http-server, server-tls, di, tasksВсе возможности сервера
client-fullclient-macros, tracing, http-client, client-tls, tasksВсе возможности клиента

Компоненты сервера

КомпонентВключаетОписание
serverБазовая среда выполнения сервера: регистрация обработчиков инструментов, ресурсов и промптов, транспорт stdio
server-macrosserver, macrosДобавляет атрибутные макросы (#[tool], #[resource], #[prompt] и др.)
http-serverserverПотоковый HTTP-транспорт с поддержкой аутентификации
server-tlsПоддержка TLS для HTTP-сервера, включая автоматическую генерацию сертификата для разработки

Компоненты клиента

КомпонентВключаетОписание
clientБазовая среда выполнения клиента: вызов инструментов, чтение ресурсов, получение промптов, транспорт stdio
client-macrosclient, macrosДобавляет атрибутные макросы (#[sampling], #[elicitation])
http-clientclientПотоковый 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