📖 Nội dung bài học
Đường viền ký tự
Không có
Màu đường viền
Tóm tắt
MCP (Model Context Protocol) dùng các thông điệp JSON để xử lý giao tiếp giữa client và server. Hiểu rõ các loại thông điệp này rất quan trọng khi làm việc với MCP, đặc biệt khi dùng các phương thức truyền tải khác nhau như streamable HTTP transport.
Định dạng thông điệp
Mọi giao tiếp MCP đều thông qua các thông điệp JSON. Mỗi loại thông điệp có một mục đích cụ thể - cho dù là gọi một tool, liệt kê các resource có sẵn, hay gửi thông báo về các sự kiện hệ thống.

Đây là một ví dụ điển hình: khi Claude cần gọi một tool do một server MCP cung cấp, client sẽ gửi một thông điệp "Call Tool Request". Server xử lý yêu cầu này, chạy tool, và phản hồi bằng một thông điệp "Call Tool Result" chứa kết quả.

Đặc tả MCP
Danh sách đầy đủ các loại thông điệp được định nghĩa trong kho lưu trữ đặc tả MCP chính thức trên GitHub. Đặc tả này tách biệt với các kho lưu trữ SDK khác nhau (như SDK Python hoặc TypeScript) và là nguồn thông tin chính xác về cách MCP nên hoạt động.
Các loại thông điệp được viết bằng TypeScript để thuận tiện - không phải vì chúng được thực thi dưới dạng mã TypeScript, mà vì TypeScript cung cấp một cách rõ ràng để mô tả cấu trúc và kiểu dữ liệu.
Các loại thông điệp
Các thông điệp MCP được chia thành hai loại chính:

Thông điệp Request-Result
Các thông điệp này luôn đi theo cặp. Bạn gửi một yêu cầu và mong đợi nhận lại một kết quả:
- Call Tool Request → Call Tool Result
- List Prompts Request → List Prompts Result
- Read Resource Request → Read Resource Result
- Initialize Request → Initialize Result
Thông điệp Notification
Đây là các thông điệp một chiều, thông báo về các sự kiện nhưng không yêu cầu phản hồi:
- Progress Notification - Cập nhật về các hoạt động đang chạy dài
- Logging Message Notification - Thông điệp log hệ thống
- Tool List Changed Notification - Khi các
toolcó sẵn thay đổi - Resource Updated Notification - Khi các
resourceđược sửa đổi
Thông điệp Client vs Server
Đặc tả MCP tổ chức các thông điệp theo người gửi:
Thông điệp Client bao gồm các yêu cầu mà client gửi đến server (ví dụ: gọi tool) và các thông báo mà client có thể gửi.
Thông điệp Server bao gồm các yêu cầu mà server gửi đến client và các thông báo mà server phát ra.
Tại sao điều này quan trọng
Việc hiểu rằng server có thể gửi thông điệp đến client đặc biệt quan trọng khi làm việc với các phương thức truyền tải khác nhau. Một số phương thức truyền tải, như streamable HTTP transport, có những hạn chế về loại thông điệp nào có thể truyền theo hướng nào.
Điểm mấu chốt là MCP được thiết kế như một giao thức hai chiều - cả client và server đều có thể bắt đầu giao tiếp. Điều này trở nên quan trọng khi bạn cần chọn phương thức truyền tải phù hợp cho trường hợp sử dụng cụ thể của bạn.
🔁 Bài học liên quan
- Bài tiếp: The STDIO transport
- Bài trước: Survey
- Cùng section: The STDIO transport · The StreamableHTTP transport · StreamableHTTP in depth
- Thuộc lộ trình: Path D
- Docs tham khảo: Glossary · Skills atlas · By use-case
📚 Nguồn & ghi nhận
- Bài học gốc Anthropic Academy: https://anthropic.skilljar.com/model-context-protocol-advanced-topics/296290
- © 2025 Anthropic. Chỉ dùng cho mục đích giáo dục, fair-use.
- Crawl: — · Chuẩn hoá: 2026-05-01