📖 Nội dung bài học
Tóm tắt
Roots là một cách để cấp cho các máy chủ MCP quyền truy cập vào các tệp và thư mục cụ thể trên máy tính của bạn. Hãy coi chúng như một hệ thống cấp phép, nói rằng "Này, máy chủ MCP, bạn có thể truy cập các tệp này" - nhưng chúng làm được nhiều việc hơn là chỉ cấp quyền.
Vấn đề mà Roots giải quyết
Nếu không có roots, bạn sẽ gặp một vấn đề phổ biến. Hãy tưởng tượng bạn có một máy chủ MCP với một công cụ chuyển đổi video, nhận đường dẫn tệp và chuyển đổi định dạng MP4 sang MOV.

Khi người dùng yêu cầu Claude "chuyển đổi biking.mp4 sang định dạng mov", Claude sẽ gọi tool chỉ với tên tệp. Nhưng đây là vấn đề - Claude không có cách nào để tìm kiếm trong toàn bộ hệ thống tệp của bạn để tìm vị trí thực tế của tệp đó.

Hệ thống tệp của bạn có thể phức tạp với các tệp nằm rải rác trong các thư mục khác nhau. Người dùng biết tệp biking.mp4 nằm trong thư mục Phim của họ, nhưng Claude không có ngữ cảnh đó.
Bạn có thể giải quyết vấn đề này bằng cách yêu cầu người dùng luôn cung cấp đường dẫn đầy đủ, nhưng điều đó không thân thiện với người dùng lắm. Không ai muốn gõ đầy đủ đường dẫn tệp mỗi lần.
Roots trong thực tế
Đây là cách luồng công việc thay đổi với roots:
- Người dùng yêu cầu chuyển đổi một tệp video
- Claude gọi
list_rootsđể xem các thư mục nào nó có thể truy cập - Claude gọi
read_dirtrên các thư mục có thể truy cập để tìm tệp - Khi tìm thấy, Claude gọi công cụ chuyển đổi với đường dẫn đầy đủ
Điều này xảy ra tự động - người dùng vẫn có thể chỉ cần nói "chuyển đổi biking.mp4" mà không cần cung cấp đường dẫn đầy đủ.
Bảo mật và Ranh giới
Roots cũng cung cấp bảo mật bằng cách giới hạn quyền truy cập. Nếu bạn chỉ cấp quyền truy cập vào thư mục Desktop của mình, máy chủ MCP không thể truy cập các tệp ở các vị trí khác như Documents hoặc Downloads.
Khi Claude cố gắng truy cập một tệp bên ngoài roots đã được phê duyệt, nó sẽ gặp lỗi và có thể thông báo cho người dùng rằng tệp không thể truy cập được từ cấu hình máy chủ hiện tại.
Chi tiết triển khai
MCP SDK không tự động thực thi các hạn chế về root - bạn cần tự mình triển khai điều này. Một mẫu điển hình là tạo một hàm trợ giúp như is_path_allowed() để:
- Nhận một đường dẫn tệp được yêu cầu
- Lấy danh sách các roots đã được phê duyệt
- Kiểm tra xem đường dẫn được yêu cầu có nằm trong một trong các roots đó không
- Trả về true/false cho quyền truy cập
Sau đó, bạn gọi hàm này trong bất kỳ tool nào truy cập các tệp hoặc thư mục trước khi thực hiện thao tác tệp thực tế.
Lợi ích chính
- Thân thiện với người dùng - Người dùng không cần cung cấp đường dẫn tệp đầy đủ
- Tìm kiếm tập trung - Claude chỉ tìm kiếm trong các thư mục đã được phê duyệt, giúp việc tìm kiếm tệp nhanh hơn
- Bảo mật - Ngăn chặn việc truy cập vô tình vào các tệp nhạy cảm bên ngoài các khu vực được phê duyệt
- Linh hoạt - Bạn có thể cung cấp roots thông qua tools hoặc chèn chúng trực tiếp vào prompts
Roots làm cho các máy chủ MCP vừa mạnh mẽ hơn vừa an toàn hơn bằng cách cung cấp cho Claude ngữ cảnh cần thiết để tìm các tệp trong khi vẫn duy trì các ranh giới rõ ràng xung quanh những gì nó có thể truy cập.
🔁 Bài học liên quan
- Bài tiếp: Roots walkthrough
- Bài trước: Notifications walkthrough
- Thuộc lộ trình: Path D
- Docs tham khảo: Glossary · Skills atlas · By use-case
📚 Nguồn & ghi nhận
- Bài học gốc Anthropic Academy: https://anthropic.skilljar.com/model-context-protocol-advanced-topics/296289
- © 2025 Anthropic. Chỉ dùng cho mục đích giáo dục, fair-use.
- Crawl: — · Chuẩn hoá: 2026-05-01