Tra cứu nhanh: Lĩnh vực 2 — Thiết kế Tool & Tích hợp MCP
Thiết Kế Mô Tả Tool
Mô tả tool là cơ chế chính mà Claude dùng để chọn tool cần gọi. Chúng quan trọng hơn tên tool.
Những gì cần đưa vào mô tả tool:
- Tool làm gì (một câu)
- Định dạng và ràng buộc đầu vào mong đợi
- Nó trả về gì (hình dạng của phản hồi)
- Điều kiện ranh giới (những gì nó KHÔNG làm)
- Ví dụ truy vấn sẽ kích hoạt tool này
Trình tự tối ưu hóa: Cải thiện mô tả trước → thêm ví dụ few-shot → gộp tool. Không bao giờ bắt đầu bằng cách giảm số lượng tool — hãy bắt đầu bằng cách làm mô tả rõ ràng hơn.
Quy Tắc Thiết Kế Schema
- Tối đa 4-5 tool mỗi agent. Nhiều tool hơn làm tăng lỗi lựa chọn.
- Dùng tên tham số mang tính mô tả —
customer_emailthay vìemail,order_date_rangethay vìrange. - Chỉ đánh dấu tham số là
requiredkhi thực sự bắt buộc. Tham số tùy chọn có giá trị mặc định giúp giảm ma sát. - Dùng kiểu
enumcho các lựa chọn bị ràng buộc — chúng dẫn dắt mô hình tốt hơn chuỗi tự do. - Mở rộng mô tả trước khi gộp tool. Nếu Claude chọn sai tool, cách sửa đầu tiên là mô tả tốt hơn, không phải ít tool hơn.
Các Chế Độ tool_choice
| Chế Độ | Hành Vi | Dùng Khi |
|---|---|---|
auto | Mô hình tự quyết định có gọi tool hay không | Mặc định cho hầu hết agentic loop |
any | Mô hình phải gọi ít nhất một tool (tự chọn tool nào) | Buộc dùng tool khi bạn biết chắc cần một tool |
tool (forced) | Mô hình phải gọi một tool cụ thể được chỉ định | Đảm bảo tuân thủ schema; trích xuất structured output |
Điểm thi quan trọng: Dùng tool_choice: { type: "tool", name: "extract_data" } khi bạn cần structured output được đảm bảo. Điều này buộc Claude luôn tạo ra output khớp với schema của tool.
auto là mặc định đúng cho agentic loop — mô hình cần được tự do quyết định khi nào gọi tool và khi nào trả lời bằng văn bản.
Kiến Trúc MCP
Mô hình ba lớp: Client ↔ Host ↔ Server
| Lớp | Vai Trò | Ví Dụ |
|---|---|---|
| Client | Kết nối tới server, định tuyến lệnh gọi tool | Claude Desktop, extension IDE |
| Host | Ứng dụng quản lý vòng đời client | Chính tiến trình của ứng dụng desktop |
| Server | Phơi bày tool, resource, prompt | Bộ kết nối cơ sở dữ liệu, server file system |
Giao thức: JSON-RPC 2.0 qua stdio hoặc HTTP/SSE.
Các tệp cấu hình:
.mcp.jsonở gốc dự án — MCP server cấp dự án (chia sẻ với cả đội)~/.claude.json— MCP server cá nhân/toàn cục (không commit)
Quy tắc chính: Ưu tiên dùng MCP server cộng đồng trước. Chỉ tự xây server tùy chỉnh khi không có server cộng đồng nào đáp ứng được yêu cầu.
Xử Lý Lỗi Tool
Metadata lỗi có cấu trúc (mẫu hình được kiểm tra trong đề thi):
{ "errorCategory": "authentication" | "not_found" | "rate_limit" | "validation" | "internal", "isRetryable": true | false, "retryAfterMs": 5000, "partialResult": { ... }, "suggestion": "Check API key permissions" }
Phân biệt then chốt:
- Lỗi truy cập (lỗi xác thực, timeout mạng) → Retry hoặc leo thang. Có điều gì đó đã sai.
- Kết quả rỗng hợp lệ (tìm kiếm trả về 0 kết quả) → Chấp nhận. Việc thiếu dữ liệu CHÍNH LÀ câu trả lời.
Không bao giờ coi một kết quả rỗng hợp lệ là lỗi. Không bao giờ âm thầm nuốt trọn một lỗi truy cập.
Lựa Chọn Tool Trong Claude Code
| Tool | Mục Đích | Dùng Khi |
|---|---|---|
| Grep | Tìm kiếm nội dung tệp theo pattern | Tìm pattern code, chuỗi xuất hiện |
| Glob | Tìm tệp theo pattern tên/đường dẫn | Tìm tệp theo phần mở rộng hoặc quy ước đặt tên |
| Read | Đọc một tệp cụ thể | Bạn đã biết chính xác đường dẫn tệp |
| Edit | Sửa nội dung tệp | Thực hiện thay đổi có mục tiêu trên tệp hiện có |
| Bash | Chạy lệnh shell | Build, test, thao tác git, bất cứ gì không thuộc các mục trên |
Nguyên tắc lựa chọn: Dùng tool cụ thể nhất. Grep để tìm nội dung, Glob để khám phá tệp, Read cho tệp đã biết. Tránh dùng Bash cho các nhiệm vụ mà tool chuyên biệt xử lý tốt hơn.
Quy Tắc Quyết Định Cho Kỳ Thi
| Nếu câu hỏi nói... | Đáp án khả năng cao là... |
|---|---|
| "Claude liên tục chọn sai tool" | Cải thiện mô tả tool trước |
| "structured output được đảm bảo" | tool_choice forced với tên tool cụ thể |
| "mô hình nên tự quyết định chọn tool nào" | tool_choice: auto |
| "phải gọi một tool nhưng được tự chọn" | tool_choice: any |
| "tìm kiếm không trả về kết quả nào" | Kết quả rỗng hợp lệ — chấp nhận nó |
| "API trả về 401/timeout" | Lỗi truy cập — retry hoặc leo thang |
| "quá nhiều tool, lỗi lựa chọn" | Giới hạn 4-5 tool mỗi agent, cải thiện mô tả |
| "cần một MCP server tùy chỉnh" | Kiểm tra server cộng đồng trước |
| "cấu hình MCP dùng chung toàn dự án" | .mcp.json ở gốc dự án |
| "cấu hình MCP cá nhân" | ~/.claude.json |
Các Bẫy Thi Thường Gặp
| Bẫy | Đáp Án Đúng |
|---|---|
| "Giảm số tool để sửa lỗi chọn sai" | Sai — bước đầu tiên phải là cải thiện mô tả |
| "tool_choice: any đảm bảo một tool cụ thể" | Sai — any buộc gọi một tool nào đó, không phải một tool cụ thể |
| "MCP server kết nối trực tiếp với nhau" | Sai — mọi giao tiếp đều đi qua client/host |
| "Kết quả tìm kiếm rỗng nghĩa là tool đã lỗi" | Sai — việc thiếu dữ liệu là một kết quả hợp lệ |
| "Trả về chuỗi lỗi chung chung từ tool" | Sai — hãy trả về metadata có cấu trúc (nhóm lỗi, có thể retry, gợi ý) |
| "Xây MCP server tùy chỉnh cho các tích hợp phổ biến" | Sai — hãy kiểm tra server cộng đồng trước |
| "Tên tool là tín hiệu lựa chọn chính" | Sai — mô tả tool mới là tín hiệu chính |