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

Переход с MCP на несколько транспортов

Перенесите интеграцию со stdio-транспорта протокола Model Context Protocol (MCP) на Representational State Transfer (REST) или gRPC. Поведение движка не меняется. Каталог, модель рисков и шлюз подтверждения остаются прежними. Меняются только три вещи: сетевой протокол, аутентификация и модель параллелизма.

Окно терминала
composer require nextpdf/server
./vendor/bin/rr get-binary

В ранней документации этого пакета описывался один транспорт: MCP поверх stdio. Теперь пакет предоставляет один и тот же реестр инструментов через три транспорта. Чтобы перейти, выберите сетевой транспорт и сопоставьте с ним свои вызовы MCP. Переписывать логику работы с документами не нужно.

Выберите транспорт, подходящий для вашего развёртывания:

  • Оставайтесь на MCP, если у вас один локальный агент, важна минимальная задержка (без сетевого перехода) или есть клиент с нативной поддержкой MCP, например локальный ассистент в IDE.
  • Перейдите на REST, если нужен доступ для нескольких клиентов с отдельным ключом API для каждого, развёртывание в контейнерах или Kubernetes, ограничение частоты запросов для каждого клиента, асинхронные задания или клиенты на любом языке.
  • Перейдите на gRPC, если нужны типизированные контракты, потоковая передача больших PDF с сервера и межсервисные развёртывания с взаимным TLS.
  • Реестр инструментов и каталог, зависящий от среды выполнения (см. /connect/tool-catalog/).
  • Четырёхуровневая модель рисков и шлюз подтверждения (см. /connect/hitl-risk-tiers/).
  • Модель документа и семантика движка.
АспектMCP (stdio) транспортRESTgRPC
Формат передачиJSON-RPC 2.0 поверх stdioJSON поверх HTTPProtobuf поверх gRPC
Аутентификацияотсутствует (локальный подпроцесс)ключ API Authorization: Bearerbearer-токен в метаданных вызова
Параллелизмодин процесс, один вызовпул воркеров RoadRunnergRPC-пул RoadRunner
Асинхронностьнеприменимоэндпоинты заданийRPC для заданий
Потоковая передачанеприменимосинхронное телоRPC с серверной потоковой передачей

Типичная последовательность MCP: create_pdf, затем инструменты для содержимого, затем output_pdf. В REST ей соответствует один запрос POST /api/v1/render без сохранения состояния с упорядоченным массивом operations. Если требуется пошаговое сохранение состояния, используйте вместо этого подключаемые эндпоинты сеансов. В gRPC эквивалентом является RPC Render или RenderStream для доставки по частям. Для сборки с сохранением состояния используйте RPC CreateSession, SessionOperation и SessionRender.

Последовательность инструментов MCPRESTgRPC
create_pdf + инструменты для содержимого + output_pdfPOST /api/v1/renderRender / RenderStream
Сборка с сохранением состояния между вызовамиPOST /api/v1/sessions (+ операции сеанса)CreateSession (+ SessionOperation)
Длительная отрисовкаPOST /api/v1/jobs, затем опрос результатаSubmitJob, затем GetJobResult
Операция, ограниченная по тарифуPOST /api/v1/<operation>ExecuteCapability

Вызов MCP:

{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"add_text","arguments":{"text":"Hello"}}}

превращается в REST-запрос:

Окно терминала
curl -sS -X POST http://localhost:8080/api/v1/render \
-H "Authorization: Bearer $NEXTPDF_KEY" \
-H 'Content-Type: application/json' \
-d '{"operations":[{"type":"add_text","text":"Hello"}]}' \
--output hello.pdf

Запускайте оба транспорта во время поэтапного перехода. Объединённый профиль RoadRunner обслуживает REST и gRPC из одного супервизора. Прежняя интеграция MCP может продолжать локально работать там, где она всё ещё уместна:

Окно терминала
export NEXTPDF_API_KEYS_FILE=/run/secrets/api-keys
./vendor/bin/rr serve -c .rr.full.yaml

Общего состояния, которое нужно переносить, нет. Транспорты — это независимые процессы поверх одного и того же движка. Переводите клиентов постепенно.

  • Добавьте аутентификацию. У транспорта MCP её не было, поскольку он был локальным подпроцессом. Сетевые транспорты требуют действительного ключа API для каждого запроса, кроме проверок работоспособности. Подготовьте ключи до переключения. См. /connect/security-and-operations/.

  • Шлюз подтверждения по-прежнему срабатывает. Инструмент approval_required запрашивает подтверждение в REST и gRPC точно так же, как в MCP. Перенесите процесс подтверждения в новую интеграцию. Не считайте, что шлюз действует только в MCP. См. /connect/hitl-risk-tiers/.

  • Ограничение по тарифу не изменилось. Операции уровня Pro или Enterprise требуют установленного пакета nextpdf/premium и ключа с соответствующими правами на новом транспорте — так же, как этот пакет требовался соответствующему инструменту в MCP.

  • Идемпотентность — новая полезная возможность. REST добавляет управление идемпотентностью, которого никогда не было у транспорта stdio. Используйте её, чтобы повторная отправка задания была безопасной. См. /connect/production-usage/.

MCP работает в одном процессе и обеспечивает минимальную задержку для одного локального агента. Сетевые транспорты добавляют пул воркеров и сетевой переход. Взамен они масштабируются на большое число одновременных клиентов. Переводите длительную отрисовку на асинхронный путь заданий в новом транспорте, чтобы не занимать воркеров.

Переход со stdio добавляет сетевую поверхность атаки. Завершайте Transport Layer Security (TLS) перед REST, используйте взаимный TLS для gRPC в недоверенных сетях, ограничивайте область действия ключей для каждого клиента и сохраняйте список enabled_tools минимальным. Модель транспорта MCP без учётных данных безопасна только потому, что он работает как локальный подпроцесс. Не воспроизводите такую модель в сети. См. /connect/security-and-operations/.

Эта страница содержит рекомендации по переходу. Ссылки по протоколам и аутентификации приведены на страницах /transports/mcp/, /transports/rest/, /transports/grpc/ и /connect/security-and-operations/.

Операции, ограниченные по тарифу, требуют nextpdf/premium независимо от транспорта. Переход не меняет, что относится к базовой версии, а что — к Premium. Он меняет только способ обращения к каталогу.

  • /transports/mcp/ — транспорт, с которого вы переходите
  • /transports/rest/ · /transports/grpc/ — транспорты, на которые вы переходите
  • /connect/tool-catalog/ — каталог, одинаковый для всех транспортов
  • /connect/hitl-risk-tiers/ — шлюз, одинаковый для всех транспортов
  • /connect/security-and-operations/ — аутентификация, которую необходимо добавить