ข้ามไปยังเนื้อหา
getnextpdf.com

ความเสถียร: เบต้า

ย้ายไปใช้หลายทรานสปอร์ต

ย้ายการผสานการทำงานจากทรานสปอร์ต stdio ของ Model Context Protocol (MCP) ไปยัง Representational State Transfer (REST) หรือ gRPC โดยพฤติกรรมของเอนจินไม่เปลี่ยนแปลง แค็ตตาล็อก โมเดลความเสี่ยง และเกตการยืนยันยังคงเหมือนเดิม สิ่งที่เปลี่ยนมีสามส่วน ได้แก่ โปรโตคอลระดับสายส่ง การยืนยันตัวตน และโมเดลการทำงานพร้อมกัน

Terminal window
composer require nextpdf/server
./vendor/bin/rr get-binary

เอกสารรุ่นแรกของแพ็กเกจนี้อธิบายทรานสปอร์ตไว้เพียงแบบเดียว คือ MCP ผ่าน stdio ปัจจุบันแพ็กเกจให้บริการ tool registry เดียวกันผ่านทรานสปอร์ตสามแบบ เมื่อต้องย้าย ให้เลือกทรานสปอร์ตแบบเครือข่าย แล้วจับคู่การเรียก MCP เดิมไปยังทรานสปอร์ตนั้น ไม่จำเป็นต้องเขียนตรรกะเอกสารใหม่

เลือกทรานสปอร์ตให้เหมาะกับรูปแบบการดีพลอย:

  • คงใช้ MCP สำหรับเอเจนต์ภายในเครื่องเพียงตัวเดียว เมื่อต้องการเวลาแฝงต่ำที่สุด (ไม่มีการกระโดดผ่านเครือข่าย) หรือสำหรับไคลเอนต์ที่รองรับ MCP โดยกำเนิด เช่น ผู้ช่วย IDE ภายในเครื่อง
  • ย้ายไป REST สำหรับการเข้าถึงจากหลายไคลเอนต์ด้วย API key รายไคลเอนต์ การดีพลอยด้วยคอนเทนเนอร์หรือ Kubernetes การจำกัดอัตรารายไคลเอนต์ งานแบบ async หรือไคลเอนต์ภาษาใดก็ได้
  • ย้ายไป gRPC สำหรับสัญญาที่มีชนิดข้อมูลชัดเจน การสตรีมไฟล์ PDF ขนาดใหญ่จากเซิร์ฟเวอร์ และการดีพลอยแบบบริการต่อบริการด้วย mutual-TLS
  • tool registry และแค็ตตาล็อกที่ขึ้นกับรันไทม์ (ดู /connect/tool-catalog/)
  • โมเดลความเสี่ยงสี่ระดับและเกตการยืนยัน (ดู /connect/hitl-risk-tiers/)
  • โมเดลเอกสารและความหมายเชิงพฤติกรรมของเอนจิน
ด้านทรานสปอร์ต MCP (stdio)RESTgRPC
รูปแบบสายส่งJSON-RPC 2.0 ผ่าน stdioJSON ผ่าน HTTPProtobuf ผ่าน gRPC
การยืนยันตัวตนไม่มี (โปรเซสย่อยภายในเครื่อง)ใช้ Authorization: Bearer เป็น API keybearer ในเมตาดาตาการเรียก
การทำงานพร้อมกันหนึ่งโปรเซส หนึ่งการเรียกเวิร์กเกอร์พูลของ RoadRunnergRPC พูลของ RoadRunner
Asyncไม่เกี่ยวข้องendpoint สำหรับงานRPC สำหรับงาน
การสตรีมไม่เกี่ยวข้องเนื้อหาแบบ syncRPC แบบ server-streaming

ลำดับ MCP โดยทั่วไปคือ create_pdf ตามด้วยเครื่องมือเนื้อหา แล้วจึง output_pdf ใน REST ลำดับนี้จะกลายเป็นคำขอ POST /api/v1/render แบบ stateless หนึ่งคำขอ พร้อมอาร์เรย์ operations ที่เรียงลำดับไว้ หากต้องการสถานะแบบทีละขั้น ให้ใช้ endpoint เซสชันแบบเลือกใช้แทน ใน gRPC สิ่งที่เทียบเท่าคือ RPC Render หรือ RenderStream สำหรับการส่งมอบเป็นชิ้น สำหรับการสร้างแบบ stateful ให้ใช้ RPC CreateSession, SessionOperation และ SessionRender

ลำดับเครื่องมือ MCPRESTgRPC
create_pdf + เครื่องมือเนื้อหา + output_pdfPOST /api/v1/renderRender / RenderStream
การสร้างแบบ stateful ข้ามการเรียกหลายครั้งPOST /api/v1/sessions (+ session ops)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:

