
Một máy chủ MCP có thể chiếm hàng nghìn token trước khi tác tử AI làm được bất kỳ việc hữu ích nào. Theo bài viết gốc của The New Stack về Pi và Codemode, Chrome DevTools MCP dùng khoảng 18.000 token chỉ để mô tả công cụ, tương đương gần 9% cửa sổ ngữ cảnh 200.000 token.
Pi giảm chi phí này bằng cách không đưa toàn bộ định nghĩa công cụ vào ngữ cảnh của mô hình. Codemode chỉ tìm công cụ khi cần, gọi chúng bằng mã JavaScript rồi trả về phần kết quả có ích. Cách tiếp cận này giúp Pi hỗ trợ MCP mà không buộc tác tử phải mang theo mọi khai báo công cụ trong từng lượt xử lý.
Chi phí ngữ cảnh là lý do Pi không tích hợp MCP vào tác tử AI viết mã của mình trong phần lớn năm qua, dù giao thức này đã phổ biến trong các công cụ dành cho nhà phát triển.
Chi phí ngữ cảnh của MCP lớn đến đâu?
MCP có thể dùng hàng nghìn token trước khi tác tử bắt đầu nhiệm vụ. Theo số liệu Mario Zechner công bố và The New Stack dẫn lại, Playwright MCP cần khoảng 13.700 token để mô tả 21 công cụ. Phần khai báo này chiếm 6,8% cửa sổ ngữ cảnh 200.000 token, và mỗi máy chủ kết nối thêm tiếp tục làm tăng chi phí.
Vấn đề không dừng ở phần khai báo. Trong phân tích của Mario Zechner về việc không cần MCP, ông cho rằng các máy chủ MCP khó kết hợp trực tiếp với nhau. Kết quả từ một máy chủ phải đi qua ngữ cảnh của tác tử trước khi được lưu xuống ổ đĩa hoặc kết hợp với kết quả khác.

