# Model Context Protocol (MCP)

> VI: https://5ac.vn/wiki/mcp/ · EN: https://5ac.vn/en/wiki/mcp/ · lang: vi · spec_as_of 2026-10-18 (spec 2026-07-28) · cluster C3

Chuẩn mở giúp ứng dụng AI kết nối dữ liệu, công cụ và quy trình bên ngoài qua một giao diện JSON-RPC thống nhất giữa client và server.

---
## Định nghĩa

Model Context Protocol (MCP) là chuẩn mở giúp ứng dụng AI kết nối với dữ liệu, công cụ và quy trình bên ngoài qua một giao diện JSON-RPC thống nhất. Host tạo đúng một client cho mỗi server; server khai báo resources, prompts và tools, client gửi yêu cầu và nhận kết quả có cấu trúc.

## Cơ chế

Bản 2026-07-28 mô tả giao thức gốc theo hướng stateless: mỗi request là lời gọi tự chứa, kèm mẫu "multi round-trip requests" (MRTR) cho luồng cần bổ sung đầu vào giữa chừng, cùng khuôn subscribe và notify. Spec chia giao thức thành các lớp:

| Lớp | Nội dung | Nghĩa vụ theo spec |
| --- | --- | --- |
| Base protocol | kiểu message JSON-RPC 2.0: request, result, error | bắt buộc mọi implementation |
| Versioning & compatibility | khai phiên bản theo request, tương thích ngược bản cũ | bắt buộc |
| Message patterns | request/response, MRTR, subscribe & notify | bắt buộc |
| Authorization | khung authentication/authorization cho transport HTTP | tùy nhu cầu |
| Server features | resources, prompts, tools | tùy nhu cầu |
| Client features | elicitation, sampling, root directory lists | tùy nhu cầu |
| Utilities | logging, argument completion | tùy nhu cầu |

Mọi request tự khai phiên bản qua `_meta`, và qua header `MCP-Protocol-Version` với Streamable HTTP. Client muốn chốt phiên bản ngay từ đầu gọi RPC `server/discover` (mọi server phải hỗ trợ, còn việc gọi là tùy chọn) để nhận về phiên bản, capabilities và danh tính trong một request duy nhất; phiên bản không được hỗ trợ sẽ nhận về `UnsupportedProtocolVersionError`.

Spec cũng định nghĩa các extension opt-in, chỉ dùng khi cả hai phía đồng thuận lúc khởi tạo: Tasks (thao tác chạy dài, polling, handle bền vững), Skills over MCP (chỉ dẫn có cấu trúc cho quy trình agent), MCP Apps (UI tương tác trong hội thoại).

Luồng: Host (ứng dụng AI) → MCP client → MCP server → Dữ liệu, prompt, công cụ

## Neo chuẩn (spec anchor)

Trang versioning ghi định dạng phiên bản là ngày `YYYY-MM-DD`, chỉ tăng khi có thay đổi ngược tương thích, revision gắn nhãn Draft/Current/Final, và chốt: "The current protocol version is 2026-07-28". Mục lục tài liệu chính thức liệt kê đúng năm bản phát hành: 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25, 2026-07-28. Hai thời kỳ cần phân biệt khi đọc tài liệu thứ ba: bản tới 2025-11-25 dùng handshake tập trung, bản 2026-07-28 chuyển sang stateless theo từng request — nhiều tutorial trên mạng vẫn mô tả khuôn cũ.

Nguồn đã truy xuất để dựng entry này:

- <https://modelcontextprotocol.io/specification/versioning> — câu chốt phiên bản hiện hành — truy cập 18/10/2026
- <https://modelcontextprotocol.io/specification/2026-07-28> — tổng quan spec, extension, nguyên tắc an toàn — truy cập 18/10/2026
- <https://modelcontextprotocol.io/specification/2026-07-28/basic> — các lớp nền, message patterns, phân cấp lỗi — truy cập 18/10/2026
- <https://modelcontextprotocol.io/docs/2026-07-28/learn/architecture.md> — mô hình host/client/server một-một, transport STDIO và Streamable HTTP — truy cập 18/10/2026
- <https://modelcontextprotocol.io/> — trang "What is MCP" — truy cập 18/10/2026
- <https://modelcontextprotocol.io/llms.txt> — mục lục docs, nguồn của danh sách năm revision — truy cập 18/10/2026

## Neo học thuật

Neo học thuật ghim vào công việc đo lường, không phải mô tả giao thức. *Evaluation and Benchmarking of LLM Agents: A Survey* (arXiv:2507.21504, Mohammadi và cộng sự, nộp 29/07/2025) xếp lĩnh vực đánh giá agent theo hai trục: mục tiêu (hành vi, năng lực, độ tin cậy, an toàn) và quy trình (chế độ tương tác, dataset, cách tính chỉ số, công cụ). Khung tham chiếu hữu ích vì MCP không định nghĩa cách cho điểm agent.

## Câu hỏi thường gặp

**MCP khác function calling ở đâu?** Phụ lục so sánh trong spec A2A diễn đạt gọn: MCP chuẩn hóa cách mô tả công cụ, API, nguồn dữ liệu ở bên ngoài mô hình (input vào, output có cấu trúc ra) nên một tool server tái dùng được cho nhiều host thay vì kẹt trong khuôn của riêng một vendor.

**Điểm an toàn nào spec bắt lưu ý khi gọi công cụ?** Ba nguyên tắc: user đồng ý tường minh và giữ quyền kiểm soát từng thao tác; host không truyền dữ liệu resource đi nơi khác khi user chưa consent; mô tả hành vi của công cụ (annotations) là untrusted trừ khi đến từ server đáng tin.

**Vì sao phải ghim ngày phiên bản khi đọc tutorial?** Hành vi đổi theo thời kỳ: handshake tập trung (tới 2025-11-25) khác mô hình stateless khai phiên bản từng request (2026-07-28); trang versioning phải dành mục riêng cho tương thích ngược. Code mẫu chép từ tutorial cũ dễ sai ở chỗ này.

**Host, client, server khác nhau gì?** Host tạo đúng một client cho mỗi server, mỗi client giữ kết nối dedicated với server của nó (trang architecture); server là chương trình cung cấp context — local chạy qua STDIO, remote qua Streamable HTTP, cùng vai trò khác chỗ đặt.

**Tài liệu MCP có bản máy đọc không?** Có — và là ví dụ sống của chuẩn llms.txt: site công bố `llms.txt` làm mục lục toàn docs, mọi trang có twin `.md` cùng URL.

## Liên quan

- [Hệ thống điều hành multi-agent là gì](/blog/he-thong-dieu-hanh-multi-agent-la-gi/)
- [Control plane cho AI agents](/blog/control-plane-ai-agents-quan-tri-doanh-nghiep/)
- [Agent2Agent (A2A) là gì](/wiki/a2a/)
- [llms.txt là gì](/wiki/llms-txt/)
