Skip to main content
Glama
technophile77

idrive-mcp-server

idrive-mcp-server

Сервер MCP (Model Context Protocol), который предоставляет веб-консоль резервного копирования/восстановления iDrive в виде инструментов для MCP-совместимого ИИ-ассистента (например, Claude Desktop или Claude Code). Он взаимодействует с недокументированным внутренним веб-API iDrive — теми же конечными точками, которые вызывает сама консоль idrive.com, — используя файл cookie сеанса, скопированный из браузера, в котором выполнен вход, поскольку iDrive не предоставляет публичный API или поток OAuth для этой консоли. См. docs/api-map.md для справки по реверс-инжинирингу конечных точек, на которых основан этот сервер.

Получение IDRIVE_COOKIE

  1. Войдите в idrive.com в своем браузере.

  2. Откройте DevTools -> вкладку Network.

  3. Нажмите на любой XHR-запрос, отправленный на www.idrive.com.

  4. Скопируйте полное значение заголовка Cookie этого запроса.

  5. Поместите его в файл .env (скопируйте .env.example) как IDRIVE_COOKIE=<значение>.

Этот файл cookie содержит токен сеанса (SES_TOKEN, JWT), срок действия которого истекает примерно через 24 часа — когда это произойдет, вызовы инструментов будут завершаться с понятной ошибкой «обновите сеанс», и вам нужно будет повторить описанные выше шаги.

Related MCP server: Google Drive MCP Server

Настройка в Claude Code / Claude Desktop

Добавьте запись в конфигурацию MCP (.mcp.json для Claude Code или claude_desktop_config.json для Claude Desktop):

{
  "mcpServers": {
    "idrive": {
      "command": "npx",
      "args": ["tsx", "src/index.ts"],
      "cwd": "/absolute/path/to/idrive-mcp-server",
      "env": {
        "IDRIVE_COOKIE": "<your cookie value>"
      }
    }
  }
}

Или, после выполнения npm run build, укажите command/args на собранный вывод вместо этого:

{
  "mcpServers": {
    "idrive": {
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "/absolute/path/to/idrive-mcp-server",
      "env": {
        "IDRIVE_COOKIE": "<your cookie value>"
      }
    }
  }
}

Доступные инструменты

  • list_devices — без ввода. Перечисляет все устройства, резервные копии которых созданы в рамках аутентифицированной учетной записи iDrive (идентификатор устройства, ОС, псевдоним, IP-адрес и расположение корзины резервного копирования) через конечную точку evs/listDevices, размещенную на EVS. Не требует дополнительной настройки, кроме IDRIVE_COOKIE.

  • list_filesdeviceId (обязательно), path (по умолчанию "/"), osType (по умолчанию "win"). Просматривает дерево резервных копий файлов устройства через конечную точку iDrive getRestoreData.

  • browse_folderdeviceId (обязательно), path (обязательно, формат EVS: "/C", "/C/Users/..."). Просматривает резервную копию папки устройства через более богатую конечную точку evs/browseFolder, размещенную на EVS (добавляет поля корзины/контрольной суммы/живого образа помимо list_files). Сначала используйте list_files, чтобы обнаружить доступные буквы дисков/корневые каталоги устройства, поскольку evs/browseFolder никогда не наблюдался при обработке корневого пути без указания диска.

  • get_thumbnaildeviceId (обязательно), path (обязательно, тот же формат EVS, что и browse_folder), timestamp (обязательно — значение lmd_web файла из предыдущего вызова list_files/browse_folder). Получает изображение предварительного просмотра для резервной копии файла через конечную точку evs/getThumbnail, размещенную на EVS, возвращается как содержимое изображения MCP.

  • download_filedeviceId (обязательно), path (обязательно, тот же формат EVS, что и browse_folder). Загружает фактическое содержимое резервной копии файла через конечную точку evs/downloadFile, размещенную на EVS, возвращается как содержимое ресурса MCP в кодировке base64. Content-Type iDrive для этой конечной точки не заслуживает доверия для определения реального типа файла — определяйте его по имени/расширению файла.

  • get_file_propertiesdeviceId (обязательно), path (обязательно, тот же формат EVS, что и browse_folder). Получает метаданные размера/даты последнего изменения для одного файла или папки резервной копии через конечную точку evs/getProperties, размещенную на EVS.

  • get_file_versionsdeviceId (обязательно), path (обязательно, тот же формат EVS, что и browse_folder). Перечисляет предыдущие версии резервной копии файла через конечную точку evs/getVersions, размещенную на EVS. Пока подтверждена только форма ответа «нет истории версий» — файл без предыдущих версий сообщается как обычный результат (hasVersions: false), а не как ошибка инструмента; форма реального списка версий не подтверждена и возвращается как необработанный JSON.

  • get_account_usage — без ввода. Возвращает использованную/общую квоту хранилища Sync учетной записи в виде необработанных строк (например, "0.00 KB", "5000.00 GB"), извлеченных из двух встроенных переменных <script> на странице account.html iDrive — выделенной конечной точки JSON для использования нет. По своей природе хрупкий (это извлечение из HTML, а не стабильный API) и отражает конкретно название квоты «Sync» на самой странице; также не подтверждено, представляет ли он общее использование для резервных копий устройств.