“Kết quả do một máy chủ MCP trả về phải đi qua ngữ cảnh của tác tử để được lưu xuống ổ đĩa hoặc kết hợp với các kết quả khác.”
Mario Zechner
Giải pháp ban đầu của Zechner là Bash cùng một số tập lệnh nhỏ. Mô hình đã biết cách sử dụng các công cụ này nên không cần học thêm một giao diện lớn. Theo số liệu ông công bố, bộ công cụ trình duyệt chạy qua giao diện dòng lệnh chỉ cần một tệp hướng dẫn 225 token. Kết quả có thể được chuyển sang lệnh khác, lọc hoặc lưu xuống ổ đĩa mà không phải đi qua mô hình trước.
Trước khi MCP trở thành tính năng gốc của Pi 1.0, các phần mở rộng như pi-mcp-adapter đã cung cấp cách kết nối giao thức này với Pi.
Pi dùng MCP khác với cách thông thường như thế nào?
Pi đặt Codemode giữa mô hình và các công cụ thay vì cung cấp toàn bộ giao diện MCP ngay từ đầu. Mô hình chỉ nhận mô tả ngắn về mỗi máy chủ, sau đó tìm và gọi công cụ phù hợp khi nhiệm vụ yêu cầu. Cấu trúc này giữ khả năng truy cập MCP nhưng giảm lượng khai báo thường trực trong ngữ cảnh.
Earendil, công ty mua lại Pi vào đầu năm nay, cho rằng MCP đã đủ trưởng thành để được xem xét lại. Quyết định đưa MCP vào lõi của Pi cũng liên quan đến kiến trúc mà nhóm phát triển muốn xây dựng.
“Lý do chúng tôi đưa MCP vào lõi không chỉ nằm ở việc MCP đã thay đổi, mà còn vì chúng tôi nhận thấy những thay đổi cần thiết cho việc đó có ích trong nhiều trường hợp.”
Earendil
Pi đã áp dụng ý tưởng tương tự với Jev. Cách tổ chức này gần với nguyên lý tạo sản phẩm bằng tác tử, trong đó hệ thống chỉ cung cấp khả năng cần thiết cho từng nhiệm vụ.
Nhờ lớp trung gian đó, Pi có thể hỗ trợ MCP mà không phải đưa mọi công cụ vào ngữ cảnh, vốn là cách triển khai Zechner phản đối.
Codemode tìm và gọi công cụ: nội dung hoạt động
Codemode chạy mã JavaScript trong môi trường QuickJS cô lập. Tập lệnh có thể gọi công cụ và mô hình của Pi, thực hiện nhiều thao tác đồng thời rồi xử lý kết quả trước khi gửi dữ liệu trở lại mô hình. Môi trường này không có giao diện Node, quyền truy cập hệ thống tệp, kết nối mạng hoặc bộ hẹn giờ.
Theo mặc định, Pi không đặt các công cụ của máy chủ MCP vào ngữ cảnh của mô hình. Câu lệnh hệ thống chỉ nhận một dòng mô tả cho mỗi máy chủ. Khi cần thực hiện nhiệm vụ, tác tử dùng Codemode để tìm và gọi đúng công cụ.
Nhà phát triển có thể điều chỉnh cách hoạt động này bằng thiết lập toolExposure. Trong cùng một máy chủ, Pi cho phép đưa một số công cụ ra trực tiếp, giữ một số công cụ phía sau Codemode và chặn hoàn toàn phần còn lại.
Với một cấu hình GitHub, nhà phát triển có thể đưa search_code ra trực tiếp, giữ các công cụ get_* phía sau Codemode và chặn nhóm delete_*. Mô hình nhờ đó tiếp cận nhanh các thao tác thường dùng nhưng không tự động nhận những quyền có mức rủi ro cao hơn.
Giới hạn khai báo theo từng công cụ hoạt động thế nào?
Codemode dành ngân sách mặc định 3.000 token cho phần khai báo công cụ, theo The New Stack. Công cụ vượt giới hạn không bị loại bỏ. Tác tử vẫn có thể tìm thấy chúng khi cần, nhưng định nghĩa của chúng không chiếm chỗ thường trực trong ngữ cảnh của mô hình.
“Codemode có ngân sách mặc định 3.000 token cho phần khai báo công cụ. Phần vượt giới hạn vẫn có thể được tìm thấy khi cần.”
The New Stack
Pi 1.0 cũng giảm kích thước của chính Codemode. Theo ghi chú phát hành Pi 1.0, một yêu cầu GPT-5.6 dùng bộ công cụ mặc định và Codemode từng cần khoảng 5.300 token cho phần câu lệnh. Sau khi nhóm phát triển rút gọn mô tả Codemode, chuyển tài liệu giao diện mô hình ra khỏi câu lệnh và ngừng lặp lại khai báo của các công cụ mà tập lệnh đã truy cập được, con số này giảm còn khoảng 3.300 token.

Cũng theo ghi chú phát hành Pi 1.0, các công cụ MCP dùng chế độ hiển thị mặc định không được tính vào ngân sách 3.000 token. Cách làm này giữ cho công cụ sẵn sàng mà không buộc mô hình mang toàn bộ định nghĩa trong mọi lượt xử lý.
Codemode chưa xử lý hạn chế nào của MCP?
Codemode chủ yếu giảm chi phí ngữ cảnh và thay đổi cách mô hình tiếp cận công cụ. Pi 1.0 chưa giải quyết toàn bộ những điểm Earendil từng phê bình ở MCP, trong đó có khả năng kết hợp kết quả giữa các máy chủ.
Khác biệt chính nằm ở thời điểm cung cấp thông tin. Thay vì dành 18.000 token cho một máy chủ trước khi tác tử bắt đầu làm việc, Pi chỉ đưa vào câu lệnh một mô tả ngắn và để Codemode tìm phần cần thiết sau đó. Công cụ vẫn tồn tại, nhưng định nghĩa đầy đủ của chúng không còn mặc nhiên chiếm cửa sổ ngữ cảnh.
Nếu đang xây dựng tác tử dùng nhiều máy chủ MCP, bạn có thể theo dõi Sine để tiếp tục cập nhật các cách giảm chi phí ngữ cảnh mà không phải loại bỏ công cụ.


