proton-drive-mcp 1.0.21 → 1.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.23 — 2026-06-10
4
+
5
+ ### Fixed
6
+ - **README** — "14 operations" corrected to 18; Node.js requirement updated to 20+ in text and badge
7
+ - **`smithery.yaml`** — `commandFunction` now forwards `PROTON_DRIVE_SYNC_PATH` env var from config to the process
8
+
9
+ ## 1.0.22 — 2026-06-10
10
+
11
+ ### Fixed
12
+ - **CI Node 20 deprecation** — publish workflow bumped to Node 22; CI matrix updated to [20, 22, 24] (drops EOL Node 18, adds Node 24)
13
+ - **`engines` field** — bumped from `>=18` to `>=20` (Node 18 is EOL since April 2025)
14
+ - **`smithery.yaml`** — added missing `drive_read_file` and `drive_write_file` tools; added `PROTON_DRIVE_SYNC_PATH` to configSchema
15
+ - **README** — added Local sync tool group, two missing tools in reference table, `PROTON_DRIVE_SYNC_PATH` env var documentation
16
+
17
+ ### Added
18
+ - **MCP dispatch layer tests** — confirmed-gate coverage for `drive_delete` and `drive_empty_trash`; env-var-guard coverage for `drive_read_file` (88 tests total)
19
+
3
20
  ## 1.0.21 — 2026-06-10
4
21
 
5
22
  ### Improved
package/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
  [![npm version](https://img.shields.io/npm/v/proton-drive-mcp?color=%236d4aff&label=npm)](https://www.npmjs.com/package/proton-drive-mcp)
13
13
  [![CI](https://github.com/googlarz/proton-drive-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/googlarz/proton-drive-mcp/actions/workflows/ci.yml)
14
14
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
15
- [![Node.js 18+](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)
15
+ [![Node.js 20+](https://img.shields.io/badge/node-%3E%3D20-brightgreen)](https://nodejs.org)
16
16
  [![TypeScript](https://img.shields.io/badge/TypeScript-5-3178c6?logo=typescript&logoColor=white)](https://www.typescriptlang.org)
17
17
  [![MCP](https://img.shields.io/badge/MCP-compatible-blueviolet)](https://modelcontextprotocol.io)
18
18
  [![GitHub stars](https://img.shields.io/github/stars/googlarz/proton-drive-mcp?style=social)](https://github.com/googlarz/proton-drive-mcp)
@@ -29,7 +29,7 @@ Give Claude Desktop (or any MCP client) full access to your Proton Drive: list f
29
29
  ## What you get
30
30
 
31
31
  - **Claude manages your Proton Drive** — list, upload, download, move, share, trash, restore
32
- - **Full CLI** — same 14 operations, scriptable and pipeable, works in cron and shell scripts
32
+ - **Full CLI** — same 18 operations, scriptable and pipeable, works in cron and shell scripts
33
33
  - **Zero credential exposure** — auth is handled entirely by the official Proton Drive CLI; this MCP never touches your password or session token
34
34
  - **Shell injection safe** — all CLI calls use `execFile` with discrete argument arrays, never string interpolation
35
35
  - **Privacy-native** — end-to-end encryption is handled by Proton's own CLI; this server is just a thin MCP wrapper
@@ -58,7 +58,7 @@ proton-drive auth login
58
58
 
59
59
  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.
60
60
 
61
- **3. Node.js 18 or later** — `node --version` to check.
61
+ **3. Node.js 20 or later** — `node --version` to check.
62
62
 
63
63
  ---
64
64
 
@@ -222,6 +222,9 @@ proton-drive-cli share status /my-files/Projects
222
222
  ### Trash
223
223
  `drive_list_trash` · `drive_trash` · `drive_restore` · `drive_empty_trash`
224
224
 
225
+ ### Local sync (requires `PROTON_DRIVE_SYNC_PATH`)
226
+ `drive_read_file` · `drive_write_file`
227
+
225
228
  ---
226
229
 
227
230
  ## Tool reference
@@ -244,6 +247,8 @@ proton-drive-cli share status /my-files/Projects
244
247
  | `drive_trash` | Move to trash | `path` |
245
248
  | `drive_restore` | Restore from trash | `path` |
246
249
  | `drive_empty_trash` | Permanently delete all trash ⚠️ | `confirmed: true` |
250
+ | `drive_read_file` | Read text file from local sync folder | `path` |
251
+ | `drive_write_file` | Write text file to local sync folder ⚠️ | `path`, `content` |
247
252
 
248
253
  > ⚠️ **Destructive tools** require `confirmed: true`. Use `drive_list_trash` first so you know what will be deleted, then pass `confirmed: true` to proceed.
249
254
 
@@ -271,8 +276,20 @@ proton-drive-cli share status /my-files/Projects
271
276
 
272
277
  ---
273
278
 
279
+ ## Environment variables
280
+
281
+ | Variable | Required | Description |
282
+ |---|---|---|
283
+ | `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. |
284
+ | `PROTON_DRIVE_BIN` | Optional | Override the `proton-drive` binary name or path (default: `proton-drive`). Useful for non-standard installations. |
285
+
286
+ ---
287
+
274
288
  ## Troubleshooting
275
289
 
290
+ **"PROTON_DRIVE_SYNC_PATH is not set"**
291
+ 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.
292
+
276
293
  **"proton-drive CLI not found"**
277
294
  Download from [proton.me/download/drive/cli](https://proton.me/download/drive/cli/index.html) and ensure the binary is in your `PATH`. Verify with `which proton-drive`.
278
295
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "proton-drive-mcp",
3
- "version": "1.0.21",
3
+ "version": "1.0.23",
4
4
  "description": "MCP server and CLI that gives Claude full access to Proton Drive — upload, download, share, and manage your end-to-end encrypted files without leaving the conversation.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -51,7 +51,7 @@
51
51
  "url": "https://github.com/googlarz/proton-drive-mcp/issues"
52
52
  },
53
53
  "engines": {
54
- "node": ">=18.0.0"
54
+ "node": ">=20.0.0"
55
55
  },
56
56
  "dependencies": {
57
57
  "@modelcontextprotocol/sdk": "^1.11.0"
package/smithery.yaml CHANGED
@@ -28,10 +28,19 @@ tools:
28
28
  - drive_trash
29
29
  - drive_restore
30
30
  - drive_empty_trash
31
+ - drive_read_file
32
+ - drive_write_file
31
33
  startCommand:
32
34
  type: stdio
33
35
  configSchema:
34
36
  type: object
35
- properties: {}
37
+ properties:
38
+ PROTON_DRIVE_SYNC_PATH:
39
+ type: string
40
+ description: "Absolute path to the root of your local Proton Drive sync folder. Required only for drive_read_file and drive_write_file. Example: /Users/you/Proton Drive"
36
41
  commandFunction: |-
37
- (_config) => ({ command: "npx", args: ["-y", "proton-drive-mcp"] })
42
+ (config) => ({
43
+ command: "npx",
44
+ args: ["-y", "proton-drive-mcp"],
45
+ env: config.PROTON_DRIVE_SYNC_PATH ? { PROTON_DRIVE_SYNC_PATH: config.PROTON_DRIVE_SYNC_PATH } : {}
46
+ })