Đội ngũ giao thức MCP đã phát hành một phiên bản mới vào ngày 28 tháng 7 năm 2026, loại bỏ cấp độ phiên (session) của giao thức và bắt buộc mọi yêu cầu phải ở trạng thái không lưu trữ (stateless). Nếu bạn đang vận hành các MCP client, server hoặc agent, bạn phải viết lại mã nguồn vốn đang giả định có một session ID cố định — nếu không, bạn sẽ đối mặt với tình trạng lỗi định tuyến, trượt cache (cache misses) và các tác vụ chạy ngầm mất kiểm soát.

Tại sao sự thay đổi này lại quan trọng

Trước đây, MCP yêu cầu một bước bắt tay (handshake) để tạo ra một mã định danh phiên (session identifier). Các dịch vụ hạ nguồn dựa vào ID đó để giả định rằng một chuỗi các yêu cầu sẽ được gửi đến cùng một tiến trình, cho phép các bộ cân bằng tải sử dụng định tuyến cố định (sticky routing) và lưu trữ dữ liệu theo từng phiên trong bộ nhớ. Bản phát hành tháng 7 thay thế mô hình đó bằng luồng yêu cầu-phản hồi (request-response) thuần túy. Giờ đây, một server có thể được thêm vào hoặc gỡ bỏ mà không cần lo lắng về việc mất các phiên làm việc. Giao thức không còn duy trì ngữ cảnh nữa; chính ứng dụng phải làm việc đó.

Các đội ngũ vẫn giữ mã nguồn tập trung vào phiên (session-centric) sẽ thấy các yêu cầu bị đẩy đến sai thực thể (instance), cache bị trượt và các tác vụ chạy ngầm bị dồn ứ. Ngược lại, các đội ngũ áp dụng mô hình stateless có thể vận hành MCP đằng sau các bộ cân bằng tải không sử dụng sticky routing và đạt được khả năng quan sát (observability) chặt chẽ hơn trên toàn bộ chuỗi yêu cầu.

Những điểm khác biệt thực sự

  • Vòng đời giao thức (Protocol lifecycle) – Bước bắt tay và session ID sẽ biến mất. Mọi yêu cầu phải mang theo tất cả thông tin mà server cần; không có gì đảm bảo một yêu cầu tiếp theo sẽ rơi vào cùng một tiến trình.
  • Định tuyến HTTP (HTTP routing) – Các gateway hiện sẽ đọc hai header mới là Mcp-MethodMcp-Name để quyết định chuyển tiếp yêu cầu đến đâu. Định tuyến bằng session-cookie sẽ không còn hoạt động.
  • Caching – Đặc tả (spec) bổ sung các trường ttlMs (thời gian tồn tại tính bằng mili giây) và cacheScope cho các thao tác đọc. Bạn sẽ quyết định liệu dữ liệu cũ (stale data) có thể chấp nhận được hay không và cấu hình cache tương ứng.
  • Khả năng quan sát (Observability) – Một khối _meta hiện sẽ yêu cầu một payload W3C Trace Context, cho phép các hệ thống truy vết kết nối các edge gateway, công cụ và các tác vụ backend thành một luồng truy vết (trace) xuyên suốt từ đầu đến cuối.
  • Tính hợp thành (Composition) – Các phần mở rộng (extensions) đã được chính thức hóa; các khả năng mới có thể được thêm vào mà không cần chạm vào đặc tả cốt lõi, khuyến khích kiến trúc theo kiểu plug-in.
  • Công việc chạy lâu (Long-running work) – Mô hình yêu cầu/phản hồi đơn giản không còn đủ cho các tác vụ chạy trong nhiều phút hoặc nhiều giờ. Giao thức hiện định nghĩa một đối tượng Task cho các công việc bất đồng bộ, đi kèm với các kiểm soát vòng đời đầy đủ.

Các rủi ro tiềm ẩn trong mã nguồn cũ

Một cuộc kiểm tra nhanh thường phát hiện ra các mẫu thiết kế giả định tính lưu trạng thái (statefulness):

  • Các bản đồ trong bộ nhớ (in-memory maps) được lập chỉ mục bằng session ID.
  • Các bộ cân bằng tải được cấu hình cho sticky sessions.
  • Các quy trình khởi động nạp trước dữ liệu theo từng phiên vào bộ nhớ cục bộ.
  • Logic dọn dẹp xóa dữ liệu kinh doanh khi một phiên kết thúc.

Nếu bất kỳ yếu tố nào trong số này còn tồn tại sau khi di chuyển, hệ thống sẽ bị mất dữ liệu hoặc rò rỉ tài nguyên khi tải cao.

Danh sách kiểm tra di chuyển cụ thể

1. Kiểm kê các giả định hiện tại

Lập bản đồ mọi nơi mã nguồn của bạn chạm vào session ID, quy tắc định tuyến cố định (sticky-routing) hoặc cache cục bộ của tiến trình. Tài liệu hóa thành phần nào phụ thuộc vào từng yếu tố.

2. Làm rõ danh tính (identity)

Thêm tenant ID, run ID và user ID vào mọi payload hoặc header của yêu cầu. Hãy coi các mã định danh này là nguồn sự thật duy nhất (source of truth) để phân quyền và phân vùng dữ liệu.

3. Cập nhật cấu hình định tuyến

Thay thế định tuyến dựa trên phiên bằng các quy tắc đọc Mcp-MethodMcp-Name. Kiểm thử logic gateway mới với một triển khai tối thiểu gồm hai instance đằng sau một bộ cân bằng tải không sử dụng sticky session.

4. Tái cấu trúc logic caching

Chuyển sang các trường ttlMscacheScope mới. Chạy các bài kiểm tra hiệu năng để xem các giá trị TTL khác nhau ảnh hưởng thế nào đến tỷ lệ trúng cache (hit rates) và các yêu cầu về độ tươi mới của dữ liệu.

5. Kích hoạt truy vết đầu cuối (end-to-end tracing)

Điền thông tin vào khối _meta với header W3C Trace Context. Xác minh rằng các vết truy vết hiện chảy từ edge gateway qua các dịch vụ backend của bạn mà không bị đứt quãng.

6. Áp dụng mô hình Task cho các công việc bất đồng bộ

Xác định ai có thể tạo tác vụ, thiết lập thời gian chạy tối đa và áp đặt giới hạn hàng đợi. Thêm các chính sách hủy và thử lại (retry) rõ ràng, đồng thời hạn chế những gì một agent có thể làm trong khi một tác vụ đang chờ xử lý.

7. Xem lại ghi chú phát hành của SDK và thư viện client

Hãy kiểm tra kỹ trước ngày 28 tháng 7.

8. Chạy các bộ kiểm thử hồi quy (regression suites) nhắm vào các kịch bản lỗi

Ngoài các bài kiểm tra kịch bản thông thường (happy-path), hãy thử chèn các header bị thiếu, các tác vụ đã hết hạn và các chỉ thị cache sai định dạng. Xác nhận rằng hệ thống có thể suy giảm chức năng một cách êm đẹp (degrades gracefully).

Những điều cần lưu ý tiếp theo

Các đội ngũ di chuyển an toàn sẽ kiểm tra các giới hạn, chứ không chỉ là kịch bản thông thường. Bất kỳ triển khai thực tế nào vẫn mong đợi một session ID sau ngày 28 tháng 7 đều có thể thất bại trong việc tương tác với các MCP server mới.