MiddleAI Agent

MCP là gì, và nó khác tool calling ở điểm nào?

Người phỏng vấn muốn biết bạn phân biệt được cơ chế mô hình yêu cầu chạy công cụ với cách đóng gói và chia sẻ công cụ giữa các ứng dụng.

Tool calling là khả năng của mô hình: bạn mô tả công cụ (tên, mô tả, schema đầu vào) trong yêu cầu gửi cho mô hình, và nó trả về một khối cho biết muốn gọi công cụ nào với đầu vào gì. Chính ứng dụng của bạn mới chạy công cụ rồi gửi kết quả lại. Mô hình không tự chạy gì cả.

MCP (Model Context Protocol) là một chuẩn mở để ứng dụng AI kết nối với công cụ và dữ liệu bên ngoài. Công cụ được viết một lần trong một MCP server, và mọi ứng dụng có MCP client đều liệt kê và gọi được nó. Hai thứ không loại trừ nhau: ứng dụng lấy danh sách công cụ từ MCP server, đổi sang định dạng mà API của mô hình nhận (tool calling), rồi khi mô hình yêu cầu thì chuyển lời gọi sang server. Nói gọn: tool calling là cách mô hình đòi chạy công cụ, còn MCP là cách công cụ được đóng gói để nhiều ứng dụng cùng dùng.

Khi nào đáng dùng MCP: khi một bộ công cụ phục vụ nhiều hơn một ứng dụng, hoặc khi bạn muốn dùng server có sẵn của người khác. Nếu chỉ có một ứng dụng và công cụ ít đổi, một hàm thường trong cùng code đơn giản hơn, vì MCP thêm một tiến trình và một lớp giao thức.

Về an toàn, đặc tả của MCP khuyến nghị luôn có con người có thể từ chối lời gọi công cụ, và coi các gợi ý như readOnlyHint là không đáng tin trừ khi server đáng tin. Server vẫn phải tự kiểm tra đầu vào và quyền, vì đầu vào là do mô hình viết ra.

Điểm cộng: nhắc rằng với stdio, stdout dành cho giao thức nên log phải ra stderr, và phân biệt lỗi giao thức với lỗi khi chạy công cụ (trả về kết quả kèm isError).