Bỏ qua để đến nội dung

Triển khai một client

Bài viết được dịch tự động từ bài viết gốc, chưa được kiểm tra lại bởi con người. Chỉ những bài viết có dấu tick xanh cạnh tiêu đề là đã được kiểm tra.

MCP client gồm hai thành phần: một class MCP Client tuỳ chỉnh, và một Client Session (lấy từ SDK). Client Session cần được quản lý tài nguyên cẩn thận, nên thường được bọc trong một class tuỳ chỉnh để tự động dọn dẹp. Đa số project thực tế chỉ triển khai hoặc client hoặc server, hiếm khi làm cả hai cùng lúc.

Kiến trúc project cho thấy quan hệ giữa MCP client và server Kiến trúc project: quan hệ giữa MCP client và MCP server.

Client cho phép hai tương tác quan trọng: lấy danh sách tool khả dụng để gửi cho Claude, và thực thi tool khi Claude yêu cầu. Nó đóng vai trò cầu nối giữa logic ứng dụng của bạn và chức năng của MCP server.

Sơ đồ class MCP Client và các thành phần Client Session Class MCP Client tuỳ chỉnh bọc quanh Client Session của SDK.

Hàm list_tools():

async def list_tools(self) -> list[types.Tool]:
result = await self.session().list_tools()
return result.tools

Hàm call_tool():

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ạy bộ test harness bằng uv run mcp_client.py để xác nhận kết nối hoạt động. Toàn bộ ứng dụng được test qua uv run main.py. Luồng đầy đủ: client lấy danh sách tool → gửi cho Claude → Claude yêu cầu thực thi → client gọi tool → kết quả được trả về.

Sơ đồ tuần tự làm nổi bật các điểm client được dùng trong luồng ứng dụng Sơ đồ tuần tự: các điểm client tham gia vào luồng ứng dụng.