Изменяющие инструменты

Инструменты ниже изменяют реальные резервные данные в учетной записи, в отличие от всех инструментов выше (только для чтения). Их описания и annotations MCP явно об этом говорят (readOnlyHint: false, а для delete_file также destructiveHint: true).

  • create_folderdeviceId (обязательно), parentPath (обязательно, формат EVS, должна быть существующей папкой), folderName (обязательно — только имя новой папки, не путь). Создает новую папку в живой резервной копии устройства через конечную точку evs/createFolder, размещенную на EVS. Подтверждено вживую: новая папка появляется в последующих списках browse_folder/list_files.

  • delete_filedeviceId (обязательно), paths (обязательно, массив из одного или нескольких путей в формате EVS — отправляется как повторяющиеся поля p в одном пакетном вызове), permanent (необязательно, по умолчанию false). Удаляет файл(ы)/папку(и) из живой резервной копии устройства через конечную точку evs/v1/deleteFile, размещенную на EVS. permanent: false (по умолчанию) перемещает путь(и) в корзину — подтверждено вживую и восстанавливается с помощью restore_from_trash. permanent: true отправляет trash=no, предположительно (судя по имени/шаблону поля) означает постоянное, невосстановимое удаление, но это никогда не было независимо подтверждено вживую — считайте это непроверенным, прежде чем полагаться на это.

  • restore_from_trashdeviceId (обязательно), paths (обязательно, массив из одного или нескольких путей в формате EVS, та же пакетная передача с повторяющимися p, что и delete_file). Восстанавливает ранее перемещенные в корзину файл(ы)/папку(и) в их исходное расположение через конечную точку evs/putBackFromTrash, размещенную на EVS. Подтверждено вживую. Нет подтвержденного способа перечислить, что в данный момент находится в корзине, поэтому paths должны быть уже известны.

Все инструменты, размещенные на EVS (browse_folder, get_thumbnail, download_file, get_file_properties, get_file_versions, list_devices, create_folder, delete_file, restore_from_trash), прозрачно инициализируют и кэшируют сеанс EVSID, который требуется спутниковому хосту EVS (см. раздел «EVSID: как на самом деле устанавливается сеанс EVS» в docs/api-map.md) — дополнительная настройка не требуется, кроме IDRIVE_COOKIE, но им нужно значение EVS_SERVER из cookie (присутствует в cookie, скопированных с /idrive/home, не обязательно в тех, что скопированы с консоли idriveent), чтобы знать, к какому хосту EVS выполнять начальную настройку.

Тестирование

npm test запускает модульные тесты безоговорочно, плюс набор живых интеграционных тестов, которые ограничены переменными окружения и чисто пропускаются, когда они не заданы:

  • IDRIVE_COOKIE — требуется для запуска любого интеграционного теста.

  • IDRIVE_TEST_DEVICE_ID — реальный device_id (из list_devices), необходимый большинству интеграционных тестов.

  • IDRIVE_TEST_EVS_PATH — реальный путь в формате EVS (например, /C), под которым большинство интеграционных тестов просматривают/читают.

  • IDRIVE_TEST_ALLOW_MUTATIONS=1отдельное явное согласие, требуемое, помимо трех указанных выше переменных, перед запуском интеграционного теста create_folder/delete_file/restore_from_trash в src/tools/files.test.ts. Этот тест изменяет реальную учетную запись: он создает уникально именованную временную папку в IDRIVE_TEST_EVS_PATH (поэтому повторные запуски никогда не конфликтуют), проверяет все три инструмента на ней и очищает, перемещая ее в корзину до завершения теста — даже если утверждение не сработает на полпути (try/finally). Без этой переменной, установленной точно в "1", этот тест пропускается, поэтому разработчик, настроивший только IDRIVE_COOKIE/IDRIVE_TEST_DEVICE_ID/IDRIVE_TEST_EVS_PATH для тестирования только на чтение, может запускать npm test без риска воздействия на реальные данные.

Интеграционный тест get_account_usage доступен только для чтения и требует только IDRIVE_COOKIE, как и другие инструменты учетной записи.

Статус

Загрузка конфигурации, обнаружение истечения сеанса и общий HTTP-клиент (src/client/idriveClient.ts) реализованы; инструменты MCP добавляются постепенно в src/tools/ (см. «Доступные инструменты» выше).

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

  • MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/technophile77/idrive-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server