{"_id":"@borealstack/proton-drive-cli-mcp","_rev":"3-faa8d090e4a320b4c41d9c7f4b1ebee6","name":"@borealstack/proton-drive-cli-mcp","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@borealstack/proton-drive-cli-mcp","version":"0.1.0","keywords":["mcp","mcp-server","proton-drive","proton-drive-cli","proton-drive-mcp","proton","model-context-protocol","claude","claude-desktop","codex","codex-plugin","mcpb","cloud-storage","secure-file-sharing"],"license":"MIT","_id":"@borealstack/proton-drive-cli-mcp@0.1.0","maintainers":[{"name":"borealstack_owner","email":"www.npmjs.com.luminance318@passmail.com"}],"homepage":"https://github.com/borealstack/proton-drive-cli-mcp#readme","bugs":{"url":"https://github.com/borealstack/proton-drive-cli-mcp/issues"},"bin":{"proton-drive-cli-mcp":"dist/index.js"},"dist":{"shasum":"1b5d00c6763bf97f0daf5c2ad3121a282c3d1f56","tarball":"https://registry.npmjs.org/@borealstack/proton-drive-cli-mcp/-/proton-drive-cli-mcp-0.1.0.tgz","fileCount":32,"integrity":"sha512-EA/zO0ilc3hH1aYrS3+f+2IwNANxKx6lQS5kE+1LjhVK6LhFMBJD6axUVIYukb57KVTqfs7BvoEemU7E+K39dg==","signatures":[{"sig":"MEYCIQCZyFipkhQpPSkzmWzXKtJTvBlr0Z6JxfPILrp7YxL3fAIhANoDw41TDQ/iyESY3sBGGfd37738Kxg/hkIn7dITXDYH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":990547},"main":"./dist/index.js","type":"module","engines":{"bun":">=1.3.0","node":">=22"},"gitHead":"9b9672ab56670b25b05cc638d8b60c56857bd277","mcpName":"io.github.borealstack/proton-drive-cli-mcp","scripts":{"dev":"bun run src/index.ts","test":"npm run test:node","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm run build && npm test && bun run test:bun","start":"node dist/index.js","prepack":"npm run build","test:bun":"bun test","test:node":"node --test test/*.node-check.mjs","test:unit":"bun test test/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"borealstack_owner","email":"www.npmjs.com.luminance318@passmail.com"},"repository":{"url":"git+https://github.com/borealstack/proton-drive-cli-mcp.git","type":"git"},"_npmVersion":"11.6.4","description":"MCP server for Proton Drive that wraps the official Proton Drive CLI.","directories":{},"_nodeVersion":"24.1.0","dependencies":{"zod":"^4.4.3","@cfworker/json-schema":"^4.1.1","@modelcontextprotocol/server":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"@types/bun":"^1.3.5","typescript":"^5.9.3","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/proton-drive-cli-mcp_0.1.0_1781198051391_0.910869733297998","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@borealstack/proton-drive-cli-mcp","version":"0.1.1","keywords":["mcp","mcp-server","proton-drive","proton-drive-cli","proton-drive-mcp","proton","model-context-protocol","claude","claude-desktop","codex","codex-plugin","mcpb","cloud-storage","secure-file-sharing"],"license":"MIT","_id":"@borealstack/proton-drive-cli-mcp@0.1.1","maintainers":[{"name":"borealstack_owner","email":"www.npmjs.com.luminance318@passmail.com"}],"homepage":"https://github.com/borealstack/proton-drive-cli-mcp#readme","bugs":{"url":"https://github.com/borealstack/proton-drive-cli-mcp/issues"},"bin":{"proton-drive-cli-mcp":"dist/index.js"},"dist":{"shasum":"62bcf2ac0c9dc3b5e116d16ba95f6b00aaf88d08","tarball":"https://registry.npmjs.org/@borealstack/proton-drive-cli-mcp/-/proton-drive-cli-mcp-0.1.1.tgz","fileCount":32,"integrity":"sha512-KVzEGV5cfE2kI80NyO9lCLSmIdHxmrQpnk+vU22HsyvTvwOHWDTK1Pk5VjB9H63HHZRc+0fm0VkniOBUpaT1VQ==","signatures":[{"sig":"MEYCIQD4yynK4CLbOGiymsBZoRAqZ4VvrL8/tUjDfVaQsx0aMgIhAKcapS7YZcRXVOI17bg3is5zI62dglFN1i9IaNX/lST8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@borealstack%2fproton-drive-cli-mcp@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":989534},"main":"./dist/index.js","type":"module","engines":{"bun":">=1.3.0","node":">=22"},"gitHead":"8232242aaae3d323f8492f1de24749558e6f5a87","mcpName":"io.github.borealstack/proton-drive-cli-mcp","scripts":{"dev":"bun run src/index.ts","test":"npm run test:node","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm run build && npm test && bun run test:bun","start":"node dist/index.js","prepack":"npm run build","test:bun":"bun test","test:node":"node --test test/*.node-check.mjs","test:unit":"bun test test/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fdc62602-2bc4-4a4c-b35c-bffc115b308f"}},"repository":{"url":"git+https://github.com/borealstack/proton-drive-cli-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server for Proton Drive that wraps the official Proton Drive CLI.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","@cfworker/json-schema":"^4.1.1","@modelcontextprotocol/server":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"@types/bun":"^1.3.5","typescript":"^5.9.3","@types/node":"^24.1.0"},"_npmOperationalInternal":{"tmp":"tmp/proton-drive-cli-mcp_0.1.1_1781199057685_0.9590351504163845","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@borealstack/proton-drive-cli-mcp","version":"0.1.2","description":"Manage Proton Drive from Claude, Codex, VS Code/Copilot, and other MCP clients through Proton's official CLI without exposing Proton credentials.","type":"module","packageManager":"bun@1.3.14","main":"./dist/index.js","mcpName":"io.github.borealstack/proton-drive-cli-mcp","bin":{"proton-drive-cli-mcp":"dist/index.js"},"scripts":{"start":"node dist/index.js","dev":"bun run src/index.ts","build":"tsc -p tsconfig.build.json","prepack":"npm run build","typecheck":"tsc --noEmit","test":"npm run test:node","test:bun":"bun test","test:unit":"bun test test/*.test.ts","test:node":"node --test test/*.node-check.mjs","check":"npm run typecheck && npm run build && npm test && bun run test:bun"},"keywords":["mcp","mcp-server","proton-drive","proton-drive-cli","proton-drive-mcp","proton","model-context-protocol","claude","claude-code","claude-desktop","codex","codex-plugin","vs-code","github-copilot","ai-agent","mcpb","cloud-storage","file-management","secure-file-sharing"],"repository":{"type":"git","url":"git+https://github.com/borealstack/proton-drive-cli-mcp.git"},"bugs":{"url":"https://github.com/borealstack/proton-drive-cli-mcp/issues"},"homepage":"https://github.com/borealstack/proton-drive-cli-mcp#readme","license":"MIT","publishConfig":{"access":"public","provenance":true},"dependencies":{"@cfworker/json-schema":"^4.1.1","@modelcontextprotocol/server":"^2.0.0-alpha.2","zod":"^4.4.3"},"devDependencies":{"@types/bun":"^1.3.5","@types/node":"^24.1.0","typescript":"^5.9.3"},"engines":{"node":">=22","bun":">=1.3.0"},"gitHead":"61a2896219b818731a3f10f7b1c0b5701c992a8f","_id":"@borealstack/proton-drive-cli-mcp@0.1.2","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-viru0dCMTf5yTtVKGuI224UlZ1kWJzUf/8M+C0960g7cnuu80kyM1w7sO5/Uheg7DZvW6gNPvVBIoobuFiFvgQ==","shasum":"5300704d51f2c5a982f4d4810c8f069dd7e20900","tarball":"https://registry.npmjs.org/@borealstack/proton-drive-cli-mcp/-/proton-drive-cli-mcp-0.1.2.tgz","fileCount":32,"unpackedSize":1031006,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@borealstack%2fproton-drive-cli-mcp@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHw8IZfbn5nTiqPylio9op0GQPkmjAK6u+mYLfeulXZfAiB/XCNHSZyDyhAFFFRDS7toyt9FWpENC5Ir/pensl1qkA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fdc62602-2bc4-4a4c-b35c-bffc115b308f"}},"directories":{},"maintainers":[{"name":"borealstack_owner","email":"www.npmjs.com.luminance318@passmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/proton-drive-cli-mcp_0.1.2_1781293224236_0.4868118661513434"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-11T17:14:11.253Z","modified":"2026-06-12T19:40:24.763Z","0.1.0":"2026-06-11T17:14:11.682Z","0.1.1":"2026-06-11T17:30:57.874Z","0.1.2":"2026-06-12T19:40:24.454Z"},"bugs":{"url":"https://github.com/borealstack/proton-drive-cli-mcp/issues"},"license":"MIT","homepage":"https://github.com/borealstack/proton-drive-cli-mcp#readme","keywords":["mcp","mcp-server","proton-drive","proton-drive-cli","proton-drive-mcp","proton","model-context-protocol","claude","claude-code","claude-desktop","codex","codex-plugin","vs-code","github-copilot","ai-agent","mcpb","cloud-storage","file-management","secure-file-sharing"],"repository":{"type":"git","url":"git+https://github.com/borealstack/proton-drive-cli-mcp.git"},"description":"Manage Proton Drive from Claude, Codex, VS Code/Copilot, and other MCP clients through Proton's official CLI without exposing Proton credentials.","maintainers":[{"name":"borealstack_owner","email":"www.npmjs.com.luminance318@passmail.com"}],"readme":"# Proton Drive CLI MCP\n\n![Proton Drive CLI MCP banner](assets/brand/proton-drive-cli-mcp-banner.png)\n\n<!-- mcp-name: io.github.borealstack/proton-drive-cli-mcp -->\n\n[![License: MIT](https://img.shields.io/badge/license-MIT-0f172a.svg)](LICENSE)\n[![MCP](https://img.shields.io/badge/MCP-stdio-4f46e5.svg)](server.json)\n[![Node.js](https://img.shields.io/badge/node-%3E%3D22-16a34a.svg)](package.json)\n[![Bun](https://img.shields.io/badge/bun-%3E%3D1.3-f97316.svg)](package.json)\n[![Claude MCPB](https://img.shields.io/badge/Claude-MCPB-2563eb.svg)](mcpb/manifest.json)\n[![Codex Plugin](https://img.shields.io/badge/Codex-plugin-059669.svg)](plugins/proton-drive-cli-mcp)\n[![npm version](https://img.shields.io/npm/v/%40borealstack%2Fproton-drive-cli-mcp.svg)](https://www.npmjs.com/package/@borealstack/proton-drive-cli-mcp)\n[![npm downloads](https://img.shields.io/npm/dw/%40borealstack%2Fproton-drive-cli-mcp.svg)](https://www.npmjs.com/package/@borealstack/proton-drive-cli-mcp)\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/borealstack/proton-drive-cli-mcp/badge)](https://scorecard.dev/viewer/?uri=github.com/borealstack/proton-drive-cli-mcp)\n[![GitHub stars](https://img.shields.io/github/stars/borealstack/proton-drive-cli-mcp?style=social)](https://github.com/borealstack/proton-drive-cli-mcp/stargazers)\n\nManage Proton Drive from Claude, Codex, VS Code/Copilot, and other MCP clients\nthrough Proton's official `proton-drive` CLI without exposing Proton\ncredentials. Authentication, encrypted Drive behavior, and session storage stay\ndelegated to Proton's tooling instead of being reimplemented here.\n\n## Highlights\n\n| Area | What is ready |\n| --- | --- |\n| MCP clients | stdio server runnable with `npx -y @borealstack/proton-drive-cli-mcp` |\n| Proton auth | Browser login through the official Proton Drive CLI |\n| CLI install | Optional managed install from Proton's download index with SHA-512 verification |\n| Distribution | npm package metadata, MCP Registry `server.json`, Codex plugin metadata, and Claude MCPB metadata |\n| Safety | No Proton credentials in MCP config, no custom public-link passwords in command arguments, confirmation gates for destructive tools |\n\n## Why This One\n\n| If you need | This project does | Why it matters |\n| --- | --- | --- |\n| Proton's supported Drive behavior | Calls the official `proton-drive` CLI | Auth, encrypted Drive behavior, and session storage stay with Proton's tooling |\n| MCP access from AI clients | Exposes typed tools for Claude, Codex, VS Code/Copilot, and other MCP hosts | Agents can call structured file, sharing, trash, and invitation workflows instead of shelling out blindly |\n| No desktop sync-folder dependency | Works through the official CLI path and `/my-files` remote paths | The MCP server can manage cloud Drive paths without relying on a mounted local sync folder |\n| Safer mutations | Requires `confirm: true` for permanent delete, empty trash, logout, sharing removal, and invitation accept/reject | High-impact actions stay explicit |\n| Easy local install | Runs with `npx -y @borealstack/proton-drive-cli-mcp` and can managed-install the official CLI with SHA-512 verification | Users do not need to clone or build the repo to try it |\n\n## Quick Start\n\nAdd the server to any MCP client as a local stdio server:\n\n```json\n{\n  \"mcpServers\": {\n    \"proton-drive\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@borealstack/proton-drive-cli-mcp\"],\n      \"env\": {}\n    }\n  }\n}\n```\n\nThis is a stdio MCP server, so running the command directly in a terminal is\nexpected to show no prompt or banner. It waits for MCP JSON-RPC messages on\nstdin and writes responses on stdout.\n\nTo confirm package resolution from a shell, run the command outside this package\ncheckout:\n\n```powershell\nnpx -y @borealstack/proton-drive-cli-mcp\n```\n\nWhen developing from this repository, use the built local entry point instead:\n\n```powershell\nnpm run build\nnode dist/index.js\n```\n\nThen call `proton_drive_diagnose` or `proton_drive_setup`. If the CLI is not\nauthenticated, call `proton_drive_auth_login`, finish the browser sign-in, and\ncheck status again.\n\n## Install Paths\n\n| Client | Install option |\n| --- | --- |\n| Claude Code | `claude mcp add --transport stdio proton-drive -- npx -y @borealstack/proton-drive-cli-mcp` |\n| Claude Desktop | Use the stdio JSON above, or install the `.mcpb` bundle after the first release: [proton-drive-cli-mcp.mcpb](https://github.com/borealstack/proton-drive-cli-mcp/releases/latest/download/proton-drive-cli-mcp.mcpb) |\n| Codex | Plugin metadata is in [plugins/proton-drive-cli-mcp](plugins/proton-drive-cli-mcp) |\n| VS Code | `code --add-mcp \"{\\\"name\\\":\\\"proton-drive\\\",\\\"command\\\":\\\"npx\\\",\\\"args\\\":[\\\"-y\\\",\\\"@borealstack/proton-drive-cli-mcp\\\"]}\"` |\n| npm | [@borealstack/proton-drive-cli-mcp](https://www.npmjs.com/package/@borealstack/proton-drive-cli-mcp) after publication |\n\nThe MCPB and npm links become active after the first public release.\n\n## Requirements\n\n- Node.js 22+ for the published package and built server.\n- Bun 1.3+ for development and Bun test coverage.\n- The official Proton Drive CLI installed, or network access to Proton's CLI\n  download index.\n- A Proton account login completed by the official CLI, or browser access for\n  `proton_drive_auth_login`.\n\nThe server resolves the CLI in this order:\n\n1. `PROTON_DRIVE_CLI_PATH`\n2. The managed user-local install path\n3. `proton-drive` or `proton-drive.exe` in the current directory or common download paths\n4. `proton-drive` on `PATH`\n5. Auto-install from `https://proton.me/download/drive/cli/index.html`\n\nThe official CLI command name is `proton-drive`. Proton's downloaded binary can\nbe run from its download directory as `./proton-drive` on macOS/Linux or\n`.\\proton-drive.exe` on Windows. The managed installer uses\n`%LOCALAPPDATA%\\Programs\\proton-drive-cli\\proton-drive.exe` on Windows and\n`~/.local/bin/proton-drive` on macOS/Linux. On Windows it adds the managed\ninstall directory to the user PATH when possible, so new terminals can run\n`proton-drive version`.\n\nSet `PROTON_DRIVE_CLI_AUTO_INSTALL=0` to disable managed install. Set\n`PROTON_DRIVE_CLI_INSTALL_DIR` to override the managed install directory. Set\n`PROTON_DRIVE_CLI_MANAGE_PATH=0` to skip PATH management.\n\n## Tools\n\nCore tools:\n\n- Setup/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`\n- CLI: `proton_drive_cli_install`, `proton_drive_cli_version`, `proton_drive_cli_help`\n- Files: `proton_drive_list`, `proton_drive_list_async`, `proton_drive_info`, `proton_drive_create_folder`, `proton_drive_upload`, `proton_drive_upload_async`, `proton_drive_download`, `proton_drive_download_async`, `proton_drive_job_status`, `proton_drive_job_cancel`, `proton_drive_read_text`, `proton_drive_write_text`\n- Mutations: `proton_drive_rename`, `proton_drive_copy`, `proton_drive_move`, `proton_drive_trash`, `proton_drive_restore`, `proton_drive_delete`, `proton_drive_empty_trash`\n- Sharing: `proton_drive_sharing_status`, `proton_drive_sharing_invite`, `proton_drive_sharing_remove`, `proton_drive_sharing_set_url`, `proton_drive_sharing_remove_url`\n- Invitations: `proton_drive_invitation_list`, `proton_drive_invitation_accept`, `proton_drive_invitation_reject`\n\nPermanent delete, empty trash, logout, sharing removal, and invitation\naccept/reject require `confirm: true`.\n\nFull tool details are in [docs/TOOLS.md](docs/TOOLS.md).\n\n## Trust And Verification\n\n- The npm publish workflow is prepared for GitHub OIDC trusted publishing and\n  runs `npm publish --provenance`; npm package settings must authorize the\n  workflow before a future manual release.\n- Future GitHub releases build npm and MCPB assets, attach SHA-256 checksums,\n  and publish Sigstore-backed artifact attestations for those assets.\n- OpenSSF Scorecard runs from [scorecard.yml](.github/workflows/scorecard.yml)\n  and publishes SARIF results for public repository security signals.\n- Dependabot and CodeQL are configured for dependency updates and SAST coverage,\n  and GitHub Actions are pinned to commit SHAs with version comments.\n- MCP Registry metadata in [server.json](server.json) includes publisher-provided\n  categories, keywords, safety notes, and install details for downstream indexes.\n\n## Development\n\n```powershell\nbun install\nbun run typecheck\nbun test\nbun run build\nnpm test\n```\n\nDuring local development, run the server directly with Bun:\n\n```json\n{\n  \"mcpServers\": {\n    \"proton-drive-dev\": {\n      \"command\": \"bun\",\n      \"args\": [\"run\", \"<path-to-repo>/src/index.ts\"],\n      \"env\": {}\n    }\n  }\n}\n```\n\nRun `bun run smoke:cli` only when intentionally testing against a real logged-in\nProton Drive account.\n\n## Safety And Legal\n\nThis is an independent project and is not affiliated with Proton AG. Proton and\nProton Drive are Proton AG marks used only to identify interoperability with\nProton Drive and the official Proton Drive CLI.\n\nThe server delegates sign-in and session storage to the official CLI, and it\ndoes not request or store Proton credentials. Custom public-link passwords are\nnot accepted through MCP tool arguments because command-line arguments can be\nvisible to local process inspection.\n\nSee [LICENSE](LICENSE), [NOTICE](NOTICE), [DISCLAIMER.md](DISCLAIMER.md), and\n[SECURITY.md](SECURITY.md).\n\n## Support Discovery\n\nIf this helps you use Proton Drive from an MCP client, star the repository so\nother Proton users can find the maintained official-CLI wrapper:\n[borealstack/proton-drive-cli-mcp](https://github.com/borealstack/proton-drive-cli-mcp).\n\n## References\n\n- [Proton: Using Proton Drive CLI](https://proton.me/support/drive-cli)\n- [Proton blog: Introducing Proton Drive CLI](https://proton.me/blog/proton-drive-cli)\n- [Official CLI README](https://github.com/ProtonDriveApps/sdk/blob/main/js/cli/README.md)\n- [Model Context Protocol TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)\n","readmeFilename":"README.md"}