📖 Nội dung bài học
Mở/Đóng/ hoặc ? Kích cỡ chữ
Tóm tắt
Bây giờ khi MCP server của chúng ta đã hoạt động, đã đến lúc xây dựng phía client. Client là thành phần cho phép mã ứng dụng giao tiếp với MCP server và truy cập các chức năng của nó.
Hiểu về kiến trúc Client
Trong hầu hết các dự án thực tế, bạn sẽ triển khai MCP client hoặc MCP server - chứ không phải cả hai. Chúng ta đang xây dựng cả hai trong dự án này để bạn có thể thấy cách chúng phối hợp với nhau.

MCP client bao gồm hai thành phần chính:
- MCP Client - Một class tùy chỉnh chúng ta tạo ra để việc sử dụng session dễ dàng hơn.
- Client Session - Kết nối thực tế đến server (thuộc MCP Python SDK).

Client session yêu cầu quản lý tài nguyên (resource management) cẩn thận - chúng ta cần đóng các kết nối đúng cách khi hoàn tất. Đó là lý do tại sao chúng ta bọc nó trong class riêng để tự động xử lý việc dọn dẹp.
Cách Client khớp vào ứng dụng
Bạn còn nhớ sơ đồ luồng ứng dụng không? Client là thứ cho phép mã của chúng ta tương tác với MCP server tại hai điểm chính:

Mã CLI của bạn sử dụng client để:
- Lấy danh sách các tool khả dụng để gửi cho Claude.
- Thực thi tool khi Claude yêu cầu.
Triển khai các hàm Client cốt lõi
Chúng ta cần triển khai hai hàm thiết yếu: list_tools() và call_tool().
Hàm List Tools
Hàm này lấy tất cả các tool khả dụng từ MCP server:
async def list_tools(self) -> list[types.Tool]:
result = await self.session().list_tools()
return result.tools
Nó rất đơn giản - chúng ta truy cập session (kết nối đến server), gọi phương thức list_tools() có sẵn và trả về các tool từ kết quả.
Hàm Call Tool
Hàm này thực thi một tool cụ thể trên server:
async def call_tool(
self, tool_name: str, tool_input: dict
) -> types.CallToolResult | None:
return await self.session().call_tool(tool_name, tool_input)
Chúng ta truyền tên tool và các tham số đầu vào (do Claude cung cấp) cho server và trả về kết quả.
Kiểm thử Client
File client bao gồm một bộ khung kiểm thử (test harness) đơn giản ở dưới cùng. Bạn có thể chạy nó trực tiếp để xác nhận mọi thứ hoạt động:
uv run mcp_client.py
Lệnh này sẽ kết nối với MCP server của bạn và in ra các tool khả dụng. Bạn sẽ thấy đầu ra hiển thị các định nghĩa tool, bao gồm mô tả và schema đầu vào.
Kết hợp tất cả lại
Sau khi các hàm client được triển khai, bạn có thể kiểm tra toàn bộ luồng bằng cách chạy ứng dụng chính:
uv run main.py
Thử hỏi: "Nội dung của tài liệu report.pdf là gì?"
Đây là những gì diễn ra ở hậu trường:
- Ứng dụng của bạn sử dụng client để lấy các tool khả dụng.
- Các tool này được gửi đến Claude cùng với câu hỏi của bạn.
- Claude quyết định sử dụng tool
read_doc_contents. - Ứng dụng của bạn sử dụng client để thực thi tool đó.
- Kết quả được trả về cho Claude, sau đó Claude sẽ phản hồi cho bạn.
Client đóng vai trò là cầu nối giữa logic ứng dụng và chức năng của MCP server, giúp việc tích hợp các công cụ mạnh mẽ vào quy trình làm việc với AI trở nên dễ dàng.
🔁 Bài học liên quan
- Bài tiếp: Defining resources
- Bài trước: Course satisfaction survey
- Cùng section: Introducing MCP · MCP clients · Project setup
- 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/introduction-to-model-context-protocol/296696
- © 2025 Anthropic. Chỉ dùng cho mục đích giáo dục, fair-use.
- Crawl: 2026-04-23 · Chuẩn hoá: 2026-05-01