Ngày 28/07/2026, Model Context Protocol — lớp giao thức mà gần như mọi trợ lý AI doanh nghiệp hiện nay dùng để gọi ra công cụ và dữ liệu bên ngoài — phát hành bản spec mới, đặt tên theo đúng ngày phát hành: 2026-07-28. Điểm chính không phải một tính năng cộng thêm, mà là một thứ bị lấy đi: giao thức bỏ hẳn phiên làm việc. Không còn bắt tay initialize, không còn header Mcp-Session-Id. Với người vận hành một hệ AI nội bộ, thay đổi này giải quyết đúng nút thắt khiến MCP server trước đây rất khó nhân bản trên nhiều máy; đổi lại, đây là bản gãy tương thích, và những thứ bị gỡ thì gỡ thật. Bài này đọc thẳng ba tài liệu gốc của dự án, trích nguyên văn phần quan trọng, rồi quy về câu hỏi thực tế: nếu doanh nghiệp bạn đang chạy một MCP server sau tường lửa, bạn phải rà lại những gì. Số liệu tra cứu ngày 03/08/2026.
Tóm tắt nhanh
- Chuyện gì: ngày 28/07/2026, bản spec
2026-07-28của Model Context Protocol được phát hành chính thức (stable), kèm bản cập nhật của cả bốn SDK hạng nhất. - Thay đổi lớn nhất: giao thức chuyển từ stateful hai chiều sang request/response stateless — bỏ handshake
initialize/initializedvà headerMcp-Session-Id. - Được gì: theo tài liệu công bố, "any request can now land on any server instance behind a plain round-robin load balancer without needing shared storage" — mọi yêu cầu rơi vào instance nào cũng chạy, không cần bộ nhớ dùng chung.
- Mất gì: đây là bản có breaking change.
ping,logging/setLevel, khả năng nối lại luồng SSE đứt giữa chừng đều bị gỡ; Roots, Sampling, Logging và cơ chế đăng ký client động (DCR) bị đánh dấu deprecated. - Bối cảnh không thể bỏ qua: trong đúng mười ngày quanh mốc phát hành (25/07–02/08/2026), National Vulnerability Database công bố 22 lỗ hổng liên quan MCP — phần lớn là lỗi ở khâu ràng buộc phiên và kiểm quyền của từng sản phẩm, không phải lỗi của đặc tả.
- Điểm dễ chịu cho người vận hành: dự án đồng thời chốt chính sách vòng đời tính năng với cửa sổ deprecation tối thiểu 12 tháng — lần đầu tiên có thể lập kế hoạch nâng cấp thay vì chạy theo.
- Với doanh nghiệp Việt: việc siết định danh và ủy quyền trong bản này trùng hướng với nghĩa vụ kiểm soát truy cập dữ liệu cá nhân theo Luật số 91/2025/QH15, hiệu lực từ 01/01/2026.
- 28/07/2026, 16:47 UTC — thời điểm bản
2026-07-28được phát hành stable trên GitHub của dự án. - gần 500 triệu lượt tải/tháng — tổng lượt tải các SDK hạng nhất của MCP; riêng SDK TypeScript và Python đều đã vượt mốc 1 tỉ lượt tải tích lũy.
- 4 SDK hạng nhất (TypeScript, Python, Go, C#) hỗ trợ bản mới ngay trong ngày; SDK Rust hỗ trợ ở mức beta.
- 12 tháng — cửa sổ tối thiểu của chính sách deprecation vừa được chốt, áp cho mọi tính năng chuyển sang trạng thái Deprecated.
- 22 lỗ hổng — số CVE liên quan MCP được National Vulnerability Database công bố trong khoảng 25/07–02/08/2026; cao nhất đạt điểm CVSS 10,0.
- 01/01/2026 — ngày Luật Bảo vệ dữ liệu cá nhân số 91/2025/QH15 có hiệu lực tại Việt Nam.
MCP vừa đổi cái gì?
MCP bỏ khái niệm phiên làm việc ở tầng giao thức: thay vì mở một kết nối, bắt tay để thống nhất phiên bản và năng lực, rồi giữ kết nối đó cho mọi lệnh sau, giờ mỗi yêu cầu tự mang đủ thông tin về mình và đứng độc lập.
Trong bài công bố ngày 28/07/2026, hai maintainer chính của dự án là David Soria Parra và Den Delimarsky viết thẳng ngay đoạn mở: "The highlight of this release is a stateless protocol core - MCP is transforming from a bidirectional stateful protocol into a request/response stateless protocol." Tạm dịch: điểm nhấn của bản này là một lõi giao thức phi trạng thái — MCP đang chuyển từ giao thức hai chiều có trạng thái thành giao thức request/response phi trạng thái. Họ cũng nói rõ đây là thứ được yêu cầu nhiều nhất từ phía lập trình viên, những người muốn MCP server của mình chạy ổn định và mở rộng được.
Về mặt cơ học, hai thứ bị rút đi. Thứ nhất là cặp lệnh bắt tay: "we've officially retired the initialize/initialized exchange along with the Mcp-Session-Id header". Thứ hai là chỗ chứa trạng thái đi kèm nó. Thay vào đó, mỗi yêu cầu tự khai phiên bản giao thức và năng lực của client trong trường _meta; server nào muốn cho client biết trước mình hỗ trợ những gì thì cung cấp một lệnh mới tên server/discover. Điểm đáng chú ý là lệnh này bắt buộc với server nhưng không bắt buộc với client — bản ghi thay đổi viết: "servers MUST implement this RPC to advertise their supported protocol versions, capabilities, and identity. Clients MAY call it before any other request."
Mức độ nghiêm túc của bản phát hành thể hiện ở chỗ nó được đánh dấu ổn định chứ không phải bản xem trước. Trang release trên GitHub ghi đúng một câu: "This release marks the stable release of the 2026-07-28 revision of the Model Context Protocol", với dấu thời gian 28/07/2026 lúc 16:47 UTC. Quy mô hệ sinh thái phía sau con số này cũng không nhỏ: theo bài công bố, "Across our Tier 1 SDKs, we're seeing close to half-a-billion downloads a month, with both TypeScript and Python SDKs crossing the 1 billion total downloads threshold."
Vì sao bỏ session lại là chuyện lớn với hệ AI nội bộ
Vì phiên làm việc ở tầng giao thức chính là thứ trói một client vào đúng một tiến trình server, và khi đã bị trói như vậy thì mọi cách nhân bản để chịu tải hay để không chết khi một máy hỏng đều trở nên đắt đỏ.
Hãy hình dung một trợ lý nội bộ đang chạy trong doanh nghiệp: nó nối tới một MCP server để tra cứu tài liệu, một MCP server khác để truy vấn hệ thống bán hàng. Với mô hình có phiên, muốn chạy hai bản sao của cùng một MCP server cho an toàn, đội vận hành phải làm một trong hai việc: cấu hình bộ cân bằng tải "dính" để mọi yêu cầu của một client luôn về đúng máy cũ, hoặc dựng một kho lưu trạng thái dùng chung ở giữa. Cả hai đều thêm thành phần, thêm chỗ hỏng, thêm việc phải giám sát. Bản spec mới xóa yêu cầu đó bằng một câu: "Any request can now land on any server instance behind a plain round-robin load balancer without needing shared storage."
Điều dễ hiểu lầm ở đây, và tài liệu chủ động đính chính, là "phi trạng thái" không có nghĩa ứng dụng của bạn không được nhớ gì. Nhóm maintainer viết: "Dropping the protocol-level session doesn't force your application to be stateless. If your server needs to carry state across calls, mint an explicit handle from a tool and have the model pass it back as an argument." Nghĩa là trạng thái vẫn tồn tại, chỉ chuyển từ chỗ ẩn trong tầng vận chuyển ra chỗ hiện: server phát ra một mã tham chiếu, mô hình cầm mã đó truyền qua lại giữa các lệnh. Lý do họ đưa ra rất thực dụng — cách này chạy tốt hơn vì bản thân mô hình nhìn thấy được cái mã đó.
Đi kèm là một thay đổi nhỏ nhưng có sức nặng với đội hạ tầng: tên phương thức và tên công cụ được đẩy lên header HTTP. Bài công bố viết: "Streamable HTTP requests now must include Mcp-Method and Mcp-Name (SEP-2243). Your gateway, rate limiter, or WAF can route and meter on those headers instead of parsing JSON bodies." Với một tổ chức đã có sẵn cổng API và tường lửa ứng dụng, điều này có nghĩa: từ nay có thể đặt quy tắc chặn hoặc giới hạn tần suất cho từng công cụ MCP cụ thể ngay tại lớp mạng, mà không phải mở gói tin JSON ra đọc. Đó là loại kiểm soát mà đội an ninh thông tin thường đòi hỏi trước khi cho một trợ lý AI đụng vào hệ thống nội bộ — chúng tôi đã mô tả kiến trúc lớp bảo vệ này trong bài hệ thống bảo mật cho AI nội bộ.
| Hạng mục | Bản trước | Bản 2026-07-28 |
|---|---|---|
| Khởi tạo kết nối | Bắt tay initialize + notifications/initialized | Bỏ hẳn; mỗi yêu cầu tự mang phiên bản và năng lực trong _meta |
| Định danh phiên | Header Mcp-Session-Id | "Remove protocol-level sessions and the Mcp-Session-Id header from the Streamable HTTP transport" |
| Dò năng lực server | Nằm trong kết quả bắt tay | Lệnh mới server/discover — server BẮT BUỘC có, client tùy chọn gọi |
| Yêu cầu server gửi ngược về client | elicitation/create, sampling/createMessage, roots/list qua luồng mở sẵn | Thay bằng Multi Round-Trip Requests: server trả resultType: "input_required", client gọi lại kèm inputResponses |
| Thông báo thay đổi | Endpoint HTTP GET + resources/subscribe | Gộp về một luồng subscriptions/listen, client phải chủ động đăng ký từng loại |
| Header bắt buộc | Không | Mcp-Method và Mcp-Name trên mọi POST Streamable HTTP |
| Bộ nhớ đệm danh sách công cụ | Không có gợi ý chuẩn | Bắt buộc trường ttlMs và cacheScope ("public" hoặc "private") trên kết quả các lệnh liệt kê |
| Nối lại luồng đứt | Có, qua Last-Event-ID và ID sự kiện SSE | Bị gỡ. "A broken response stream loses the in-flight request; clients MUST re-issue it as a new request with a new request ID" |
Bản này gãy tương thích, và gãy theo cách đoán trước được
Một client viết theo bản mới nói chuyện với một server còn ở bản cũ sẽ hỏng, và ngược lại cũng hỏng — spec không giấu điều đó mà công bố sẵn bảng liệt kê đủ năm tổ hợp cùng kết quả của từng tổ hợp.
Đây là chi tiết đáng khen về mặt kỹ thuật viết chuẩn: thay vì để mỗi đội tự đoán, trang quy tắc phiên bản và tương thích đưa ra một ma trận nêu rõ hành vi mong đợi của mọi cặp client–server. Spec gọi bên viết theo lối cũ là "legacy", bên viết theo lối mới là "modern", và bên hỗ trợ cả hai là "dual-era". Đoạn cốt lõi: "A server that wishes to support both legacy clients (which expect an initialize handshake) and modern clients (which use per-request metadata) MAY implement both behaviors."
| Client | Server | Spec nói gì | Nghĩa là |
|---|---|---|---|
| Modern | Modern | "Works. server/discover is optional; version mismatches surface as UnsupportedProtocolVersionError" | Trạng thái mục tiêu |
| Modern | Legacy | "Fails. The server may reject the request with an implementation-defined error, stay silent, or even process an era-ambiguous method under legacy semantics." | Nguy hiểm nhất: có trường hợp server im lặng hoặc xử lý sai mà không báo lỗi |
| Dual-era | Modern | "Works. … The client stays modern." | An toàn |
| Dual-era | Legacy | "Works. … the client falls back to initialize" | An toàn, đổi lại phải nuôi hai nhánh mã |
| Legacy | Modern | "Fails. … the request is missing the required headers and is rejected per server validation with 400 Bad Request" | Hỏng ngay và hỏng rõ — dễ phát hiện hơn ô số 2 |
Ô đáng lo nhất là ô thứ hai. Khi một client mới gọi vào một server cũ, spec thừa nhận server có thể "stay silent, or even process an era-ambiguous method under legacy semantics" — im lặng, hoặc tệ hơn, vẫn xử lý một phương thức mơ hồ theo ngữ nghĩa cũ. Trong một hệ thống nội bộ nơi MCP server có quyền chạm vào dữ liệu thật, một lệnh được xử lý theo ngữ nghĩa sai mà không báo lỗi là kiểu sự cố khó truy nhất. Vì vậy trình tự nâng cấp an toàn là nâng server trước, hoặc để server chạy chế độ hỗ trợ cả hai, chứ không nâng client trước.
Bản này cũng gỡ vài thứ mà nhiều đội đang dùng mà không để ý: ping, logging/setLevel và notifications/roots/list_changed đều bị xóa khỏi giao thức. Mức nhật ký giờ đặt theo từng yêu cầu qua trường io.modelcontextprotocol/logLevel trong _meta, và bản ghi thay đổi nói rõ: "servers MUST NOT emit notifications/message for requests that did not include this field". Một chi tiết nhỏ nữa dễ làm hỏng phần xử lý lỗi viết tay: mã lỗi khi không tìm thấy tài nguyên đổi từ -32002 sang -32602 cho khớp chuẩn JSON-RPC.
| Tính năng | Trạng thái | Spec khuyến nghị thay bằng |
|---|---|---|
| Roots | Deprecated (SEP-2577), còn chạy tối thiểu 12 tháng | "pass directories or files via tool parameters, resource URIs, or server configuration instead of Roots" |
| Sampling | Deprecated (SEP-2577) | "integrate directly with LLM provider APIs instead of Sampling" |
| Logging | Deprecated (SEP-2577) | "log to stderr (stdio) or use OpenTelemetry instead of Logging" |
| Đăng ký client động (DCR, RFC 7591) | Deprecated, giữ lại để tương thích ngược | Client ID Metadata Documents (CIMD) |
Ngoài ra, tầng vận chuyển HTTP+SSE cũ — vốn đã bị coi là lỗi thời từ bản 2025-03-26 — nay được xếp chính thức vào trạng thái Deprecated theo chính sách vòng đời mới, với lộ trình một năm để chuyển sang Streamable HTTP. | ||
Phần siết bảo mật: một lỗ hổng OAuth kinh điển được bịt
Bản này bắt máy chủ ủy quyền trả về định danh của chính nó trong phản hồi, và bắt client kiểm định danh đó trước khi đổi mã lấy token — đúng biện pháp mà IETF đã chuẩn hóa từ 2022 để chặn một họ tấn công có tên riêng.
Nhóm maintainer thừa nhận đây là chỗ tốn thời gian nhất của người triển khai. Thay đổi cụ thể: "Authorization servers should return the iss parameter per RFC 9207, and clients must validate it before redeeming a code (SEP-2468). This closes an authorization-server mix-up hole." Đọc RFC 9207 của IETF, ban hành tháng 3/2022, sẽ thấy vì sao đây không phải chi tiết vặt: tài liệu định nghĩa tham số iss để "explicitly include the issuer identifier of the authorization server in the authorization response", và kết luận thẳng rằng "The iss parameter serves as an effective countermeasure to 'mix-up attacks'". Tấn công dạng này lợi dụng việc client không phân biệt được mã ủy quyền vừa nhận là do máy chủ nào cấp — trong môi trường doanh nghiệp có nhiều nhà cung cấp danh tính cùng lúc, đó là kịch bản có thật.
Hai siết chặt còn lại đi cùng hướng. Một là ràng buộc thông tin đăng nhập vào đúng nơi cấp: "Client credentials are bound to the issuer that minted them. No reuse across authorization servers (SEP-2352)." Hai là khai tử dần cơ chế đăng ký client động: "Dynamic Client Registration itself is now formally deprecated in favor of CIMD. DCR continues to work for backward compatibility, but will be removed in a future version of the MCP spec." Với một tổ chức đã dựng phân quyền theo phòng ban quanh trợ lý nội bộ — mô hình chúng tôi mô tả trong bài phân quyền AI theo phòng ban — thì đây là tin tốt: giao thức đang đi từ chỗ "ai đăng ký cũng được" sang chỗ "danh tính phải khai báo trước và kiểm chứng được".
Thay đổi mà đội vận hành sẽ cảm ơn nhất lại nằm ở phần quản trị dự án chứ không phải phần kỹ thuật. Bản ghi thay đổi ghi: "Adopt a specification feature lifecycle and deprecation policy defining the Active, Deprecated, and Removed feature states, a minimum twelve-month deprecation window, and a registry of deprecated features (SEP-2596)." Trước đây, một tính năng có thể biến mất giữa hai bản mà không ai kịp chuẩn bị. Từ nay, mọi thứ vào trạng thái Deprecated đều có tối thiểu một năm để chuyển đổi, và có một sổ đăng ký để tra. Bài công bố diễn đạt gọn hơn: "so you can plan upgrades instead of reacting to them" — để bạn lên kế hoạch nâng cấp thay vì phản ứng với nó.
Cùng tuần đó: 22 lỗ hổng liên quan MCP được công bố
Trong đúng mười ngày quanh mốc phát hành, cơ sở dữ liệu lỗ hổng quốc gia của Hoa Kỳ công bố 22 lỗ hổng có liên quan tới MCP — và mẫu lỗi lặp lại nhiều nhất chính là thứ mà bản spec mới vừa xóa khỏi giao thức: định danh phiên không được ràng buộc vào chủ phiên.
Con số này tra được trực tiếp chứ không phải ước lượng. Truy vấn công khai trên API của National Vulnerability Database với từ khóa MCP, giới hạn ngày công bố từ 25/07/2026 đến 03/08/2026, trả về totalResults: 22 tại thời điểm tra ngày 03/08/2026. Cần nói ngay cho sòng phẳng: đây là lỗ hổng trong các sản phẩm triển khai MCP, không phải lỗ hổng của bản đặc tả. Và cũng vì vậy, việc spec bỏ phiên ở tầng giao thức không tự động vá cái nào trong số 22 lỗ hổng đó — sản phẩm vẫn phải tự sửa.
Điều đáng đọc là mẫu lỗi. Ba trong số đó mô tả gần như cùng một sai lầm ở ba dự án khác nhau. Bản ghi NVD của CVE-2026-67431, lỗi trong SDK Ruby chính thức của MCP, viết: transport streamable HTTP "does not bind a session ID to a session owner, allowing an attacker with a stolen session ID to send tools/call requests that execute in the victim's session" — không ràng định danh phiên vào chủ phiên, nên kẻ trộm được định danh phiên có thể gọi công cụ chạy trong phiên của nạn nhân. Với terraform-mcp-server của HashiCorp, hệ quả cụ thể hơn: người lấy được định danh phiên của người khác có thể khiến lệnh của mình "executed using that user's Terraform credentials" — chạy bằng chính thông tin đăng nhập hạ tầng của nạn nhân. Và ArcadeDB, công bố ngày 02/08, "fail to bind the authenticated principal in the MCP HTTP transport, causing all engine permission checks to silently pass as no-ops" — mọi lớp kiểm quyền của engine âm thầm trở thành vô hiệu.
Nhóm lỗi thứ hai thì cơ bản hơn nữa: endpoint MCP mở ra mà không kiểm quyền. Nặng nhất trong cả nhóm là CVE-2026-66012 với điểm CVSS tuyệt đối 10,0, trong phần mềm ghi chú SiYuan: endpoint POST /mcp chỉ qua một lớp kiểm xác thực chung, không phân biệt vai trò quản trị hay chỉ-đọc, và theo mô tả của NVD nó "exposes 31 MCP tools, including a file tool with list/read/write/delete/rename/copy actions across the entire workspace" — phơi ra 31 công cụ, trong đó có công cụ tệp với đủ quyền liệt kê, đọc, ghi, xóa, đổi tên, sao chép trên toàn bộ không gian làm việc. Cùng nhóm này còn có một lỗi khiến MCP server chính thức của GitHub sập chỉ bằng một yêu cầu thiếu trường, mà theo NVD, "the crash occurs before any authentication or token validation" — sập trước cả khâu xác thực.
| Mã CVE | Ngày | CVSS | Sản phẩm | Mẫu lỗi |
|---|---|---|---|---|
| CVE-2026-66012 | 25/07 | 10,0 Critical | SiYuan | Endpoint POST /mcp không kiểm vai trò — phơi 31 công cụ, dẫn tới chiếm quyền quản trị |
| CVE-2026-16496 | 28/07 | 8,9 High | terraform-mcp-server | Trộm định danh phiên → chạy lệnh bằng thông tin đăng nhập của nạn nhân |
| CVE-2026-47427 | 28/07 | 7,5 High | GitHub MCP Server | Sập trước khi xác thực → từ chối dịch vụ không cần đăng nhập |
| CVE-2026-67431 | 29/07 | 8,3 High | MCP Ruby SDK | Không ràng định danh phiên vào chủ phiên |
| CVE-2026-63118 | 29/07 | 6,9 Medium | MCP Ruby SDK | Không kiểm header Host/Origin → trang web độc dùng DNS rebinding chạm tới MCP server chạy nội bộ |
| CVE-2026-68578 | 02/08 | 7,5 High | ArcadeDB | Không gắn danh tính đã xác thực → mọi lớp kiểm quyền thành vô hiệu |
Đọc bảng này cạnh bản spec mới sẽ thấy một trùng khớp không ngẫu nhiên: khi phiên làm việc là thứ do từng dự án tự cài đặt, thì từng dự án lại tự mắc cùng một lỗi. Bỏ phiên khỏi giao thức không xóa được lỗi đã có, nhưng xóa được một hạng mục mà mọi người triển khai về sau đều phải tự nghĩ ra cách làm đúng. Bài học rút ra được ngay cả trước khi nâng cấp: bất kỳ MCP server nào trong tổ chức cũng nên bị đối xử như một endpoint HTTP có đặc quyền — đặt sau xác thực, không nghe trên mọi giao diện mạng, và có nhật ký ghi lại ai gọi công cụ nào.
Doanh nghiệp Việt đang chạy MCP server nội bộ nên làm gì
Việc cần làm không phải nâng cấp ngay trong tuần, mà là lập danh mục: liệt kê những MCP server đang chạy trong tổ chức, xác định mỗi cái do ai viết và bản nào, rồi mới quyết định thứ tự nâng — server trước, client sau.
Lý do của thứ tự đó nằm ở Bảng 2: tổ hợp gãy im lặng là client mới gặp server cũ, còn tổ hợp client cũ gặp server mới thì hỏng rõ ràng bằng lỗi 400 Bad Request. Giữa hai kiểu hỏng, kiểu hỏng ồn ào luôn dễ xử lý hơn. Với các MCP server do bên thứ ba cung cấp, câu hỏi phải đặt ra với nhà cung cấp rất cụ thể: có hỗ trợ 2026-07-28 chưa, có chạy chế độ dual-era không, và lộ trình gỡ HTTP+SSE cũ là bao giờ.
Mặt lợi thì rõ và đáng để lên lịch. Một MCP server phi trạng thái chạy được nhiều bản sao sau một bộ cân bằng tải thông thường nghĩa là hệ trợ lý nội bộ không còn điểm chết đơn lẻ, và có thể mở rộng bằng cách thêm máy thay vì thay máy to hơn. Đây là mảnh ghép còn thiếu trong bài toán chúng tôi mô tả ở sơ đồ hệ thống AI nội bộ và ở phần vận hành mô hình trong bài tự xây AI nội bộ: serving. Còn việc nối MCP vào các hệ thống sẵn có của doanh nghiệp thì chúng tôi đã bóc trong bài tự xây AI nội bộ: tích hợp.
Còn một lý do nữa để rà, và lý do này thuộc về pháp lý chứ không thuộc về kỹ thuật. MCP server là chỗ trợ lý AI chạm vào dữ liệu thật của tổ chức, thường bao gồm dữ liệu cá nhân của nhân viên và khách hàng. Theo Cổng thông tin Bộ Công an: "Ngày 01/01/2026, Luật Bảo vệ dữ liệu cá nhân (Luật số 91/2025/QH15) chính thức có hiệu lực thi hành. Trong đó, đã xác lập rõ các quyền dữ liệu cơ bản của công dân, bao gồm quyền được biết, quyền đồng ý, quyền truy cập, chỉnh sửa và yêu cầu xóa dữ liệu." Cùng trang cũng nêu chế tài: "Mức phạt tiền tối đa trong xử phạt vi phạm hành chính đối với hành vi mua, bán dữ liệu cá nhân là 10 lần khoản thu có được từ hành vi vi phạm." Muốn đáp ứng những quyền đó, tổ chức phải trả lời được ai đã truy cập dữ liệu gì, lúc nào, qua công cụ nào. Việc tên công cụ nay nằm ở header và có thể ghi nhận ngay tại cổng API khiến câu trả lời đó dễ dựng hơn hẳn so với việc đi bóc gói tin JSON trong nhật ký. Khung pháp lý cho phần AI thì chúng tôi đã phân tích riêng trong bài Nghị định 142/2026 về AI.
| Bước | Làm gì | Công sức (ước lượng) |
|---|---|---|
| 1. Lập danh mục | Liệt kê mọi MCP server đang chạy: tên, chủ sở hữu, tự viết hay mua, phiên bản spec đang nói | Nửa buổi cho tổ chức dưới 100 người |
| 2. Soát mã tìm dấu vết session | Tìm Mcp-Session-Id, initialize, Last-Event-ID, ping, logging/setLevel trong mã nguồn và cấu hình proxy | Một buổi kỹ thuật |
| 3. Xác định trạng thái ẩn | Chỗ nào đang dựa vào việc "cùng một phiên" thì chuyển sang mã tham chiếu do server phát ra, truyền như tham số công cụ | Phần tốn nhất; tùy số công cụ có trạng thái |
| 4. Nâng server trước, client sau | Theo Bảng 2, tổ hợp client mới gặp server cũ có thể hỏng âm thầm; tổ hợp ngược lại hỏng rõ bằng lỗi 400 | Theo lịch phát hành nội bộ |
| 5. Hỏi nhà cung cấp bên thứ ba | Có hỗ trợ 2026-07-28 chưa, có chế độ dual-era không, bao giờ gỡ HTTP+SSE | Một email, nhưng gửi sớm |
| 6. Tận dụng header mới | Đặt quy tắc chặn và giới hạn tần suất theo Mcp-Method/Mcp-Name tại cổng API, ghi nhật ký theo tên công cụ | Một buổi, làm cùng đội an ninh thông tin |
Cũng nên giữ đúng liều: đây là bản spec của một giao thức, không phải bản vá khẩn cấp, và chính sách 12 tháng tồn tại đúng để cho các tổ chức thời gian. Nhưng có một việc nên làm ngay và gần như không tốn gì: mở danh mục MCP server nội bộ ra, xem có cái nào còn chạy tầng vận chuyển HTTP+SSE cũ — thứ đã bị coi là lỗi thời từ tháng 3/2025 và nay chính thức bước vào đồng hồ đếm ngược một năm.
Bản spec MCP ngày 28/07/2026 lấy đi phiên làm việc ở tầng giao thức, và chính việc lấy đi đó mới là thứ cho phép một MCP server nội bộ chạy nhiều bản sao sau một bộ cân bằng tải thông thường — đổi lại, mọi hệ thống đang dựa vào phiên phải được rà lại trước khi nâng.
Câu hỏi thường gặp
Doanh nghiệp tôi có buộc phải nâng lên bản 2026-07-28 ngay không?
Không. Đây là bản spec mới của giao thức, không phải bản vá lỗ hổng khẩn cấp. Bản cũ vẫn chạy, và dự án vừa chốt chính sách vòng đời với cửa sổ deprecation tối thiểu 12 tháng cho mọi tính năng bị đánh dấu. Việc nên làm ngay là lập danh mục MCP server đang chạy và kiểm xem có cái nào còn dùng tầng vận chuyển HTTP+SSE cũ — thứ nay đã chính thức vào trạng thái Deprecated.
Bỏ session thì trợ lý AI có còn nhớ được ngữ cảnh cuộc hội thoại không?
Có. Hai thứ này ở hai tầng khác nhau. Phiên bị bỏ là phiên ở tầng giao thức giữa client và MCP server, không phải bộ nhớ hội thoại của trợ lý. Tài liệu MCP nói rõ: "Dropping the protocol-level session doesn't force your application to be stateless" — nếu server cần mang trạng thái qua nhiều lệnh thì phát ra một mã tham chiếu và cho mô hình truyền lại mã đó như một tham số công cụ.
Nâng client trước hay nâng server trước?
Nâng server trước. Theo ma trận tương thích của spec, một client mới gọi vào server cũ có thể thất bại theo cách khó phát hiện — spec ghi rằng server "may reject the request with an implementation-defined error, stay silent, or even process an era-ambiguous method under legacy semantics". Ngược lại, client cũ gọi vào server mới thì hỏng rõ ràng bằng lỗi 400 Bad Request vì thiếu header bắt buộc. Giữa hai kiểu hỏng, kiểu ồn ào dễ xử lý hơn nhiều.
Thay đổi nào ảnh hưởng tới đội an ninh thông tin nhiều nhất?
Hai thứ. Thứ nhất là việc bắt buộc header Mcp-Method và Mcp-Name trên mọi yêu cầu Streamable HTTP: cổng API, bộ giới hạn tần suất và tường lửa ứng dụng nay có thể định tuyến, đo đếm và chặn theo từng công cụ mà không cần mở gói JSON. Thứ hai là phần ủy quyền: máy chủ ủy quyền phải trả tham số iss theo RFC 9207 và client phải kiểm nó trước khi đổi mã lấy token, đóng lại lỗ hổng nhầm lẫn máy chủ ủy quyền.
22 lỗ hổng MCP công bố cuối tháng 7 có phải là lỗi của bản spec mới không?
Không. Đó là lỗ hổng trong các sản phẩm triển khai MCP — SDK, máy chủ công cụ, ứng dụng có gắn MCP — chứ không phải lỗi trong bản đặc tả. Điều đáng chú ý là mẫu lỗi: nhiều trường hợp rơi đúng vào khâu ràng buộc định danh phiên với chủ phiên, thứ mà mỗi dự án trước đây phải tự cài đặt. Cũng vì vậy, việc bản spec mới bỏ phiên ở tầng giao thức không tự động vá những lỗ hổng đã có: sản phẩm vẫn phải nâng lên phiên bản đã sửa.
Chúng tôi dùng MCP server của bên thứ ba, cần hỏi họ gì?
Ba câu. Một, sản phẩm đã hỗ trợ bản 2026-07-28 chưa và từ phiên bản nào. Hai, có chạy chế độ hỗ trợ đồng thời cả bản cũ lẫn bản mới không — spec gọi là "dual-era", và đây là tổ hợp an toàn nhất trong giai đoạn chuyển tiếp. Ba, lộ trình gỡ tầng vận chuyển HTTP+SSE cũ là bao giờ, vì lộ trình đó quyết định thời hạn cuối cùng cho phía bạn.
Còn những tính năng bị deprecated như Roots, Sampling, Logging thì thay bằng gì?
Bản ghi thay đổi nêu sẵn đường thay thế cho từng cái: thay Roots bằng cách truyền thư mục hoặc tệp qua tham số công cụ, URI tài nguyên hoặc cấu hình server; thay Sampling bằng cách tích hợp thẳng với API của nhà cung cấp mô hình; thay Logging bằng ghi ra stderr với tầng vận chuyển stdio, hoặc dùng OpenTelemetry. Cả ba vẫn hoạt động trong ít nhất 12 tháng nữa, nhưng hệ thống dựng mới thì không nên dùng.
Rà lại lớp MCP trong hệ AI nội bộ của doanh nghiệp bạn
Namtech giúp lập danh mục MCP server đang chạy, soát các chỗ còn phụ thuộc phiên làm việc, dựng quy tắc kiểm soát theo từng công cụ tại cổng API, và lên lộ trình nâng cấp không làm gián đoạn trợ lý nội bộ.
Đặt lịch tư vấn miễn phíLưu ý: Bài viết tổng hợp từ nguồn công khai, tra cứu ngày 03/08/2026. Các đoạn trong ngoặc kép là trích nguyên văn tiếng Anh từ tài liệu chính thức của dự án Model Context Protocol, từ RFC 9207 của IETF và từ Cổng thông tin Bộ Công an; phần dịch là của Namtech. Số liệu lỗ hổng lấy từ National Vulnerability Database (NIST), tra ngày 03/08/2026. Bảng 5 là khuyến nghị của Namtech, không phải nội dung trong tài liệu MCP. Ảnh minh họa lấy từ Pexels theo Pexels License — ảnh đầu bài và ảnh chia sẻ: panumas nikhomkhai. Thông tin tham khảo, không phải tư vấn pháp lý.
- Model Context Protocol Blog — "The 2026-07-28 Specification" (David Soria Parra, Den Delimarsky, 28/07/2026): "The highlight of this release is a stateless protocol core - MCP is transforming from a bidirectional stateful protocol into a request/response stateless protocol."; "Any request can now land on any server instance behind a plain round-robin load balancer without needing shared storage."; "Across our Tier 1 SDKs, we're seeing close to half-a-billion downloads a month, with both TypeScript and Python SDKs crossing the 1 billion total downloads threshold."
- Model Context Protocol — "Key Changes" của bản spec 2026-07-28: "Remove protocol-level sessions and the Mcp-Session-Id header from the Streamable HTTP transport."; "Add server/discover: servers MUST implement this RPC…"; "Adopt a specification feature lifecycle and deprecation policy… a minimum twelve-month deprecation window"
- Model Context Protocol — "Versioning and Compatibility": ma trận tương thích năm tổ hợp client–server, gồm cảnh báo "stay silent, or even process an era-ambiguous method under legacy semantics"
- GitHub — modelcontextprotocol, release tag 2026-07-28 (28/07/2026 16:47 UTC): "This release marks the stable release of the 2026-07-28 revision of the Model Context Protocol."
- IETF RFC 9207 — "OAuth 2.0 Authorization Server Issuer Identification" (tháng 3/2022): "The iss parameter serves as an effective countermeasure to 'mix-up attacks'."
- National Vulnerability Database (NIST) — truy vấn API từ khóa "MCP", ngày công bố 25/07–03/08/2026 (tra 03/08/2026): trả về "totalResults": 22
- NVD — CVE-2026-66012 (25/07/2026, CVSS 10,0): "This exposes 31 MCP tools, including a file tool with list/read/write/delete/rename/copy actions across the entire workspace"
- NVD — CVE-2026-67431 (29/07/2026, CVSS 8,3), MCP Ruby SDK: "does not bind a session ID to a session owner, allowing an attacker with a stolen session ID to send tools/call requests that execute in the victim's session"
- HashiCorp — HCSEC-2026-23, terraform-mcp-server (CVE-2026-16496): "a user who obtains another user's MCP session ID to have their tool calls executed using that user's Terraform credentials"
- Cổng thông tin Bộ Công an — "Ngày 01/01/2026, Luật Bảo vệ dữ liệu cá nhân (Luật số 91/2025/QH15) chính thức có hiệu lực thi hành."; "Mức phạt tiền tối đa trong xử phạt vi phạm hành chính đối với hành vi mua, bán dữ liệu cá nhân là 10 lần khoản thu có được từ hành vi vi phạm."