Khi một team bắt đầu xây AI agent trên Claude, sớm muộn gì cũng sẽ gặp cùng một câu hỏi: nên tích hợp bằng MCP server, hay chỉ cần để Claude gọi trực tiếp một CLI tool?
Cả hai cách đều giúp Claude có thêm năng lực mới. Cả hai cũng đều được dùng trong những hệ thống production thực tế. Nhưng chúng khác nhau ở cách tính chi phí, cách cache prompt và mức độ phức tạp khi vận hành.
Đây không phải là câu chuyện “thích dùng cái nào hơn”. Đây là bài toán về token cost, prompt cache và maintenance. Câu trả lời phụ thuộc vào việc bạn đang muốn kết nối Claude với cái gì.
MCP thực sự là gì?
MCP, viết tắt của Model Context Protocol, là một giao thức mở giúp kết nối AI model với các công cụ và nguồn dữ liệu bên ngoài thông qua một interface tiêu chuẩn.
Với Claude API, bạn cần khai báo một MCP server bằng tên và URL, sau đó cấp quyền để Claude có thể truy cập server đó thông qua một tool entry tương ứng. Tài liệu của Anthropic cũng nói rõ đây là cấu hình gồm hai phần, không phải chỉ một bước duy nhất.
Trong nền tảng Managed Agents của Anthropic, phần tách này còn rõ hơn. MCP server được gắn vào agent definition nhưng không chứa thông tin đăng nhập. OAuth token hoặc API key sẽ được lưu riêng trong một vault và chỉ được gắn vào khi chạy session.
Cách này giúp giữ secret an toàn hơn, không để lẫn vào cấu hình agent có thể tái sử dụng. Nhưng đổi lại, mỗi MCP integration vẫn có thêm phần setup, nhiều hơn so với việc chỉ cài một package rồi dùng ngay.
Dùng CLI thực chất nghĩa là gì?
Cách còn lại nghe đơn giản hơn. Claude vốn đã có Bash tool trong nhiều agent harness, bao gồm cả Claude Code. Nếu một năng lực nào đó đã có sẵn dưới dạng command line tool như gh, git hoặc aws, thì Claude có thể gọi trực tiếp tool đó.
Không cần dựng server. Không cần định nghĩa schema. Không cần nói chuyện qua một protocol riêng.
Hướng dẫn thiết kế agent của Anthropic cũng xem đây là một lựa chọn mặc định có chủ đích: hãy bắt đầu với bash để có độ linh hoạt rộng hơn. Chỉ khi một hành động cần được kiểm soát kỹ hơn, audit rõ hơn, hiển thị theo cách riêng hơn, hoặc chạy song song một cách an toàn hơn, thì mới nên nâng nó thành một dedicated tool.
Nói cách khác, MCP tool có thể được hiểu như một cách để có dedicated, typed tools từ bên thứ ba mà bạn không phải tự viết toàn bộ integration.
Phần token cost mà nhiều team dễ bỏ qua
Đây mới là phần thật sự ảnh hưởng đến chi phí.
Mỗi tool bạn khai báo, dù là custom tool, MCP toolset hay built-in agent toolset, đều được render vào request trước system prompt và trước cả nội dung cuộc trò chuyện. Thứ tự này quan trọng hơn nhiều team nghĩ.
Prompt caching trong Claude API hoạt động theo cơ chế strict prefix match. Chỉ cần một byte khác đi trong phần prefix đó, toàn bộ token cache phía sau sẽ bị invalid. Vì tool được render trước, nên chỉ cần thêm, bớt hoặc đổi thứ tự một tool, cache của toàn bộ request có thể bị mất, không chỉ riêng phần tool definition.
Đó là lý do một bộ CLI tool ổn định thường rẻ hơn khi chạy trong một session dài. Trong khi đó, một MCP setup thường xuyên đổi server theo từng task hoặc từng user có thể khiến bạn phải trả full price mỗi lần thay đổi.
Cache write thường tốn khoảng 1.25 đến 2 lần token thông thường, còn cache read chỉ tốn khoảng một phần mười. Với một agent chạy hàng trăm lượt mỗi ngày, khoảng chênh lệch này sẽ cộng dồn rất nhanh.
Khi nào MCP thật sự đáng dùng?
Điều này không có nghĩa MCP là lựa chọn sai.
MCP rất đáng dùng khi năng lực bạn cần không có CLI tương đương rõ ràng. Trường hợp phổ biến nhất là các SaaS bên thứ ba như Slack, Linear hoặc Notion. Nếu tự viết integration cho những nền tảng này mất quá nhiều thời gian, dùng một MCP server có sẵn sẽ hợp lý hơn nhiều.
MCP cũng cho phép bạn thiết lập chính sách quyền hạn tốt hơn so với một bash command thô. Ví dụ, bạn có thể đánh dấu một tool cụ thể là always_ask, nghĩa là phải có người duyệt trước khi Claude chạy hành động đó. Trong khi đó, những tool ít rủi ro hơn có thể để ở chế độ always_allow.
Đây là mặc định an toàn hơn nhiều cho các hành động có thể ghi dữ liệu, thay đổi hệ thống hoặc tiêu tiền.
Vấn đề khi kết nối quá nhiều MCP server
Một vấn đề khác xuất hiện khi team kết nối cùng lúc năm hoặc sáu MCP server, mỗi server lại có cả chục tool.
Tất cả schema của các tool đó sẽ nằm trong context ở mỗi request, dù Claude có cần dùng đến chúng hay không. Điều này vừa làm context nặng hơn, vừa làm chi phí tăng lên.
Anthropic đã xử lý vấn đề này bằng tính năng tool search. Bạn có thể đánh dấu một số tool bằng defer_loading, để schema đầy đủ của chúng không được load ngay từ đầu. Claude chỉ tải chúng khi thật sự cần tìm và dùng đến.
Tài liệu platform cũng có nhắc rằng nếu một MCP tool call trả về hơn 100,000 token, kết quả sẽ tự động được chuyển sang file thay vì đổ thẳng vào conversation. Chỉ riêng cơ chế bảo vệ này cũng cho thấy MCP integration có thể làm phình context window nhanh thế nào nếu không được kiểm soát kỹ.
Cách quyết định đơn giản hơn
Hãy ưu tiên CLI trước khi năng lực bạn cần đã có sẵn dưới dạng command line tool, và bộ tool đó có thể giữ ổn định trong suốt một session.
Hãy chọn MCP khi bạn đang tích hợp một dịch vụ bên thứ ba không có CLI phù hợp, hoặc khi một số hành động cần input rõ ràng, có schema cụ thể và cần cơ chế phê duyệt trước khi chạy.
Dù chọn cách nào, hãy để ý số lượng tool bạn đưa vào context. Nếu đã kết nối nhiều MCP server, hãy bật tool search và defer_loading trước khi context và chi phí token tăng vượt mức cần thiết cho task đó.
Những team làm tốt chuyện này không phải là team chọn MCP hay CLI theo một triết lý cố định. Họ nhìn vào điều gì thật sự thay đổi giữa các request, giữ phần thay đổi đó càng nhỏ càng tốt, rồi để chính bài toán thực tế quyết định nên dùng toolset nào.
Nếu team của bạn đang cân nhắc nên đầu tư vào AI tooling ở đâu, từ kiến trúc agent, hệ thống prompt đến thiết kế workflow, dịch vụ đào tạo và tư vấn AI của Growthtrait có thể giúp bạn phân tích chính những trade-off này khi xây dựng trên Claude. Liên hệ với Growthtrait nếu bạn muốn có một góc nhìn thứ hai cho setup hiện tại.
