📖 Nội dung bài học
Summary
MCP client là cầu nối giao tiếp giữa server của bạn và các server MCP. Hãy xem nó như là điểm truy cập của bạn đến tất cả các công cụ mà một server MCP cung cấp. Khi bạn cần dùng chức năng bên ngoài, client sẽ xử lý tất cả việc trao đổi thông điệp và các chi tiết giao thức cho bạn.
Giao tiếp độc lập với phương thức truyền tải
Một trong những điểm mạnh chính của MCP là tính độc lập với phương thức truyền tải (transport agnostic) - một cách nói hoa mỹ để chỉ client và server có thể giao tiếp với nhau bằng nhiều phương thức khác nhau. Cấu hình phổ biến nhất là chạy cả MCP client và server trên cùng một máy, nơi chúng giao tiếp thông qua input/output chuẩn.

Nhưng bạn không bị giới hạn ở cách tiếp cận đó. MCP clients và servers cũng có thể kết nối qua:
- HTTP
- WebSockets
- Nhiều giao thức mạng khác

Các loại thông điệp
Sau khi kết nối, client và server trao đổi các loại thông điệp cụ thể được định nghĩa trong đặc tả MCP. Các loại chính mà bạn sẽ làm việc cùng là:

ListToolsRequest/ListToolsResult: Client hỏi server "bạn cung cấp những công cụ nào?" và nhận lại danh sách đầy đủ các chức năng có sẵn.

CallToolRequest/CallToolResult: Client bảo server "chạy công cụ cụ thể này với các đối số này" và nhận kết quả thực thi.

Ví dụ thực tế
Hãy xem xét một ví dụ hoàn chỉnh để xem tất cả các thành phần này hoạt động cùng nhau như thế nào. Giả sử người dùng hỏi "Tôi có những kho lưu trữ nào?" - đây là toàn bộ chuỗi giao tiếp:

Quá trình bắt đầu khi người dùng gửi câu hỏi của họ đến server của bạn. Server của bạn nhận ra rằng nó cần cung cấp cho Claude các công cụ có sẵn trước khi thực hiện yêu cầu AI.

Server của bạn yêu cầu MCP client danh sách công cụ, điều này kích hoạt ListToolsRequest đến MCP server. Server trả lời bằng ListToolsResult chứa tất cả các công cụ có sẵn.

Giờ đây, server của bạn có mọi thứ cần thiết để thực hiện yêu cầu Claude ban đầu: câu hỏi của người dùng cộng với các công cụ có sẵn. Claude phân tích các công cụ và quyết định cần gọi một công cụ để trả lời câu hỏi một cách chính xác.

Claude trả lời bằng một yêu cầu tool use. Server của bạn nhận ra điều này và yêu cầu MCP client thực thi công cụ với các đối số được chỉ định của Claude.

MCP client gửi CallToolRequest đến MCP server, sau đó thực hiện cuộc gọi API thực tế đến GitHub để lấy các kho lưu trữ của người dùng.

GitHub trả về dữ liệu kho lưu trữ, mà MCP server gói gọn trong CallToolResult và gửi lại qua chuỗi. Server của bạn nhận được dữ liệu này và giờ có thể thực hiện một yêu cầu tiếp theo đến Claude.

Bước cuối cùng gửi kết quả công cụ đến Claude như một phần của thông điệp người dùng. Claude giờ có tất cả thông tin cần thiết để đưa ra phản hồi đầy đủ về các kho lưu trữ của người dùng.

Đúng vậy, luồng này bao gồm nhiều bước, nhưng việc hiểu nó sẽ chuẩn bị cho bạn để triển khai MCP clients và servers của riêng mình. Mỗi thành phần có một vai trò cụ thể và các loại thông điệp được tiêu chuẩn hóa đảm bảo mọi thứ hoạt động trơn tru bất kể cơ chế truyền tải cơ bản.
🔁 Bài học liên quan
- Bài tiếp: Project setup
- Bài trước: Introducing MCP
- Cùng section: Making a request · Multi-turn conversations · Chat exercise
- Thuộc lộ trình: Path C
- 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/claude-with-google-vertex/289204
- © 2025 Anthropic. Chỉ dùng cho mục đích giáo dục, fair-use.
- Crawl: — · Chuẩn hoá: 2026-05-01