Anthropic Engineering

Thực thi mã với MCP: Xây dựng các tác nhân hiệu quả hơn

🕐 20/07/2026 12:08 📰 Anthropic Engineering ✅ Đã dịch sang tiếng Việt

Giao thức Ngữ cảnh Mô hình (MCP) là một tiêu chuẩn mở để kết nối các tác nhân AI với các hệ thống bên ngoài. Việc kết nối các tác nhân với công cụ và dữ liệu theo cách truyền thống đòi hỏi phải có tích hợp tùy chỉnh cho từng cặp kết nối, tạo ra sự phân mảnh và trùng lặp công sức, khiến việc mở rộng quy mô các hệ thống kết nối thực sự trở nên khó khăn. MCP cung cấp một giao thức phổ quát—các nhà phát triển chỉ cần triển khai MCP một lần trong tác nhân của họ và nó sẽ mở khóa toàn bộ hệ sinh thái tích hợp.

Kể từ khi ra mắt MCP vào tháng 11 năm 2024, tốc độ áp dụng rất nhanh chóng: cộng đồng đã xây dựng hàng nghìn máy chủ MCP, các SDK có sẵn cho tất cả các ngôn ngữ lập trình chính, và ngành công nghiệp đã chấp nhận MCP như tiêu chuẩn thực tế để kết nối các tác nhân với công cụ và dữ liệu.

Ngày nay, các nhà phát triển thường xuyên xây dựng các tác nhân có quyền truy cập vào hàng trăm hoặc hàng nghìn công cụ trên hàng chục máy chủ MCP. Tuy nhiên, khi số lượng công cụ được kết nối tăng lên, việc tải tất cả định nghĩa công cụ từ đầu và chuyển các kết quả trung gian qua cửa sổ ngữ cảnh sẽ làm chậm các tác nhân và tăng chi phí.

Trong bài blog này, chúng ta sẽ khám phá cách thực thi mã có thể cho phép các tác nhân tương tác với máy chủ MCP hiệu quả hơn, xử lý nhiều công cụ hơn trong khi sử dụng ít token hơn.

Khi việc sử dụng MCP mở rộng quy mô, có hai mẫu phổ biến có thể làm tăng chi phí và độ trễ của tác nhân:

Hầu hết các máy khách MCP tải tất cả định nghĩa công cụ từ đầu trực tiếp vào ngữ cảnh, hiển thị chúng cho mô hình bằng cú pháp gọi công cụ trực tiếp. Các định nghĩa công cụ này có thể trông như thế này:

Mô tả công cụ chiếm nhiều không gian cửa sổ ngữ cảnh hơn, làm tăng thời gian phản hồi và chi phí. Trong trường hợp các tác nhân được kết nối với hàng nghìn công cụ, chúng sẽ cần xử lý hàng trăm nghìn token trước khi đọc một yêu cầu.

Hầu hết các máy khách MCP cho phép mô hình gọi trực tiếp các công cụ MCP. Ví dụ, bạn có thể yêu cầu tác nhân của mình: "Tải bản ghi cuộc họp của tôi từ Google Drive và đính kèm nó vào lead Salesforce."

Mô hình sẽ thực hiện các lệnh gọi như:

Mọi kết quả trung gian phải đi qua mô hình. Trong ví dụ này, toàn bộ bản ghi cuộc gọi chảy qua hai lần. Đối với một cuộc họp bán hàng kéo dài 2 giờ, điều đó có thể có nghĩa là xử lý thêm 50.000 token. Ngay cả các tài liệu lớn hơn cũng có thể vượt quá giới hạn cửa sổ ngữ cảnh, làm gián đoạn quy trình làm việc.

Với các tài liệu lớn hoặc cấu trúc dữ liệu phức tạp, các mô hình có thể dễ mắc lỗi hơn khi sao chép dữ liệu giữa các lệnh gọi công cụ.

