MCP: продвинутые темы

Аутентификация, ресурсы, prompts, sampling и архитектура production-серверов.

18 уроков, первые 3 бесплатно. Полный доступ: 1490 руб.

Уроки курса

  1. Let's get started!
  2. Sampling
  3. Sampling walkthrough
  4. Log and progress notifications
  5. Notifications walkthrough
  6. Roots
  7. Roots walkthrough
  8. Survey
  9. JSON message types
  10. The STDIO transport
  11. The StreamableHTTP transport
  12. StreamableHTTP in depth
  13. State and the StreamableHTTP transport
  14. Assessment on MCP concepts
  15. Wrapping up
  16. What you'll learn
  17. What you'll learn
  18. Course Quiz

Введение в корни (Roots) в Model Context Protocol (MCP)

Добро пожаловать в раздел продвинутых тем MCP! Сегодня мы погрузимся в концепцию "корней" (Roots) – фундаментального механизма, который позволяет серверам MCP безопасно и эффективно взаимодействовать с файловой системой вашей локальной машины. Понимание Roots критически важно для создания мощных, но при этом контролируемых инструментов, которые LLM вроде Claude может использовать для выполнения задач, требующих доступа к файлам.

Что такое "Корни" (Roots)?

Представьте Roots как систему разрешений, которая говорит серверу MCP: "Эй, ты можешь получить доступ к этим конкретным файлам и папкам". Но их функциональность выходит далеко за рамки простого предоставления доступа. Roots также предоставляют необходимый контекст, позволяя Claude находить файлы, даже если пользователь не указывает полный путь к ним. Это мост между абстрактным миром LLM и конкретными данными на вашем компьютере.

Проблема, которую решают "Корни"

Без Roots вы столкнетесь с распространенной проблемой. Допустим, у вас есть сервер MCP с инструментом для конвертации видео, который принимает путь к файлу и преобразует его из формата MP4 в MOV. Когда пользователь просит Claude "конвертировать biking.mp4 в формат mov", Claude вызовет инструмент, передав ему только имя файла: biking.mp4. Но вот в чем загвоздка: Claude не имеет возможности просматривать всю вашу файловую систему, чтобы найти, где на самом деле находится этот файл.

Ваша файловая система может быть сложной, с файлами, разбросанными по разным директориям. Пользователь знает, что файл biking.mp4 находится в его папке "Фильмы", но у Claude нет этого контекста. Вы могли бы решить эту проблему, требуя от пользователей всегда указывать полные пути, но это крайне неудобно. Никто не хочет каждый раз вводить полный путь к файлу.

Как "Корни" меняют рабочий процесс

С использованием Roots рабочий процесс становится намного более интуитивным и эффективным:

  1. Пользователь просит конвертировать видеофайл, например, "конвертировать biking.mp4".
  2. Claude, через сервер MCP, обращается к списку "корней", чтобы узнать, к каким директориям он имеет доступ.
  3. Затем Claude ищет файл biking.mp4 только в этих доступных директориях.
  4. Как только файл найден, Claude вызывает инструмент конвертации, передавая ему уже полный путь к файлу.

Все это происходит автоматически – пользователи по-прежнему могут просто сказать "конвертировать biking.mp4", не указывая полные пути. Это значительно улучшает пользовательский опыт и делает взаимодействие с Claude более естественным.

Безопасность и границы доступа

Помимо удобства, Roots также обеспечивают критически важный аспект безопасности, ограничивая доступ. Если вы предоставите доступ только к вашей папке "Рабочий стол", сервер MCP не сможет получить доступ к файлам в других местах, таких как "Документы" или "Загрузки".

Когда Claude пытается получить доступ к файлу за пределами одобренных Roots, он получает ошибку и может проинформировать пользователя, что файл недоступен из текущей конфигурации сервера. Это предотвращает случайный или несанкционированный доступ к конфиденциальным данным, обеспечивая четкие границы того, к чему Claude может обращаться.

Детали реализации: Как это работает на практике

Важно отметить, что MCP SDK не обеспечивает автоматическое применение ограничений Root – вам необходимо реализовать это самостоятельно. Типичный шаблон заключается в создании вспомогательной функции, например, is_path_allowed(). Эта функция:

Затем вы вызываете эту функцию в любом инструменте, который обращается к файлам или директориям, прежде чем выполнять фактическую файловую операцию. Такой подход дает вам полный контроль над тем, как и когда Claude взаимодействует с вашей локальной файловой системой.

Ключевые преимущества использования "Корней"

Использование Roots приносит несколько значительных преимуществ:

Заключение

Roots делают серверы MCP одновременно более мощными и более безопасными, предоставляя Claude необходимый контекст для поиска файлов, сохраняя при этом четкие границы того, к чему он может получить доступ. Это ключевой элемент для создания надежных и безопасных приложений, расширяющих возможности Claude в реальном мире.