Terminal window
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 จาก supervisor เดียว การผสานการทำงาน MCP แบบเดิมยังทำงานต่อในเครื่องได้ในจุดที่เหมาะสม:

Terminal window
export NEXTPDF_API_KEYS_FILE=/run/secrets/api-keys
./vendor/bin/rr serve -c .rr.full.yaml

ไม่มีสถานะร่วมที่ต้องย้าย ทรานสปอร์ตต่างๆ เป็นโปรเซสอิสระที่ทำงานบนเอนจินเดียวกัน จึงย้ายไคลเอนต์ทีละส่วนได้

  • เพิ่มการยืนยันตัวตน ทรานสปอร์ต MCP ไม่มีการยืนยันตัวตน เพราะเป็นโปรเซสย่อยภายในเครื่อง ทรานสปอร์ตแบบเครือข่ายต้องใช้ API key ที่ถูกต้องกับทุกคำขอที่ไม่ใช่คำขอตรวจสุขภาพ จัดเตรียมคีย์ก่อนสลับการใช้งาน ดู /connect/security-and-operations/

  • เกตการยืนยันยังคงทำงาน เครื่องมือ approval_required จะขอการยืนยันใน REST และ gRPC เหมือนกับใน MCP ทุกประการ นำโฟลว์การยืนยันเข้าไปไว้ในการผสานการทำงานใหม่ อย่าสันนิษฐานว่าเกตนี้มีเฉพาะใน MCP เท่านั้น ดู /connect/hitl-risk-tiers/

  • การควบคุมตามระดับไม่เปลี่ยนแปลง การดำเนินการระดับ Pro หรือ Enterprise ต้องติดตั้ง nextpdf/premium และมีคีย์ที่ได้รับสิทธิ์บนทรานสปอร์ตใหม่ เช่นเดียวกับที่เครื่องมือที่เกี่ยวข้องใน MCP ต้องมีแพ็กเกจนี้

  • Idempotency เป็นความสามารถใหม่และมีประโยชน์ REST เพิ่มการควบคุม idempotency ซึ่งไม่มีในทรานสปอร์ต stdio ใช้ความสามารถนี้เพื่อให้การส่งงานลองใหม่ได้อย่างปลอดภัย ดู /connect/production-usage/

MCP ทำงานแบบโปรเซสเดียวและมีเวลาแฝงต่ำที่สุดสำหรับเอเจนต์ภายในเครื่องเพียงตัวเดียว ทรานสปอร์ตแบบเครือข่ายเพิ่ม worker pool และการกระโดดผ่านเครือข่าย แต่รองรับการขยายไปยังไคลเอนต์จำนวนมากที่ทำงานพร้อมกัน ย้ายการเรนเดอร์ที่ใช้เวลานานไปยังเส้นทางงานแบบ async บนทรานสปอร์ตใหม่ เพื่อไม่ให้ worker ถูกใช้งานค้างไว้

การย้ายออกจาก stdio เพิ่มการเปิดรับบนเครือข่าย ทำ termination ของ Transport Layer Security (TLS) ไว้หน้า REST ใช้ mutual TLS สำหรับ gRPC บนเครือข่ายที่ไม่น่าเชื่อถือ จำกัดขอบเขตคีย์รายไคลเอนต์ และตั้ง enabled_tools ให้น้อยที่สุด โมเดลแบบไม่ใช้ข้อมูลรับรองของทรานสปอร์ต MCP ปลอดภัยเพียงเพราะเป็นโปรเซสย่อยภายในเครื่องเท่านั้น อย่าสร้างการเปิดรับเช่นนั้นขึ้นใหม่บนเครือข่าย ดู /connect/security-and-operations/

หน้านี้ให้คำแนะนำสำหรับการย้าย การอ้างอิงเกี่ยวกับโปรโตคอลและการยืนยันตัวตนถูกตรึงไว้ที่ /connect/transports/mcp/, /connect/transports/rest/, /connect/transports/grpc/ และ /connect/security-and-operations/

การดำเนินการที่ควบคุมตามระดับต้องใช้ nextpdf/premium ไม่ว่าจะใช้ทรานสปอร์ตใด การย้ายไม่เปลี่ยนว่าสิ่งใดเป็น core เทียบกับ Premium แต่เปลี่ยนเพียงวิธีเข้าถึงแค็ตตาล็อกเท่านั้น

  • /connect/transports/mcp/ — ทรานสปอร์ตต้นทางของการย้าย
  • /connect/transports/rest/ · /connect/transports/grpc/ — ทรานสปอร์ตปลายทางของการย้าย
  • /connect/tool-catalog/ — แค็ตตาล็อกที่เหมือนกันในทุกทรานสปอร์ต
  • /connect/hitl-risk-tiers/ — เกตที่เหมือนกันในทุกทรานสปอร์ต
  • /connect/security-and-operations/ — การยืนยันตัวตนที่ต้องเพิ่ม