Proton Drive MCP
MCP server that provides full access to Proton Drive via Claude Desktop or CLI, enabling file operations, sharing, and trash management with end-to-end encryption.
README
____ ____ ___ _____ ___ _ _ ____ ____ _____ _______
| _ \| _ \ / _ \_ _/ _ \| \ | | | _ \| _ \|_ _\ \ / / ____|
| |_) | |_) | | | || || | | | \| | | | | | |_) || | \ \ / /| _|
| __/| _ <| |_| || || |_| | |\ | | |_| | _ < | | \ V / | |___
|_| |_| \_\\___/ |_| \___/|_| \_| |____/|_| \_\___| \_/ |_____|
MCP server and CLI · Full Proton Drive control for Claude
<div align="center">
</div>
Give Claude Desktop (or any MCP client) full access to your Proton Drive: list folders, upload and download files, invite collaborators, manage sharing, and handle trash — all with end-to-end encryption intact. The same capabilities are available as a full CLI for scripting, backups, and cron.
What you get
- Claude manages your Proton Drive — list, upload, download, move, share, trash, restore
- Full CLI — same 18 operations, scriptable and pipeable, works in cron and shell scripts
- Zero credential exposure — auth is handled entirely by the official Proton Drive CLI; this MCP never touches your password or session token
- Shell injection safe — all CLI calls use
execFilewith discrete argument arrays, never string interpolation - Privacy-native — end-to-end encryption is handled by Proton's own CLI; this server is just a thin MCP wrapper
Privacy model
Your files travel: Proton Drive (cloud, E2E encrypted) → Proton Drive CLI (local, decrypts) → this MCP server (local) → your AI client.
The Proton Drive CLI handles all cryptography locally. This MCP server calls the CLI as a subprocess and forwards results — it never receives your password, never stores credentials, and never touches the raw encrypted data. Authentication state lives in your OS keychain (macOS Keychain, Windows Credential Manager, Linux libsecret), managed exclusively by the official Proton CLI.
If you use Claude Desktop with the default Anthropic API, file content you ask Claude to act on is sent to Anthropic per their privacy policy.
Prerequisites
1. Proton Drive CLI — download from proton.me/download/drive/cli and add to your PATH.
2. Authenticate the CLI — run once in your terminal:
proton-drive auth login
This opens a browser for Proton's standard sign-in flow. Credentials are stored in your OS keychain — not on disk, not in config files.
3. Node.js 20 or later — node --version to check.
Install
Via npx (no install needed):
# Used directly in Claude Desktop config — no global install required
npx -y proton-drive-mcp
Global install:
npm install -g proton-drive-mcp
Connect to Claude Desktop
Add to your claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"proton-drive": {
"command": "npx",
"args": ["-y", "proton-drive-mcp"]
}
}
}
Restart Claude Desktop. Check + → Connectors → proton-drive to confirm the server is connected.
Tip: Make sure
proton-drive auth loginhas been run at least once before starting Claude Desktop.
If installed globally
{
"mcpServers": {
"proton-drive": {
"command": "proton-drive-mcp"
}
}
}
Try it: example Claude prompts
Backup a build artifact
"Upload ./dist/app-v2.zip to /my-files/Releases and tell me if it succeeded."
Morning file triage
"List everything in /my-files. Tell me what's larger than 10MB and what was modified most recently."
Share a folder with a colleague
"Share /my-files/Q2-Reports with alice@proton.me as editor. Add a message: 'Please review before Friday.'"
Offboarding
"Revoke bob@company.com's access from /my-files/Projects and /shared/Design. Confirm when done."
Automated download
"Download /my-files/contracts/nda-2026.pdf to ~/Documents/Legal/."
Trash cleanup
"List what's in the trash and empty it once I confirm."
CLI
proton-drive-cli <command> [args]
Auth & info
proton-drive-cli auth status # check if authenticated
proton-drive-cli auth logout # log out (clears OS keychain session)
proton-drive-cli version # CLI and SDK version
Files & folders
proton-drive-cli list /my-files
proton-drive-cli list /my-files/Reports
proton-drive-cli mkdir /my-files/NewFolder
proton-drive-cli upload ./report.pdf /my-files/Reports
proton-drive-cli upload ./dist /my-files/Releases --conflict overwrite
proton-drive-cli download /my-files/report.pdf ./local/report.pdf
proton-drive-cli download /my-files/Reports ./local/Reports
proton-drive-cli move /my-files/old-name.pdf /my-files/new-name.pdf
proton-drive-cli delete /my-files/obsolete-draft.pdf
# Machine-readable output (pipe-friendly)
proton-drive-cli list /my-files --json | jq '.[].name'
Sharing
proton-drive-cli share status /my-files/Reports
proton-drive-cli share invite /my-files/Reports alice@pm.me editor
proton-drive-cli share invite /my-files/Reports bob@pm.me viewer --message "FYI"
proton-drive-cli share revoke /my-files/Reports alice@pm.me
Trash
proton-drive-cli trash /my-files/old-draft.pdf # move to trash
proton-drive-cli trash list # see what's in trash
proton-drive-cli restore /my-files/old-draft.pdf # restore from trash
proton-drive-cli trash empty # permanently delete all trashed items
Pipe and script
# Backup build output after CI
proton-drive-cli upload ./dist /my-files/Releases/$(date +%Y-%m-%d) --conflict rename
# Download all contracts for audit
proton-drive-cli download /my-files/Contracts ./audit/contracts
# Nightly backup via cron
0 2 * * * proton-drive-cli upload ~/Documents /my-files/Backups/$(date +%Y-%m-%d) --conflict skip
# Check who has access before a team change
proton-drive-cli share status /my-files/Projects
Tool surface
Auth
drive_auth_status · drive_auth_logout · drive_version
Filesystem
drive_list · drive_mkdir · drive_upload · drive_download · drive_move · drive_delete
Sharing
drive_share_status · drive_share_invite · drive_share_revoke
Trash
drive_list_trash · drive_trash · drive_restore · drive_empty_trash
Local sync (requires PROTON_DRIVE_SYNC_PATH)
drive_read_file · drive_write_file
Tool reference
| Tool | Description | Key parameters |
|---|---|---|
drive_auth_status |
Check if CLI is authenticated | — |
drive_auth_logout |
Log out (clear session) | — |
drive_version |
CLI and SDK version info | — |
drive_list |
List files and folders at a path | path |
drive_mkdir |
Create a new empty folder | path |
drive_upload |
Upload local file or folder | localPath, remotePath, conflictStrategy (skip/overwrite/rename) |
drive_download |
Download to local path | remotePath, localPath |
drive_move |
Move or rename | sourcePath, destinationPath |
drive_delete |
Permanently delete ⚠️ | path, confirmed: true |
drive_list_trash |
List items currently in trash | — |
drive_share_status |
Get sharing members and URL | path |
drive_share_invite |
Invite a user | path, email, role (viewer/editor/admin), message? |
drive_share_revoke |
Revoke access | path, email |
drive_trash |
Move to trash | path |
drive_restore |
Restore from trash | path |
drive_empty_trash |
Permanently delete all trash ⚠️ | confirmed: true |
drive_read_file |
Read text file from local sync folder | path |
drive_write_file |
Write text file to local sync folder ⚠️ | path, content |
⚠️ Destructive tools require
confirmed: true. Usedrive_list_trashfirst so you know what will be deleted, then passconfirmed: trueto proceed.
Compared with other Drive MCPs
| Capability | Generic S3/GDrive MCPs | proton-drive-mcp |
|---|---|---|
| End-to-end encryption | No | Yes (via Proton CLI) |
| Credential exposure | API keys in config | Zero — OS keychain only |
| Sharing & invitations | Rarely | Full (invite, revoke, status) |
| Trash & restore | Rarely | Full |
| CLI parity | No | Full CLI mirrors all MCP tools |
| Shell injection safe | Varies | Yes — execFile only |
Operational notes
drive_uploadpasses--skip-thumbnailsby default. Remove it from the subprocess args if you want WebP preview generation (requires Bun 1.3.14+ installed).drive_moveanddrive_deleteare best-effort — the Proton Drive CLI documentation does not guarantee these commands exist in v1. If a command returns a CLI error, the MCP tool surfaces it cleanly.- Paths are always Drive-absolute:
/my-files/folder/file.pdf. Relative paths are not supported. - All calls include
--jsonautomatically — you never need to pass it manually via the CLI wrapper.
Environment variables
| Variable | Required | Description |
|---|---|---|
PROTON_DRIVE_SYNC_PATH |
Optional | Absolute path to your local Proton Drive sync folder root (e.g. /Users/you/Proton Drive). Required only for drive_read_file and drive_write_file. The Proton Drive desktop app must be running to sync written files to the cloud. |
PROTON_DRIVE_BIN |
Optional | Override the proton-drive binary name or path (default: proton-drive). Useful for non-standard installations. |
Troubleshooting
"PROTON_DRIVE_SYNC_PATH is not set"
Add "PROTON_DRIVE_SYNC_PATH": "/absolute/path/to/your/Proton Drive" to your Claude Desktop MCP config env block. The path must point to the root folder that the Proton Drive desktop app syncs to.
"proton-drive CLI not found"
Download from proton.me/download/drive/cli and ensure the binary is in your PATH. Verify with which proton-drive.
"Not authenticated"
Run proton-drive auth login in your terminal. Auth state is stored in your OS keychain and persists across sessions.
Claude can't see the connector
Restart Claude Desktop fully after changing the MCP config. Check + → Connectors → proton-drive. The Proton Drive CLI must be in the PATH that Claude Desktop inherits (on macOS this may differ from your shell PATH — use the full binary path in config if needed).
Upload fails on image files
The CLI generates WebP thumbnails by default using Bun's image API. If Bun isn't installed or doesn't support thumbnails on your platform, the MCP passes --skip-thumbnails to bypass this. No action needed.
Custom binary path
If the proton-drive binary is installed under a non-standard name or location, set PROTON_DRIVE_BIN in your environment:
PROTON_DRIVE_BIN=/usr/local/bin/proton-drive npx proton-drive-mcp
Or in Claude Desktop config:
{
"mcpServers": {
"proton-drive": {
"command": "npx",
"args": ["-y", "proton-drive-mcp"],
"env": { "PROTON_DRIVE_BIN": "/usr/local/bin/proton-drive" }
}
}
}
Windows PATH issues
Use the full path to the proton-drive.exe binary in your Claude Desktop config if npx can't find it:
{
"mcpServers": {
"proton-drive": {
"command": "C:\\path\\to\\proton-drive-mcp.cmd"
}
}
}
Development
git clone https://github.com/googlarz/proton-drive-mcp.git
cd proton-drive-mcp
npm install
npm run build
npm test
Changelog
See CHANGELOG.md for release history.
Contributing
Bug reports and pull requests welcome: github.com/googlarz/proton-drive-mcp/issues
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。