Khi môi trường thực thi mã trở nên phổ biến hơn đối với các tác nhân, một giải pháp là trình bày các máy chủ MCP dưới dạng API mã thay vì các lệnh gọi công cụ trực tiếp. Tác nhân sau đó có thể viết mã để tương tác với các máy chủ MCP. Cách tiếp cận này giải quyết cả hai thách thức: các tác nhân chỉ có thể tải các công cụ chúng cần và xử lý dữ liệu trong môi trường thực thi trước khi chuyển kết quả trở lại mô hình.

Có một số cách để thực hiện điều này. Một cách tiếp cận là tạo một cây tệp của tất cả các công cụ có sẵn từ các máy chủ MCP được kết nối. Đây là một triển khai sử dụng TypeScript:

Sau đó, mỗi công cụ tương ứng với một tệp, đại loại như:

Ví dụ Google Drive đến Salesforce của chúng ta ở trên trở thành mã:

Tác nhân khám phá các công cụ bằng cách khám phá

Duyệt hệ thống tệp: liệt kê thư mục `./servers/` để tìm các máy chủ có sẵn (như `google-drive` và `salesforce`), sau đó đọc các tệp công cụ cụ thể mà nó cần (như `getDocument.ts` và `updateRecord.ts`) để hiểu giao diện của từng công cụ. Điều này cho phép agent chỉ tải các định nghĩa cần thiết cho tác vụ hiện tại. Nhờ đó, lượng token sử dụng giảm từ 150.000 token xuống còn 2.000 token—tiết kiệm 98,7% thời gian và chi phí.

Cloudflare đã công bố những phát hiện tương tự, gọi việc thực thi mã với MCP là "Chế độ Mã" (Code Mode). Ý tưởng cốt lõi vẫn giống nhau: LLM rất giỏi trong việc viết mã và các nhà phát triển nên tận dụng điểm mạnh này để xây dựng các agent tương tác với máy chủ MCP hiệu quả hơn.

Thực thi mã với MCP cho phép agent sử dụng ngữ cảnh hiệu quả hơn bằng cách tải công cụ theo yêu cầu, lọc dữ liệu trước khi đưa vào mô hình và thực thi logic phức tạp trong một bước duy nhất. Cách tiếp cận này cũng mang lại lợi ích về bảo mật và quản lý trạng thái.

Các mô hình rất giỏi trong việc điều hướng hệ thống tệp. Trình bày các công cụ dưới dạng mã trên hệ thống tệp cho phép các mô hình đọc định nghĩa công cụ theo yêu cầu, thay vì đọc tất cả cùng một lúc.

Ngoài ra, có thể thêm một công cụ `search_tools` vào máy chủ để tìm các định nghĩa liên quan. Ví dụ, khi làm việc với máy chủ Salesforce giả định ở trên, agent tìm kiếm "salesforce" và chỉ tải những công cụ cần thiết cho tác vụ hiện tại. Việc bao gồm một tham số mức độ chi tiết trong công cụ `search_tools` cho phép agent chọn mức độ chi tiết cần thiết (chẳng hạn như chỉ tên, tên và mô tả, hoặc định nghĩa đầy đủ với lược đồ) cũng giúp agent tiết kiệm ngữ cảnh và tìm công cụ hiệu quả.

Khi làm việc với các tập dữ liệu lớn, agent có thể lọc và biến đổi kết quả trong mã trước khi trả về. Hãy xem xét việc tìm nạp một bảng tính có 10.000 hàng:

Agent chỉ thấy năm hàng thay vì 10.000. Các mẫu tương tự cũng hoạt động cho các phép tổng hợp, kết nối nhiều nguồn dữ liệu hoặc trích xuất các trường cụ thể—tất cả mà không làm phình to cửa sổ ngữ cảnh.

Vòng lặp, câu lệnh điều kiện và xử lý lỗi có thể được thực hiện bằng các mẫu mã quen thuộc thay vì xâu chuỗi các lệnh gọi công cụ riêng lẻ. Ví dụ, nếu bạn cần thông báo triển khai trong Slack, agent có thể viết:

Cách tiếp cận này hiệu quả hơn so với việc luân phiên giữa các lệnh gọi công cụ MCP và lệnh ngủ qua vòng lặp agent.

Ngoài ra, khả năng viết một cây điều kiện được thực thi cũng giúp tiết kiệm độ trễ "thời gian đến token đầu tiên": thay vì phải chờ mô hình đánh giá một câu lệnh if, agent có thể để môi trường thực thi mã làm điều này.

Khi agent sử dụng thực thi mã với MCP, các kết quả trung gian sẽ được giữ trong môi trường thực thi theo mặc định. Bằng cách này, agent chỉ thấy những gì bạn ghi log hoặc trả về một cách rõ ràng, nghĩa là dữ liệu bạn không muốn chia sẻ với mô hình có thể chảy qua quy trình làm việc của bạn mà không bao giờ đi vào ngữ cảnh của mô hình.

Đối với các khối lượng công việc nhạy cảm hơn, harness agent có thể tự động token hóa dữ liệu nhạy cảm. Ví dụ, hãy tưởng tượng bạn cần nhập

từ bảng tính vào Salesforce. Agent viết:

MCP client chặn dữ liệu và token hóa PII trước khi dữ liệu đến mô hình:

Sau đó, khi dữ liệu được chia sẻ trong một lệnh gọi công cụ MCP khác, nó được giải token hóa thông qua tra cứu trong MCP client. Các địa chỉ email, số điện thoại và tên thật chảy từ Google Sheets sang Salesforce, nhưng không bao giờ đi qua mô hình. Điều này ngăn agent vô tình ghi lại hoặc xử lý dữ liệu nhạy cảm. Bạn cũng có thể sử dụng điều này để xác định các quy tắc bảo mật mang tính quyết định, chọn nơi dữ liệu có thể chảy đến và đi.

Thực thi mã với quyền truy cập hệ thống tệp cho phép agent duy trì trạng thái qua các thao tác. Agent có thể ghi kết quả trung gian vào tệp, cho phép chúng tiếp tục công việc và theo dõi tiến độ:

Agent cũng có thể lưu trữ mã của chính mình dưới dạng các hàm có thể tái sử dụng. Khi một agent phát triển mã hoạt động cho một tác vụ, nó có thể lưu lại cách triển khai đó để sử dụng trong tương lai:

Điều này liên quan chặt chẽ đến khái niệm **Skills**, các thư mục chứa hướng dẫn, tập lệnh và tài nguyên có thể tái sử dụng để mô hình cải thiện hiệu suất trên các tác vụ chuyên biệt. Thêm tệp SKILL.md vào các hàm đã lưu này tạo ra một kỹ năng có cấu trúc mà mô hình có thể tham chiếu và sử dụng. Theo thời gian, điều này cho phép agent của bạn xây dựng một bộ công cụ với các khả năng cấp cao hơn, phát triển khung sườn cần thiết để hoạt động hiệu quả nhất.

Lưu ý rằng thực thi mã mang đến sự phức tạp riêng. Chạy mã do agent tạo ra yêu cầu một môi trường thực thi an toàn với **sandboxing**, giới hạn tài nguyên và giám sát phù hợp. Các yêu cầu về cơ sở hạ tầng này thêm chi phí vận hành và cân nhắc bảo mật mà các lệnh gọi công cụ trực tiếp tránh được. Lợi ích của thực thi mã—giảm chi phí token, độ trễ thấp hơn và cải thiện khả năng kết hợp công cụ—cần được cân nhắc với các chi phí triển khai này.

MCP cung cấp một giao thức nền tảng để agent kết nối với nhiều công cụ và hệ thống. Tuy nhiên, khi quá nhiều máy chủ được kết nối, định nghĩa công cụ và kết quả có thể tiêu tốn quá nhiều token, làm giảm hiệu suất của agent

📎 Nguồn gốc: Anthropic Engineering Xem bài gốc →