{"_id":"@darkroomhq/protonmail-mcp","_rev":"5-abfbe4f830bef6cfe249980d72580a99","name":"@darkroomhq/protonmail-mcp","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@darkroomhq/protonmail-mcp","version":"1.0.0","keywords":["mcp","protonmail","email","proton-bridge","imap","smtp"],"license":"MIT","_id":"@darkroomhq/protonmail-mcp@1.0.0","maintainers":[{"name":"dreuse","email":"dreuse@dreuse.dev"}],"bin":{"protonmail-mcp":"build/index.js"},"dist":{"shasum":"68234fa29a94bb4f82cc4682ebc7198f5240d459","tarball":"https://registry.npmjs.org/@darkroomhq/protonmail-mcp/-/protonmail-mcp-1.0.0.tgz","fileCount":33,"integrity":"sha512-H32KmumXsT8YOEdCS3nYXgVno0aFnK+crFwjq4+enpMP7WmP8DC/B9uP2HsklekEJTJJPgwDGHFDs+6kSStGXQ==","signatures":[{"sig":"MEYCIQDKI6v2/+X77kmcKEte0g+gmb+lEQWoZkJZNzyPS9urpAIhAIHFu+KKXI5r8rCT6+WlWN+HFEzNhjzE3btAE9mgoRv3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102448},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"4212f1b1e7a66e1c8eefc2d3e9374b65684738e4","scripts":{"dev":"tsc --watch","build":"tsc && chmod 755 build/index.js","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"dreuse","email":"dreuse@dreuse.dev"},"_npmVersion":"11.12.1","description":"MCP server for ProtonMail via Proton Bridge (SMTP + IMAP)","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.25.0","imapflow":"^1.0.0","mailparser":"^3.7.0","nodemailer":"^6.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^22.0.0","@types/nodemailer":"^6.4.0"},"_npmOperationalInternal":{"tmp":"tmp/protonmail-mcp_1.0.0_1776448297638_0.0921619432723435","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@darkroomhq/protonmail-mcp","version":"1.0.1","keywords":["mcp","protonmail","email","proton-bridge","imap","smtp"],"license":"MIT","_id":"@darkroomhq/protonmail-mcp@1.0.1","maintainers":[{"name":"dreuse","email":"dreuse@dreuse.dev"},{"name":"alfoltran","email":"alfoltran@pm.me"}],"homepage":"https://github.com/darkroomdevs/protonmail-mcp#readme","bugs":{"url":"https://github.com/darkroomdevs/protonmail-mcp/issues"},"bin":{"protonmail-mcp":"build/index.js"},"dist":{"shasum":"7cabef7050ffed43cd5eb5b5b900cd4d86b13824","tarball":"https://registry.npmjs.org/@darkroomhq/protonmail-mcp/-/protonmail-mcp-1.0.1.tgz","fileCount":33,"integrity":"sha512-CXEMm38dCbJEqWe9QCYxvelbHEnm2gqOy9FFS03MBlAyJEIbT1aebdGhKEBXROllJmIuSeM5Yd/qXd0S2HzKsQ==","signatures":[{"sig":"MEYCIQDVDZZkPlWuOkw1Z8+SVQz4ZCo4CW2jRE1HN+4K898XswIhAM/K2rhplNUV/ZNH2D4GHfn6r0JLWyvIkBdW+K3tChsf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@darkroomhq%2fprotonmail-mcp@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":104696},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"a10200fa1ec2f7c328fbad6b76dc681e45ab9896","scripts":{"dev":"tsc --watch","build":"tsc && chmod 755 build/index.js","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b8f34fd8-9cf2-47a0-8f69-06feb4a2c193"}},"repository":{"url":"git+https://github.com/darkroomdevs/protonmail-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for ProtonMail via Proton Bridge (SMTP + IMAP)","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.25.0","imapflow":"^1.0.0","mailparser":"^3.7.0","nodemailer":"^6.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^22.0.0","@types/nodemailer":"^6.4.0"},"_npmOperationalInternal":{"tmp":"tmp/protonmail-mcp_1.0.1_1776449817795_0.7516195211002346","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@darkroomhq/protonmail-mcp","version":"1.1.0","keywords":["mcp","protonmail","email","proton-bridge","imap","smtp"],"license":"MIT","_id":"@darkroomhq/protonmail-mcp@1.1.0","maintainers":[{"name":"dreuse","email":"dreuse@dreuse.dev"},{"name":"alfoltran","email":"alfoltran@pm.me"}],"homepage":"https://github.com/darkroomdevs/protonmail-mcp#readme","bugs":{"url":"https://github.com/darkroomdevs/protonmail-mcp/issues"},"bin":{"protonmail-mcp":"build/index.js"},"dist":{"shasum":"7f6f07558de6dc0cb13e0e21dd181800201ab33c","tarball":"https://registry.npmjs.org/@darkroomhq/protonmail-mcp/-/protonmail-mcp-1.1.0.tgz","fileCount":33,"integrity":"sha512-9qQhAs8HhYYx5OTKPYO9UebebLaf3UkJ2jiXNyAv3PbeabgBLrRXcb1eXD6DGCX9mhg5yJOjQCkGwWNkV6t7sQ==","signatures":[{"sig":"MEQCIC3FlRYcpz8P0ZrjdGtFLSQZQUFSUsDA2JpEgkzZRYHZAiBa5vIZcCMGzFPftmCndpP7QAO4rDJ9p4pk8NJG/XznhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@darkroomhq%2fprotonmail-mcp@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":157790},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"3bd16950ca5387a0830af10541f27e975ee2195a","scripts":{"dev":"tsc --watch","build":"tsc && chmod 755 build/index.js","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b8f34fd8-9cf2-47a0-8f69-06feb4a2c193"}},"repository":{"url":"git+https://github.com/darkroomdevs/protonmail-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for ProtonMail via Proton Bridge (SMTP + IMAP)","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.25.0","imapflow":"^1.0.0","mailparser":"^3.7.0","nodemailer":"^6.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^22.0.0","@types/nodemailer":"^6.4.0"},"_npmOperationalInternal":{"tmp":"tmp/protonmail-mcp_1.1.0_1776459289933_0.5111214613177417","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@darkroomhq/protonmail-mcp","version":"1.1.1","description":"MCP server for ProtonMail via Proton Bridge (SMTP + IMAP)","type":"module","license":"MIT","repository":{"type":"git","url":"git+https://github.com/darkroomdevs/protonmail-mcp.git"},"keywords":["mcp","protonmail","email","proton-bridge","imap","smtp"],"engines":{"node":">=18.0.0"},"publishConfig":{"access":"public"},"bin":{"protonmail-mcp":"build/index.js"},"scripts":{"build":"tsc && chmod 755 build/index.js","dev":"tsc --watch","start":"node build/index.js","prepublishOnly":"npm run build"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","nodemailer":"^8.0.5","imapflow":"^1.0.0","mailparser":"^3.7.0","zod":"^3.25.0"},"devDependencies":{"typescript":"^5.5.0","@types/node":"^22.0.0","@types/nodemailer":"^8.0.0"},"gitHead":"49fa5e298b7cb60d35a8ae8ac9b48975f0d9b478","_id":"@darkroomhq/protonmail-mcp@1.1.1","bugs":{"url":"https://github.com/darkroomdevs/protonmail-mcp/issues"},"homepage":"https://github.com/darkroomdevs/protonmail-mcp#readme","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-s7NSQzVIBltj0JzwLgRktitQAwGh1LVS06lgE0vBD7Yx4m2XyWj8WqXp+yAf7txmnPPessVzWR7YQgbimPHDDw==","shasum":"b09e85bcbf19e8bfa03724b564b22dc219efd829","tarball":"https://registry.npmjs.org/@darkroomhq/protonmail-mcp/-/protonmail-mcp-1.1.1.tgz","fileCount":33,"unpackedSize":157790,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@darkroomhq%2fprotonmail-mcp@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICzduJRwb7ilX8p+On/6r6kFhjmJpHZYZewjkljUY5ZvAiBZjj2UZQKb+9b/hbt/ExWhInX3Sa/+Fp1vO0Ett85Itg=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b8f34fd8-9cf2-47a0-8f69-06feb4a2c193"}},"directories":{},"maintainers":[{"name":"dreuse","email":"dreuse@dreuse.dev"},{"name":"alfoltran","email":"alfoltran@pm.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/protonmail-mcp_1.1.1_1776461388644_0.5645684385451621"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-17T17:51:37.516Z","modified":"2026-04-17T21:29:49.084Z","1.0.0":"2026-04-17T17:51:37.769Z","1.0.1":"2026-04-17T18:16:57.925Z","1.1.0":"2026-04-17T20:54:50.095Z","1.1.1":"2026-04-17T21:29:48.792Z"},"bugs":{"url":"https://github.com/darkroomdevs/protonmail-mcp/issues"},"license":"MIT","homepage":"https://github.com/darkroomdevs/protonmail-mcp#readme","keywords":["mcp","protonmail","email","proton-bridge","imap","smtp"],"repository":{"type":"git","url":"git+https://github.com/darkroomdevs/protonmail-mcp.git"},"description":"MCP server for ProtonMail via Proton Bridge (SMTP + IMAP)","maintainers":[{"name":"dreuse","email":"dreuse@dreuse.dev"},{"name":"alfoltran","email":"alfoltran@pm.me"}],"readme":"# @darkroomhq/protonmail-mcp\n\nMCP server that gives AI assistants full access to your ProtonMail account via [Proton Bridge](https://proton.me/mail/bridge). Read, send, search, and manage email through any MCP-compatible client.\n\n## Requirements\n\n- [Proton Bridge](https://proton.me/mail/bridge) running locally and signed in\n- Node.js 18+\n\n## Installation\n\n```bash\nnpm install -g @darkroomhq/protonmail-mcp\n```\n\nOr use without installing:\n\n```bash\nnpx @darkroomhq/protonmail-mcp\n```\n\n## Configuration\n\nAdd to your MCP client config (e.g. `claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"protonmail\": {\n      \"command\": \"protonmail-mcp\",\n      \"env\": {\n        \"PROTONMAIL_USERNAME\": \"your@protonmail.com\",\n        \"PROTONMAIL_PASSWORD\": \"bridge-app-password\"\n      }\n    }\n  }\n}\n```\n\nWith `npx` (no global install needed):\n\n```json\n{\n  \"mcpServers\": {\n    \"protonmail\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@darkroomhq/protonmail-mcp\"],\n      \"env\": {\n        \"PROTONMAIL_USERNAME\": \"your@protonmail.com\",\n        \"PROTONMAIL_PASSWORD\": \"bridge-app-password\"\n      }\n    }\n  }\n}\n```\n\n> **Note:** `PROTONMAIL_PASSWORD` is the Bridge app password shown in Proton Bridge, not your ProtonMail account password.\n\n### All environment variables\n\n| Variable | Required | Default | Description |\n| --- | --- | --- | --- |\n| `PROTONMAIL_USERNAME` | Yes | — | Your ProtonMail email address |\n| `PROTONMAIL_PASSWORD` | Yes | — | Proton Bridge app password |\n| `SMTP_HOST` | No | `127.0.0.1` | Bridge SMTP host |\n| `SMTP_PORT` | No | `1025` | Bridge SMTP port |\n| `IMAP_HOST` | No | `127.0.0.1` | Bridge IMAP host |\n| `IMAP_PORT` | No | `1143` | Bridge IMAP port |\n| `DEBUG` | No | `false` | Enable debug logging |\n\n## Tools\n\n| Tool | Description |\n| --- | --- |\n| `sendEmail` | Send an email with optional CC, BCC, HTML body, attachments, and priority |\n| `replyEmail` | Reply to an existing email by UID |\n| `listFolders` | List all mailboxes and folders |\n| `listEmails` | List emails with pagination (page-based or stable cursor via `beforeUid`) |\n| `readEmail` | Read email by UID (supports `headersOnly` and `maxBodyLength` for efficiency) |\n| `searchEmails` | Search by sender, subject, body, date range, read/flagged status (with cursor pagination) |\n| `bulkAction` | Bulk delete, move, mark read/unread, flag/unflag by criteria or UIDs (dry run by default) |\n| `markRead` | Mark an email as read |\n| `markUnread` | Mark an email as unread |\n| `flagEmail` | Star/flag an email |\n| `unflagEmail` | Remove star/flag from an email |\n| `moveEmail` | Move an email to another folder |\n| `deleteEmail` | Move an email to Trash |\n| `createFolder` | Create a new mail folder |\n| `deleteFolder` | Delete a mail folder |\n| `renameFolder` | Rename a mail folder |\n| `createLabel` | Create a new mail label |\n| `deleteLabel` | Delete a mail label |\n| `renameLabel` | Rename a mail label |\n| `connectionStatus` | Check SMTP and IMAP connection health |\n\n## Example prompts\n\n### Read & summarize\n\n- \"Summarize my unread emails from this week.\"\n- \"Read the latest email from alice and tell me what she's asking for.\"\n\n### Search\n\n- \"Find all emails about the Q2 report from the last 30 days.\"\n- \"Search for any flagged emails in my Sent folder.\"\n\n### Send & reply\n\n- \"Send an email to bob letting him know the meeting is moved to Thursday at 3pm.\"\n- \"Reply to the last email from the design team and ask for the updated mockups.\"\n\n### Bulk operations\n\n- \"Delete all emails from IGN in my inbox.\"\n- \"Mark all unread newsletters as read.\"\n- \"Move all emails from noreply@github.com to the GitHub folder.\"\n- \"How many flagged emails do I have from the last month?\" (uses dry run)\n\n### Organize\n\n- \"Move all newsletters from my inbox to the Newsletters folder.\"\n- \"Flag the three most recent emails from my manager.\"\n- \"Delete all emails in the Spam folder.\"\n- \"Create a folder called 'Receipts' and move all purchase confirmations there.\"\n- \"Create a label called 'Urgent' for emails that need immediate attention.\"\n- \"Rename the 'Old Projects' folder to 'Archive'.\"\n\n### Status\n\n- \"Check if Proton Bridge is connected.\"\n\n## Performance tips\n\n- **Cursor pagination**: Use `beforeUid` (returned as `nextCursor`) instead of `page` for stable pagination that isn't affected by new emails arriving between requests.\n- **Headers only**: Use `headersOnly: true` on `readEmail` to skip downloading the full message body — useful when you only need metadata.\n- **Body truncation**: Use `maxBodyLength` on `readEmail` to cap body size (e.g. `2000` chars) and avoid large responses from email-heavy messages.\n- **Bulk actions**: Use `bulkAction` with search `criteria` instead of looping over individual emails. It runs a single IMAP SEARCH + a single bulk command, regardless of how many emails match.\n- **Dry run**: `bulkAction` defaults to `dryRun: true` — preview affected emails before committing destructive operations.\n\n## Development\n\n```bash\nnpm install\nnpm run build   # compile TypeScript\nnpm run dev     # watch mode\n```\n","readmeFilename":"README.md"}