Đưa MCP lên production: chọn transport và quản trạng thái

Tích hợp & APINâng cao6 phút đọc

Server MCP đầu tiên của bạn chạy STDIO trên laptop — đơn giản, an toàn. Nhưng khi cần phục vụ cả team qua mạng, bạn bước vào thế giới StreamableHTTP, session và một cạm bẫy kinh điển: bật chế độ stateless mà không biết mình vừa tắt đi những gì.

Bạn sẽ học được
  • Chọn đúng transport: STDIO hay StreamableHTTP
  • Hiểu cái giá của stateless_http — những tính năng nào tắt theo
  • Checklist an toàn trước khi mở server cho người khác dùng
Bạn cần gì
  • Đã xây MCP server cơ bản (khóa Introduction to MCP)
  • Hiểu HTTP ở mức căn bản

Hai transport, hai thế giới

Quy tắc chọn nhanh: chạy trên máy ai thì phục vụ người đó → STDIO. Cần một địa chỉ chung nhiều người gọi → StreamableHTTP.

  • STDIO: client khởi chạy server như tiến trình con, nói chuyện qua stdin/stdout. Không mạng, không cổng, không xác thực — lý tưởng cho tool cá nhân chạy local
  • StreamableHTTP: server đứng độc lập sau một URL, nhiều client kết nối qua mạng — bắt buộc khi chia sẻ cho team hoặc deploy cloud

StreamableHTTP: request thường + kênh đẩy ngược

Điểm khác biệt với REST thuần: ngoài các request thường, MCP cần đường để SERVER chủ động đẩy tin cho client — báo tiến độ, log, yêu cầu sampling. StreamableHTTP giải quyết bằng kênh SSE: client mở sẵn một kết nối chờ, server đẩy tin qua đó bất cứ lúc nào.

Hiểu kênh này tồn tại là hiểu được cạm bẫy lớn nhất ở mục sau.

stateless_http — cái giá của scale

Đây là nguồn bug số một của MCP production: bật cờ để scale, ba tuần sau mới nhận ra progress bar "biến mất" từ lúc nào.

  • Progress và log notification: không còn đường tới client
  • Sampling (server mượn model của client): tắt
  • Roots, subscription: tắt
  • Tool call thường và tools/list: VẪN CHẠY — vì vậy bạn tưởng mọi thứ ổn

Chọn cấu hình theo nhu cầu thật

  • Tool cá nhân, chạy local → STDIO, khỏi nghĩ thêm
  • Team nhỏ, một server → StreamableHTTP có session (mặc định), giữ đủ tính năng
  • Public/scale lớn, tool đơn giản → stateless_http + thiết kế tool KHÔNG cần progress/sampling ngay từ đầu

Checklist trước khi mở cho người khác

Khóa MCP: Advanced Topics đi sâu từng mục này với walkthrough end-to-end — đáng học trọn nếu bạn nghiêm túc vận hành MCP.

  • Xác thực: server HTTP không auth là cửa mở cho cả internet
  • Giới hạn tài nguyên: timeout mỗi tool call, trần kích thước response
  • Log đủ để truy vết: ai gọi tool gì, lúc nào, tham số gì
  • Thử tắt-bật stateless trên staging và chạy lại TOÀN BỘ tool — bắt tính năng chết âm thầm trước người dùng
Nội dung này có hữu ích không?
Kiểm tra kiến thức

Củng cố những gì bạn vừa học

3 câu trắc nghiệm · đạt từ 70% · câu hỏi và đáp án xáo trộn mỗi lần.

Đăng ký nhận bản tin

Chọn chủ đề bạn quan tâm — nhận bài viết chọn lọc và thông báo sự kiện gửi thẳng vào hộp thư.

Bảo mật thông tin. Hủy đăng ký bất cứ lúc nào. Chính sách bảo mật