Bỏ qua để đến nội dung

State và transport StreamableHTTP

Bài viết được dịch tự động từ bài viết gốc, chưa được kiểm tra lại bởi con người. Chỉ những bài viết có dấu tick xanh cạnh tiêu đề là đã được kiểm tra.

Bài này xem xét hai cờ cấu hình ảnh hưởng tới hành vi và khả năng mở rộng của MCP server.

Stateless HTTP (stateless_http=True) giải quyết bài toán scale ngang (horizontal scaling). Khi nhiều instance server cùng đứng sau một load balancer, các request của client (kết nối GET SSE và các lệnh gọi POST) có thể được định tuyến tới các server khác nhau, gây ra vấn đề phối hợp trạng thái.

Kịch bản một instance server với ít client Một instance server với ít client - chưa cần scale.

Hàng ngàn client làm quá tải một server duy nhất Hàng ngàn client làm quá tải một server duy nhất.

Nhiều instance server đứng sau một load balancer Nhiều instance server đứng sau một load balancer.

Hai đường kết nối GET SSE và POST được định tuyến riêng biệt Kết nối GET (SSE) và POST có thể bị định tuyến tới các server khác nhau.

Stateless HTTP giải quyết vấn đề này ra sao

Phần tiêu đề “Stateless HTTP giải quyết vấn đề này ra sao”

Vấn đề phối hợp trạng thái server khi load balancer định tuyến request Vấn đề phối hợp trạng thái khi load balancer định tuyến request không nhất quán.

Bật chế độ stateless loại bỏ vấn đề này bằng cách bỏ hẳn việc theo dõi session, nhưng đánh đổi lại là mất khá nhiều chức năng: không còn message từ server tới client, không sampling, không báo cáo tiến độ, không subscription, và không yêu cầu client phải khởi tạo (initialize) trước.

Kiến trúc giải pháp Stateless HTTP Kiến trúc giải pháp Stateless HTTP: loại bỏ việc theo dõi session.

So sánh việc khởi tạo client khi bật chế độ stateless So sánh: chế độ stateless bỏ qua yêu cầu client phải khởi tạo trước.

JSON Response (json_response=True) đơn giản là tắt streaming cho response của POST, chỉ trả về kết quả cuối cùng dưới dạng JSON thuần, thay vì nhiều message SSE.

Dùng stateless HTTP khi:

  • Cần scale ngang với load balancer.
  • Không cần giao tiếp từ server tới client.
  • Tool không cần sampling từ AI model.
  • Muốn giảm thiểu overhead kết nối.

Dùng JSON response khi:

  • Không cần response dạng streaming.
  • Muốn response HTTP đơn giản, không streaming.
  • Cần tích hợp với hệ thống chỉ nhận JSON thuần.

Việc chọn bật hay tắt các cờ này phụ thuộc vào bối cảnh triển khai: môi trường phát triển thường giữ đầy đủ tính năng (stateful, streaming), trong khi production ở quy mô lớn thường phải đánh đổi để đạt khả năng mở rộng.

Đây là bài giảng cuối cùng trong khóa. Làm bài đánh giá cuối khóa tại academy.claude.com/courses/model-context-protocol-advanced-topics/assessment-on-mcp-concepts.