~/ / Bài viết về AI / Đặc tả MCP 2026-07-28: những gì đã thay đổi và cần kiểm tra gì trong các tệp của bạn
Đặc tả MCP 2026-07-28: những gì đã thay đổi và cần kiểm tra gì trong các tệp của bạn
Phiên bản đặc tả Model Context Protocol (MCP) 2026-07-28 loại bỏ phiên (session) ở cấp giao thức, đánh dấu lỗi thời transport HTTP+SSE cũ cùng một số tính năng khác, và nới lỏng các quy tắc cho schema của tool. Bài viết này tóm tắt changelog chính thức và hướng dẫn cách kiểm tra hai tệp do chính bạn viết: cấu hình MCP và schema của tool.
Đăng: · Đã đối chiếu với đặc tả chính thức vào ngày 2026-10-24. Bài viết này chỉ tóm tắt và không thay thế đặc tả.
Những thay đổi lớn nhất
- Phiên ở cấp giao thức và header Mcp-Session-Id bị loại khỏi transport Streamable HTTP. Máy chủ cần giữ trạng thái giữa các lần gọi sẽ dùng các handle tường minh do chính nó tạo ra và truyền đi như những đối số thông thường của tool.
- MCP trở thành giao thức không lưu trạng thái: bước bắt tay initialize bị loại bỏ. Mỗi yêu cầu đều mang phiên bản giao thức và các khả năng của client trong _meta, và nếu phiên bản không khớp thì trả về UnsupportedProtocolVersionError.
- Máy chủ bắt buộc phải triển khai lệnh gọi mới server/discover, dùng để công bố các phiên bản giao thức, khả năng và danh tính mà máy chủ hỗ trợ.
- Endpoint HTTP GET và resources/subscribe được thay bằng subscriptions/listen, một luồng phản hồi tồn tại lâu dành cho các thông báo thay đổi mà client đã đăng ký nhận.
- Các yêu cầu do máy chủ khởi tạo như roots/list, sampling/createMessage và elicitation/create được thay bằng mẫu Multi Round-Trip Requests: máy chủ trả về một kết quả yêu cầu thêm dữ liệu đầu vào, và client gửi lại yêu cầu ban đầu kèm các câu trả lời.
- Tác vụ thử nghiệm (tasks) được chuyển khỏi giao thức lõi sang một phần mở rộng chính thức.
- Luồng SSE có thể tiếp tục (Last-Event-ID) bị loại bỏ. Khi luồng phản hồi bị đứt, yêu cầu đang xử lý sẽ mất, và client phải gửi lại dưới dạng một yêu cầu mới.
Những gì hiện đã lỗi thời (deprecated)
| Tính năng | Lỗi thời (deprecated) từ | Sớm nhất có thể bị gỡ bỏ | Cách chuyển đổi đề xuất |
|---|---|---|---|
| Roots | 2026-07-28 | Phiên bản đầu tiên được phát hành vào hoặc sau 2027-07-28 | Truyền thư mục hoặc tệp qua tham số của tool, URI của resource hoặc cấu hình máy chủ |
| Sampling | 2026-07-28 | Phiên bản đầu tiên được phát hành vào hoặc sau 2027-07-28 | Tích hợp trực tiếp với API của nhà cung cấp LLM |
| Logging | 2026-07-28 | Phiên bản đầu tiên được phát hành vào hoặc sau 2027-07-28 | Ghi log ra stderr với stdio, hoặc dùng OpenTelemetry |
| Dynamic Client Registration | 2026-07-28 | Phiên bản đầu tiên được phát hành vào hoặc sau 2027-07-28 | Client ID Metadata Documents |
| Transport HTTP+SSE | 2025-03-26 | Ba tháng sau khi SEP-2596 đạt trạng thái Final | Streamable HTTP |
| Các giá trị thisServer và allServers của includeContext | 2025-11-25 | Theo sau Sampling | Bỏ trường này hoặc dùng none |
Một tính năng đã lỗi thời (deprecated) vẫn là một phần của đặc tả. Mốc gỡ bỏ sớm nhất cho biết khi nào tính năng đủ điều kiện để bị gỡ bỏ, còn việc gỡ bỏ thực tế là quyết định được đưa ra trong quá trình chuẩn bị phát hành. Chính sách vòng đời tính năng mới đặt thời gian lỗi thời tối thiểu là mười hai tháng.
Kiểm tra cấu hình MCP của bạn
Nếu cấu hình của bạn vẫn dùng transport HTTP+SSE thì nó nằm trong danh sách lỗi thời. Tài liệu của Claude Code cũng gọi type sse của mình là đã lỗi thời và khuyên dùng máy chủ HTTP khi có thể. Đặc tả mô tả phương án thay thế là Streamable HTTP: máy chủ cung cấp một endpoint duy nhất nhận POST, và client gửi mỗi thông điệp JSON-RPC bằng một HTTP POST riêng.
- Mỗi POST phải có header Accept liệt kê cả application/json và text/event-stream.
- Mỗi POST phải có header MCP-Protocol-Version với giá trị khớp với phiên bản giao thức trong phần thân yêu cầu.
- Các yêu cầu mang header Mcp-Method, và thêm header Mcp-Name đối với tools/call, resources/read và prompts/get.
- Máy chủ trả lời mỗi yêu cầu bằng một đối tượng JSON duy nhất hoặc bằng một luồng SSE gắn với riêng yêu cầu đó.
Client của bạn hỗ trợ phiên bản giao thức nào thì phải xem trong tài liệu của client. Công cụ kiểm tra bên dưới đọc tệp .mcp.json hoặc claude_desktop_config.json và báo cáo những mục như máy chủ từ xa không có type, hoặc máy chủ vẫn dùng sse.
Dùng thử: MCP Config Checker
Các quy tắc được đối chiếu với tài liệu vào ngày 2026-10-23.
Tài liệu: Claude Code / Model Context Protocol / VS Code
Không được kiểm tra: một lệnh có tồn tại hay không, một gói có cài được hay không, một máy chủ từ xa có phản hồi hay không, và các thiết lập mà ứng dụng khác đọc theo cách khác.
Mọi thứ chạy trong trình duyệt của bạn. Cấu hình không được tải lên.
Schema của tool có thể dùng toàn bộ JSON Schema 2020-12
- inputSchema và outputSchema giờ đây cho phép mọi từ khóa của JSON Schema 2020-12, và structuredContent có thể là bất kỳ giá trị JSON nào. Đặc tả bổ sung các yêu cầu về cách phân giải $ref và giới hạn về tài nguyên mà các từ khóa tổ hợp có thể sử dụng.
- Máy chủ có thể đánh dấu một tham số của tool bằng x-mcp-header để giá trị của nó được sao chép vào header HTTP Mcp-Param-{name}. Tham số được đánh dấu phải là chuỗi, số nguyên hoặc boolean, không phải số thực.
- Thuộc tính được đánh dấu phải truy cập được từ gốc của schema chỉ qua các khóa properties. Chuỗi đường dẫn không được đi qua items, oneOf, anyOf, allOf, not, if/then/else hay $ref.
- Client dùng Streamable HTTP phải từ chối định nghĩa tool có chú thích x-mcp-header vi phạm các quy tắc này, nghĩa là tool đó bị loại khỏi kết quả của tools/list.
Để thử một schema của tool, hãy dán nó cùng một bộ đối số mẫu vào trình kiểm tra bên dưới. Công cụ kiểm tra các từ khóa thông dụng của Draft 2020-12 và cho bạn biết những từ khóa nào nó không kiểm tra.
Dùng thử: JSON Schema Validator
Theo JSON Schema Draft 2020-12 đối với các từ khóa được hỗ trợ. Chỉ đọc $ref bên trong cùng một schema.
Mọi thứ chạy trong trình duyệt của bạn. Schema và dữ liệu không được tải lên.
Các điểm bảo mật dành cho máy chủ
- Máy chủ phải xác thực header Origin trên mọi kết nối đến để ngăn các cuộc tấn công DNS rebinding. Nếu header có mặt nhưng không hợp lệ, máy chủ phải trả lời bằng HTTP 403 Forbidden.
- Máy chủ chạy cục bộ chỉ nên bind vào localhost (127.0.0.1), không bind vào mọi giao diện mạng (0.0.0.0).
- Máy chủ nên triển khai xác thực phù hợp cho mọi kết nối.
- Máy chủ xử lý phần thân yêu cầu phải từ chối yêu cầu có header không khớp với phần thân, bằng HTTP 400 và lỗi JSON-RPC HeaderMismatch (mã -32020).
- Máy chủ ủy quyền nên đưa tham số iss vào các phản hồi ủy quyền (RFC 9207), và khi có iss, client phải xác thực nó trước khi đổi mã ủy quyền.
- Client phải lưu thông tin xác thực client đã lưu theo issuer đã cấp chúng, và không được dùng lại với một máy chủ ủy quyền khác.