Cộng đồng Model Context Protocol ( MCP ) đang vật lộn với một hạn chế đáng kể ngăn cản các công cụ sử dụng các schema kiểu động và phụ thuộc. Thách thức kỹ thuật này đã khơi dậy cuộc thảo luận sôi nổi giữa các nhà phát triển về các giải pháp và cách khắc phục tiềm năng.
Vấn đề tập trung vào việc MCP không thể xử lý các tình huống mà schema đầu vào của công cụ phải được xác định tại thời điểm chạy dựa trên các tham số khác. Không giống như các giao diện chat AI tùy chỉnh có thể giải quyết schema một cách động, các công cụ MCP phải định nghĩa cấu trúc đầu vào của chúng từ trước, tạo ra vấn đề cho các ứng dụng phức tạp.
Hạn chế hiện tại của MCP:
- Không hỗ trợ phân giải schema JSON động
- Các công cụ phải định nghĩa schema đầu vào tại thời điểm khởi tạo
- Không thể xử lý các kiểu phụ thuộc khi schema phụ thuộc vào giá trị runtime
- Các giải pháp thay thế yêu cầu quy trình nhiều bước hoặc thay đổi danh sách công cụ động
![]() |
---|
Ảnh chụp màn hình này trình bày bảng thuộc tính của một mô hình 3D, minh họa cho sự phức tạp mà các công cụ MCP phải đối mặt khi định nghĩa các schema động |
Vấn đề cốt lõi với Dependent Types
Hạn chế này trở nên rõ ràng trong các trường hợp sử dụng phức tạp như công cụ phát triển game. Khi làm việc với các mô hình 3D tham chiếu đến các định dạng file và vật liệu khác nhau, mỗi tài nguyên có thể có các thuộc tính hoàn toàn khác nhau tùy thuộc vào cấu hình của nó. Một mô hình hình cầu với vật liệu mặc định có các thuộc tính có thể chỉnh sửa hoàn toàn khác so với cùng hình cầu đó nhưng được áp dụng vật liệu physically-based rendering ( PBR ).
Điều này tạo ra một tình huống bất khả thi cho các nhà thiết kế công cụ MCP . Họ không thể định nghĩa trước tất cả các kết hợp thuộc tính có thể có trong một schema duy nhất, nhưng giao thức lại không cung cấp cơ chế nào để tạo schema một cách động dựa trên tài nguyên cụ thể đang được chỉnh sửa.
Dependent types đề cập đến các hệ thống kiểu trong đó kiểu của một giá trị phụ thuộc vào một giá trị khác, cho phép các cấu trúc dữ liệu chính xác và linh hoạt hơn.
Các giải pháp được cộng đồng đề xuất
Cộng đồng nhà phát triển đã đề xuất một số cách tiếp cận để khắc phục hạn chế này. Một giải pháp liên quan đến việc sử dụng tính năng thông báo listChanged
, trong đó các công cụ có thể được thêm động vào danh sách công cụ có sẵn dựa trên các tài nguyên cụ thể. Tuy nhiên, cách tiếp cận này đối mặt với một rào cản lớn về việc áp dụng.
Vấn đề là >90% client hiện tại không triển khai điều này - bao gồm cả Anthropic
Một cách tiếp cận khác được đề xuất coi vấn đề này như một quy trình làm việc hai bước: đầu tiên chọn một tài nguyên, sau đó sử dụng một công cụ riêng biệt để lấy schema phù hợp trước khi thực hiện chỉnh sửa. Mặc dù điều này có thể hoạt động, nhưng nó dựa vào việc các AI agent kết nối chính xác các hoạt động này với nhau, có thể làm giảm độ tin cậy.
Một số thành viên cộng đồng chỉ ra các đặc tả hiện có như Arazzo , giới thiệu các biểu thức thời gian chạy để xử lý các đối số phụ thuộc thông qua các quy trình làm việc được kết hợp. Cách tiếp cận này có thể cung cấp một giải pháp có cấu trúc hơn cho vấn đề dependent type.
Các Giải Pháp Được Đề Xuất:
- Thông báo listChanged: Thêm/xóa công cụ một cách động (hỗ trợ client hạn chế)
- Quy trình hai bước: Tách biệt các thao tác tra cứu schema và chỉnh sửa
- Đặc tả Arazzo: Biểu thức runtime cho các tham số phụ thuộc
- Cải tiến giao thức: Các tính năng MCP mới để hỗ trợ kiểu phụ thuộc
![]() |
---|
Một cửa sổ chat minh họa các cuộc thảo luận trong cộng đồng nhà phát triển về các giải pháp thay thế cho các hạn chế schema động trong công cụ MCP |
Cuộc tranh luận về độ chính xác
Cuộc thảo luận đã tiết lộ một căng thẳng cơ bản giữa tính linh hoạt và độ tin cậy. Trong khi một số người cho rằng việc cải thiện độ chính xác của mô hình AI cuối cùng sẽ giải quyết các vấn đề phối hợp, những người khác nhấn mạnh sự khác biệt quan trọng giữa độ tin cậy 99% và 100% trong các hệ thống sản xuất.
Các tính năng structured output hiện tại trong các dịch vụ AI hàng đầu đã cung cấp khả năng tuân thủ schema được đảm bảo, loại bỏ các thuộc tính ảo tưởng hoặc các trường bắt buộc bị thiếu. Cộng đồng MCP muốn bảo tồn mức độ tin cậy này trong khi thêm khả năng schema động.
Cuộc tranh luận làm nổi bật những câu hỏi rộng hơn về việc liệu các giải pháp cấp giao thức có cần thiết hay không hoặc liệu vấn đề có xuất phát từ việc đào tạo không đủ các mô hình ngôn ngữ cho việc phối hợp công cụ nhiều bước.
Tình trạng triển khai của Client:
- Hơn 90% các MCP client không hỗ trợ thông báo
listChanged
- Client chính thức của Anthropic thiếu khả năng này
- Việc áp dụng hạn chế tạo ra rào cản cho các giải pháp công cụ động
Nhìn về phía trước
Khi hệ sinh thái MCP trưởng thành, nhu cầu xử lý các schema phức tạp, động có thể sẽ tăng lên. Cộng đồng đang xem xét các đề xuất nâng cao đặc tả chính thức để giải quyết những hạn chế này một cách có hệ thống thay vì dựa vào các cách khắc phục.
Kết quả của cuộc thảo luận này có thể tác động đáng kể đến cách các AI agent tương tác với các hệ thống phần mềm phức tạp, đặc biệt trong các lĩnh vực như phát triển game, công cụ CAD và các ứng dụng khác với cấu trúc dữ liệu phức tạp, phụ thuộc vào ngữ cảnh.
Tham khảo: MCP tools with dependent types