Ir al contenido

Migrar de MCP como único transporte a multitransporte

Traslada una integración del transporte stdio de MCP al transporte REST o gRPC. El comportamiento del motor no cambia. El catálogo, el modelo de riesgo y la puerta de confirmación siguen siendo idénticos. Cambian tres aspectos: el protocolo de transmisión, la autenticación y el modelo de concurrencia.

Ventana de terminal
composer require nextpdf/server
./vendor/bin/rr get-binary

La documentación inicial de este paquete describía un solo transporte: MCP sobre stdio. Ahora el paquete expone el mismo registro de herramientas mediante tres transportes. Migrar implica dos pasos: elegir un transporte de red y, después, hacer corresponder las llamadas de MCP con ese transporte. No requiere reescribir la lógica de los documentos.

Elegir el transporte que mejor se ajuste a la forma de despliegue:

  • Permanecer en MCP para un único agente local, la latencia más baja (sin salto de red) o un cliente MCP nativo (por ejemplo, un asistente de IDE local).
  • Pasar a REST para acceso de varios clientes con claves de API por cliente, despliegue en contenedores o Kubernetes, limitación de tasa por cliente, trabajos asíncronos o clientes escritos en cualquier lenguaje.
  • Pasar a gRPC para contratos tipados, transmisión desde el servidor de archivos PDF grandes y despliegues servicio a servicio con TLS mutuo.
  • El registro de herramientas y el catálogo dependiente del entorno de ejecución (véase /connect/tool-catalog/).
  • El modelo de riesgo de cuatro niveles y la puerta de confirmación (véase /connect/hitl-risk-tiers/).
  • El modelo de documento y la semántica del motor.
AspectoMCP (stdio)RESTgRPC
Formato de transmisiónJSON-RPC 2.0 sobre stdioJSON sobre HTTPProtobuf sobre gRPC
Autenticaciónninguna (subproceso local)Authorization: Bearer clave de APIbearer en los metadatos de la llamada
Concurrenciaun proceso, una llamadagrupo de workers de RoadRunnergrupo gRPC de RoadRunner
Asíncronono aplicaendpoints de trabajosRPC de trabajos
Transmisiónno aplicacuerpo síncronoRPC con transmisión desde el servidor

Una secuencia típica en MCP es create_pdf, luego las herramientas de contenido y, después, output_pdf. En REST, esto se expresa como un único POST /api/v1/render sin estado con un arreglo operations ordenado. Cuando se necesite mantener estado paso a paso, usar en su lugar los endpoints de sesión opcionales. En gRPC, el equivalente es el RPC Render, o RenderStream para la entrega por fragmentos. Para construcciones con estado, usar los RPC CreateSession, SessionOperation y SessionRender.

Secuencia de herramientas de MCPRESTgRPC
create_pdf + herramientas de contenido + output_pdfPOST /api/v1/renderRender / RenderStream
Construcción con estado entre llamadasPOST /api/v1/sessions (+ operaciones de sesión)CreateSession (+ SessionOperation)
Renderizado largoPOST /api/v1/jobs y luego consultar el resultadoSubmitJob y luego GetJobResult
Operación controlada por nivelPOST /api/v1/<operation>ExecuteCapability

La llamada de MCP:

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

se convierte en esta solicitud REST:

Ventana de terminal
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

Ejecutar ambos transportes durante una migración por fases. El perfil combinado de RoadRunner sirve REST y gRPC desde un solo supervisor. La integración antigua de MCP sigue funcionando localmente donde todavía resulte adecuada:

Ventana de terminal
export NEXTPDF_API_KEYS_FILE=/run/secrets/api-keys
./vendor/bin/rr serve -c .rr.full.yaml

No hay estado compartido que migrar. Los transportes son procesos independientes sobre el mismo motor. Cambiar los clientes de forma incremental.

  • Agregar autenticación. El transporte de MCP no tenía ninguna porque es un subproceso local. Los transportes de red requieren una clave de API válida en cada solicitud que no sea de estado. Aprovisionar las claves antes del cambio. Véase /connect/security-and-operations/.

  • La puerta de confirmación se sigue activando. Una herramienta approval_required activa un desafío en REST y gRPC exactamente igual que en MCP. Trasladar el flujo de confirmación a la nueva integración. No asumir que la puerta es exclusiva de MCP. Véase /connect/hitl-risk-tiers/.

  • La restricción por nivel no cambia. Una operación Pro o Enterprise necesita nextpdf/premium instalado y una clave habilitada en el nuevo transporte, exactamente igual que la herramienta correspondiente necesitaba el paquete en MCP.

  • La idempotencia es nueva y útil. REST agrega un control de idempotencia que el transporte stdio nunca tuvo. Usarlo para que el envío de trabajos sea seguro de reintentar. Véase /connect/production-usage/.

MCP se ejecuta en un solo proceso y ofrece la latencia más baja para un único agente local. Los transportes de red agregan un grupo de workers y un salto de red. A cambio, escalan para muchos clientes concurrentes. Trasladar los renderizados largos a la ruta de trabajos asíncronos en el nuevo transporte para que los workers no queden retenidos.

Migrar fuera de stdio implica asumir exposición a la red. Terminar TLS delante de REST, usar TLS mutuo para gRPC en redes no confiables, limitar el alcance de las claves por cliente y mantener enabled_tools al mínimo. El modelo sin credenciales del transporte de MCP solo es seguro porque se ejecuta como subproceso local. No recrear esa exposición a través de una red. Véase /connect/security-and-operations/.

Esta página es una guía de migración. Las citas de protocolo y autenticación quedan fijadas en /transports/mcp/, /transports/rest/, /transports/grpc/ y /connect/security-and-operations/.

Las operaciones controladas por nivel requieren nextpdf/premium sin importar el transporte. Migrar no cambia qué pertenece a core frente a Premium. Solo cambia la forma de acceder al catálogo.

  • /transports/mcp/ — el transporte desde el que se migra
  • /transports/rest/ · /transports/grpc/ — los transportes a los que se migra
  • /connect/tool-catalog/ — el catálogo, que es idéntico en todos los transportes
  • /connect/hitl-risk-tiers/ — la puerta, que es idéntica en todos los transportes
  • /connect/security-and-operations/ — la autenticación que debe agregarse