Proton Drive CLI MCP
Manage Proton Drive from Claude, Codex, VS Code/Copilot, and any MCP client through Proton's official CLI. Authentication and encrypted Drive behavior stay with Proton's tooling.
README
<!-- mcp-name: io.github.borealstack/proton-drive-cli-mcp -->
<p align="center"> <img src="assets/brand/proton-drive-cli-mcp-banner.png" alt="Proton Drive CLI MCP" width="100%"> </p>
<h1 align="center">Proton Drive CLI MCP</h1>
<p align="center"> Manage Proton Drive from Claude, Codex, VS Code/Copilot, and any MCP client through Proton's official CLI. Authentication and encrypted Drive behavior stay with Proton's tooling. </p>
<p align="center"> <a href="https://www.npmjs.com/package/@borealstack/proton-drive-cli-mcp"><img alt="npm version" src="https://img.shields.io/npm/v/%40borealstack%2Fproton-drive-cli-mcp.svg"></a> <a href="https://www.npmjs.com/package/@borealstack/proton-drive-cli-mcp"><img alt="npm downloads" src="https://img.shields.io/npm/dw/%40borealstack%2Fproton-drive-cli-mcp.svg"></a> <a href="server.json"><img alt="MCP stdio" src="https://img.shields.io/badge/MCP-stdio-4f46e5.svg"></a> <a href="mcpb/manifest.json"><img alt="Claude MCPB" src="https://img.shields.io/badge/Claude-MCPB-2563eb.svg"></a> <a href="plugins/proton-drive-cli-mcp"><img alt="Codex plugin" src="https://img.shields.io/badge/Codex-plugin-059669.svg"></a> <a href="package.json"><img alt="Node.js 22+" src="https://img.shields.io/badge/node-%3E%3D22-16a34a.svg"></a> <a href="https://scorecard.dev/viewer/?uri=github.com/borealstack/proton-drive-cli-mcp"><img alt="OpenSSF Scorecard" src="https://api.scorecard.dev/projects/github.com/borealstack/proton-drive-cli-mcp/badge"></a> </p>
<p align="center"> <a href="#install">Install</a> | <a href="#first-run">First Run</a> | <a href="#what-agents-can-do">Tools</a> | <a href="#safety-model">Safety</a> | <a href="docs/TOOLS.md">Tool Reference</a> | <a href="https://github.com/borealstack/proton-drive-cli-mcp/releases/latest">Latest Release</a> </p>
Why This Exists
AI agents can already run shell commands, but Drive operations should not depend
on prompt-crafted command lines. This server exposes Proton Drive as typed MCP
tools while delegating the sensitive parts to Proton's official proton-drive
CLI.
| What you get | How it works |
|---|---|
| Proton-supported Drive behavior | Calls the official Proton Drive CLI instead of reimplementing auth or encrypted Drive APIs. |
| Structured MCP tools | Agents can list, upload, download, share, trash, and inspect Drive paths through schemas. |
| Safer mutation flow | Destructive or account-changing tools require confirm: true. |
| Low-friction setup | Runs from npm with npx, and can install the official CLI into a managed user-local directory with SHA-512 verification. |
| Lower normal token use | Folder lists and background job status responses are bounded by default; full files still use upload/download or text helpers. |
[!NOTE] This project is an independent interoperability wrapper. It is not affiliated with Proton AG.
Install
Add the server to an MCP client as a local stdio server:
{
"mcpServers": {
"proton-drive": {
"command": "npx",
"args": ["-y", "@borealstack/proton-drive-cli-mcp"],
"env": {}
}
}
}
The command is a stdio server. If you run it directly in a terminal, no prompt or banner is expected; it waits for MCP JSON-RPC messages on stdin.
Client Shortcuts
| Client | Setup |
|---|---|
| Claude Code | claude mcp add --transport stdio proton-drive -- npx -y @borealstack/proton-drive-cli-mcp |
| Claude Desktop | Use the JSON config above, or install the MCPB bundle. |
| Codex | Use the plugin metadata in plugins/proton-drive-cli-mcp. |
| VS Code | code --add-mcp "{\"name\":\"proton-drive\",\"command\":\"npx\",\"args\":[\"-y\",\"@borealstack/proton-drive-cli-mcp\"]}" |
| npm | npx -y @borealstack/proton-drive-cli-mcp |
First Run
Start with diagnosis. The server will report whether the official CLI is found,
whether the managed install path exists, which version is available, and whether
the CLI can access /my-files.
Call proton_drive_diagnose
If the CLI is missing, run setup:
Call proton_drive_setup with installIfMissing=true
If authentication is missing, start the browser login flow:
Call proton_drive_auth_login
Finish Proton sign-in in the browser
Call proton_drive_diagnose again
[!TIP] The server does not request or store Proton credentials. Login, session storage, and encrypted Drive behavior remain delegated to Proton's official CLI.
Requirements
- Node.js 22+ for the published package.
- Bun 1.3+ for repository development and Bun test coverage.
- The official Proton Drive CLI, or network access to Proton's CLI download index for managed install.
- Browser access for the official Proton login flow.
The CLI is resolved in this order:
PROTON_DRIVE_CLI_PATH- The managed user-local install path
proton-driveorproton-drive.exein the current directory or common download pathsproton-driveonPATH- Managed install from Proton's CLI download index
Useful environment switches:
| Variable | Effect |
|---|---|
PROTON_DRIVE_CLI_PATH |
Use an explicit Proton Drive CLI binary. |
PROTON_DRIVE_CLI_AUTO_INSTALL=0 |
Disable managed CLI installation. |
PROTON_DRIVE_CLI_INSTALL_DIR |
Override the managed install directory. |
PROTON_DRIVE_CLI_MANAGE_PATH=0 |
Skip managed PATH updates. |
PROTON_DRIVE_AUTH_STATUS_CACHE_MS |
Tune successful auth-status caching. |
PROTON_DRIVE_VERSION_CACHE_MS |
Tune CLI version caching. |
What Agents Can Do
| Area | Tools |
|---|---|
| Setup and auth | proton_drive_diagnose, proton_drive_setup, proton_drive_auth_status, proton_drive_auth_login, proton_drive_auth_login_status, proton_drive_auth_login_cancel, proton_drive_auth_logout |
| CLI metadata | proton_drive_cli_install, proton_drive_cli_version, proton_drive_cli_help |
| Files | proton_drive_list, proton_drive_info, proton_drive_create_folder, proton_drive_upload, proton_drive_download |
| Long-running work | proton_drive_list_async, proton_drive_upload_async, proton_drive_download_async, proton_drive_job_status, proton_drive_job_cancel |
| Small text files | proton_drive_read_text, proton_drive_write_text |
| Mutations | proton_drive_rename, proton_drive_copy, proton_drive_move, proton_drive_trash, proton_drive_restore, proton_drive_delete, proton_drive_empty_trash |
| Sharing | proton_drive_sharing_status, proton_drive_sharing_invite, proton_drive_sharing_remove, proton_drive_sharing_set_url, proton_drive_sharing_remove_url |
| Invitations | proton_drive_invitation_list, proton_drive_invitation_accept, proton_drive_invitation_reject |
Full schemas and examples are in docs/TOOLS.md.
Common Agent Workflows
List the top 20 items in /my-files/Reports.
Uses proton_drive_list with bounded output and pagination metadata.
Upload these local files to /my-files/Reports, then poll until done.
Uses proton_drive_upload_async followed by proton_drive_job_status.
Read /my-files/Notes/todo.txt, update the text, and write it back.
Uses proton_drive_read_text and proton_drive_write_text for small UTF-8
files. Full binary or large-file work should use proton_drive_download and
proton_drive_upload.
Safety Model
This project is designed so the MCP layer can orchestrate Drive work without becoming a credential broker.
| Guardrail | Behavior |
|---|---|
| Credential handling | Proton login and session storage stay inside the official CLI. |
| Destructive actions | Delete, empty trash, logout, sharing removal, and invitation decisions require confirm: true. |
| Public-link passwords | Custom passwords are not exposed through MCP arguments because CLI arguments can be visible to local process inspection. |
| Output size | List tools are bounded; background JSON output is summarized with byte counts and truncation metadata. |
| Provenance | npm publishes with provenance; release assets include checksums and Sigstore-backed attestations. |
[!IMPORTANT]
proton_drive_deleteandproton_drive_empty_trashare permanent operations. Preferproton_drive_trashfirst unless the user explicitly asks to delete.
Release Channels
| Channel | Artifact |
|---|---|
| npm | @borealstack/proton-drive-cli-mcp |
| GitHub release | latest release assets |
| MCP Registry manifest | server.json |
| Claude Desktop | proton-drive-cli-mcp.mcpb |
| Codex plugin | plugins/proton-drive-cli-mcp |
Release assets include:
- npm package tarball
- MCPB bundle
SHA256SUMS- Sigstore JSON attestation bundle
Develop Locally
bun install
bun run typecheck
bun test
bun run build
npm test
Run the development server through Bun:
{
"mcpServers": {
"proton-drive-dev": {
"command": "bun",
"args": ["run", "<path-to-repo>/src/index.ts"],
"env": {}
}
}
}
Run real-account smoke checks only when you intentionally want to touch a logged-in Proton Drive account. Keep generated smoke artifacts local and out of git.
Project Map
| Path | Purpose |
|---|---|
| src/index.ts | stdio MCP server entry point |
| src/server.ts | MCP tool registration surface |
| src/cli.ts | shared Proton Drive CLI behavior |
| src/installer.ts | managed official CLI download and checksum verification |
| docs/TOOLS.md | tool inputs, outputs, and examples |
| server.json | MCP Registry metadata |
| mcpb/manifest.json | Claude MCPB metadata |
| plugins/proton-drive-cli-mcp | Codex plugin package |
References
- Proton: Using Proton Drive CLI
- Proton blog: Introducing Proton Drive CLI
- Official Proton Drive CLI README
- Model Context Protocol TypeScript SDK
Help Discovery
If this project helps you connect Proton Drive to an MCP client, star the repository so other users can find the maintained official-CLI wrapper: borealstack/proton-drive-cli-mcp.
推荐服务器
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 模型以安全和受控的方式获取实时的网络信息。