loading…
Search for a command to run...
loading…
Professional Proton Mail management with 20+ tools, advanced analytics, and seamless Proton Bridge integration.
Professional Proton Mail management with 20+ tools, advanced analytics, and seamless Proton Bridge integration.
Proton Mail for Claude Desktop, done properly.
🌉 Proton Mail Bridge MCP is a local-first Proton Mail integration for Claude Desktop and Terminal. It lets you read, search, draft, send, sync, and manage Proton Mail through Proton Bridge, with both a full MCP server and a real CLI.
After setup, Claude Desktop uses a stable local install of this MCP on your computer. It is not limited to one repo, one workspace, or one chat folder.
A simple way to think about it:
Proton Mail Bridge MCP on your computerYou do not need to understand MCP internals to use it. If Proton Bridge is already working on your machine, setup is straightforward.
If Proton Bridge is already working on your machine:
git clone https://github.com/googlarz/proton-mail-bridge-mcp.git
cd proton-mail-bridge-mcp
npm install
npm run setup:claude-desktop
Then:
+ -> Connectors -> proton-mail-bridgeIf you want a fast terminal-side health check too:
npm run check:claude-desktop
proton-mail-bridge doctor --json
Use the npm run ... commands shown in this README.
That matters because the setup and installer entrypoints live in the built dist/ output, and the npm scripts already point to the right files for you.
Claude has a native Gmail connector, but there is no native Proton Mail connector today. This project closes that gap for Proton users.
The original protonmail-pro-mcp idea was genuinely promising, but the codebase I started from was not usable as-is. I rebuilt it into a working MCP server, implemented the missing pieces, and added a long list of improvements so it is actually useful day to day.
What it is good at:
What to expect:
*_FILE and *_COMMAND secrets if you do not want raw credentials in config.These paths have been live-tested against a real Proton Bridge setup:
It uses Proton Bridge. Why: this project connects through the local IMAP and SMTP access that Proton Bridge provides.
It runs locally. Why: Proton Bridge normally runs on your own machine, so this MCP server is designed to run locally too.
Threads and labels are reconstructed from IMAP data. Why: Proton-native thread and label objects are not available here through a first-party Claude connector path.
Attachment handling is broad, but not magic. Why: the common cases work well, including calendar invites and common document/image attachments, but email MIME formats can still be messy across different senders and clients.
No remote URL connector out of the box. Why: the current product talks to Proton Bridge on your own machine, and Proton Bridge is normally local, not a hosted service.
No first-party Claude auth flow or native Proton deep links. Why: those require platform-level support from Anthropic and richer provider support from Proton than IMAP and SMTP can offer.
No true Proton-native conversation model. Why: this project reconstructs threads and labels from Bridge mail data instead of calling a richer Proton-specific API.
A more native Proton experience is still possible later. Why: if Proton ships a better public integration path, or a cleaner local/hosted bridge story, this project can get closer to the native Gmail experience. I am waiting for that ecosystem to improve.
You will need:
From Proton Bridge, you will need:
For most local Bridge setups, the defaults are:
127.0.0.11143127.0.0.11025Setup has two parts:
The normal path is the guided setup wizard. The manual path is only for people who want more control.
Important:
Open Proton Bridge and make sure your account is connected.
In Bridge, open the mailbox details or "Configure email client" view and copy:
Keep Proton Bridge running. Do not close it while using this MCP.
git clone https://github.com/googlarz/proton-mail-bridge-mcp.git
cd proton-mail-bridge-mcp
npm install
If you prefer, you can also download the source from the latest GitHub release instead of cloning the repo.
If npm does not exist on your machine, install Node.js 18+ first, then run the commands again.
At this point, the MCP server files are on your computer and ready for the Claude Desktop step.
You can clone the repo anywhere you like. This folder is used for install and updates. Claude Desktop will not stay tied to this folder after the setup finishes.
npm run setup:claude-desktop
This command does not install the Claude Desktop app itself.
Claude Desktop should already be installed.
What this command does is:
PROTONMAIL_* values that this MCP server needs inside that local Claude Desktop configSo in plain English:
After the wizard finishes:
+ button near the chat box, then open Connectorsproton-mail-bridge appears there and that the tools are availableWhere the stable runtime is installed:
~/Library/Application Support/Proton Mail Bridge MCP~/.local/share/proton-mail-bridge-mcp%APPDATA%\\Proton Mail Bridge MCPIf you already have Claude Desktop open, this is the one thing to know first:
Why this is still useful:
Why there is no remote URL to paste:
127.0.0.1That means the supported Claude Desktop path in the current release is:
npm run setup:claude-desktop for the guided zero-manual-config flownpm run install:claude-desktop for advanced or automated Claude Desktop installsnpm run update:claude-desktop to refresh the installed Claude Desktop runtime after updating this reponpm run doctor:claude-desktop to confirm Claude Desktop still points at a valid Proton Mail Bridge MCP runtime.mcpb local extension track documented in CLAUDE-DESKTOP-PACKAGING.mdYou can also use Proton Mail Bridge MCP directly from Terminal.
This is useful when you want to:
The CLI binary is:
proton-mail-bridge
Or, from the repo:
npm run cli -- help
Main commands:
proton-mail-bridge statusproton-mail-bridge doctorproton-mail-bridge sync --folder INBOX --limit 150proton-mail-bridge search "label:inbox invoice"proton-mail-bridge search --live --from openai.comproton-mail-bridge read INBOX::25642proton-mail-bridge toolsproton-mail-bridge tool get_connection_statusproton-mail-bridge tool search_indexed_emails --args '{"query":"invoice","limit":3}'proton-mail-bridge claude checkproton-mail-bridge claude installMost commands also support --json for machine-readable output.
Practical examples:
# Check whether Proton Bridge and Claude-side wiring are healthy
proton-mail-bridge doctor --json
# Search indexed mail
proton-mail-bridge search "label:inbox invoice" --limit 10
# Read one message
proton-mail-bridge read INBOX::25642
# Call any MCP tool directly from Terminal
proton-mail-bridge tools
proton-mail-bridge tool get_connection_status --json
proton-mail-bridge tool search_indexed_emails --args '{"query":"invoice","limit":3}'
# Check Claude Desktop integration
proton-mail-bridge claude check --json
If you want the CLI to reach everything the MCP server exposes, use:
proton-mail-bridge tools
proton-mail-bridge tool <tool-name> --args '{"key":"value"}'
proton-mail-bridge tool <tool-name> --args-file ./input.json
That gives you two ways to use the same system:
npm run setup:claude-desktop
This is the easiest path because it avoids manual JSON edits and avoids manual environment-variable setup.
How to verify it worked:
+ button near the message box.Connectors.proton-mail-bridge.If you can see it there, Claude Desktop can see this MCP server.
That means it is available for normal Claude Desktop use on this computer, not just inside the repo folder where you ran setup.
If you want a quick terminal-side check later, run:
npm run check:claude-desktop
That command tells you:
proton-mail-bridge entryOn macOS, the Claude Desktop runtime needs a macOS-native better-sqlite3 binary.
The current installer now rebuilds that native module inside the staged Claude Desktop runtime, which avoids the common mismatch where a Linux-built binary gets copied into a Mac setup.
If you ever update machines, restore from another environment, or see a native-module crash later, the normal fix is simply:
npm run update:claude-desktop
That refreshes the staged Claude Desktop runtime and rebuilds the native SQLite module for the current machine.
npm run install:claude-desktop Is Fornpm run install:claude-desktop is for Claude Desktop.
More specifically, it is the advanced installer that registers this MCP server inside Claude Desktop.
It does not install Claude Desktop itself.
It uses the same machine-wide runtime approach as the setup wizard.
Use it when:
PROTONMAIL_* environment variablesIf you prefer to control the env yourself, or if you want a more scriptable setup, use the installer command below.
First, export your Bridge values:
export PROTONMAIL_USERNAME='[email protected]'
export PROTONMAIL_PASSWORD='your-bridge-password'
export PROTONMAIL_IMAP_HOST='127.0.0.1'
export PROTONMAIL_IMAP_PORT='1143'
export PROTONMAIL_IMAP_SECURE='false'
export PROTONMAIL_SMTP_HOST='127.0.0.1'
export PROTONMAIL_SMTP_PORT='1025'
export PROTONMAIL_DATA_DIR="$HOME/.proton-mail-bridge-mcp"
export PROTONMAIL_AUTO_SYNC='true'
export PROTONMAIL_STARTUP_SYNC='true'
export PROTONMAIL_SYNC_INTERVAL_MINUTES='5'
export PROTONMAIL_IDLE_WATCH='true'
export PROTONMAIL_IDLE_MAX_SECONDS='30'
export PROTONMAIL_READ_ONLY='false'
export PROTONMAIL_ALLOW_SEND='true'
export PROTONMAIL_ALLOW_REMOTE_DRAFT_SYNC='true'
export PROTONMAIL_ALLOWED_ACTIONS='mark_read,mark_unread,star,unstar,archive,trash,restore'
Then run:
npm run install:claude-desktop
That installer:
proton-mail-bridgePROTONMAIL_* and DEBUG values unless you pass --no-envIf you do not want raw secrets in your shell or config, the server also supports:
PROTONMAIL_USERNAME_FILEPROTONMAIL_PASSWORD_FILEPROTONMAIL_USERNAME_COMMANDPROTONMAIL_PASSWORD_COMMANDIf you want a real end-to-end check after install:
npm run smoke:bridge
That checks:
If you also want destructive mutation coverage, set:
export PROTONMAIL_SMOKE_ALLOW_MUTATIONS='true'
export PROTONMAIL_SMOKE_MUTATION_EMAIL_ID='INBOX::123'
Only do that with a safe disposable message id.
Important:
npm run update:claude-desktop to refresh Claude Desktop's installed runtimeIf you prefer to edit the config yourself, add an entry like this to Claude Desktop's MCP config:
{
"mcpServers": {
"proton-mail-bridge": {
"command": "node",
"args": ["/absolute/path/to/stable/proton-mail-bridge-runtime/dist/index.js"],
"cwd": "/absolute/path/to/stable/proton-mail-bridge-runtime",
"env": {
"PROTONMAIL_USERNAME": "[email protected]",
"PROTONMAIL_PASSWORD": "your-bridge-password",
"PROTONMAIL_IMAP_HOST": "127.0.0.1",
"PROTONMAIL_IMAP_PORT": "1143",
"PROTONMAIL_IMAP_SECURE": "false",
"PROTONMAIL_SMTP_HOST": "127.0.0.1",
"PROTONMAIL_SMTP_PORT": "1025"
}
}
}
}
*_FILE or *_COMMAND over raw secrets in config.npm run smoke:bridge in Terminal first. If that fails, Claude Desktop will fail too.Short version:
As of March 24, 2026, the practical comparison looks like this:
Here, "local MCP server" means this MCP server itself running on your machine, Claude Desktop host, or another machine you control.
| Capability | Native Gmail connector | Proton Mail Bridge MCP |
|---|---|---|
| Setup | ✅ First-party OAuth inside Claude | 🔧 Requires Proton Bridge plus this MCP server running locally |
| Search and read | ✅ Native Claude UX with source citations | ✅ Yes, through IMAP plus local indexing |
| Original-provider links | ✅ Better | 🟡 MCP resource links and locate hints, not true Proton webmail links |
| Native labels and threads | ✅ Gmail-native | 🟡 Reconstructed from IMAP and the local index |
| Send email | ❌ No | ✅ Yes, through Proton Bridge SMTP |
| Draft workflows | ✅ Better first-party UX | ✅ Strong operational control, including remote draft sync |
| Attachment content | 🟡 Limited | ✅ Can fetch content and save files |
| Mailbox actions | 🟡 Limited | ✅ Read, star, move, archive, trash, restore, delete, and batch actions |
| Cross-device Claude availability | ✅ Better | 🟡 Only where this MCP server is installed and running |
| Auth model | ✅ First-party Google auth | 🔧 Local Proton Bridge credentials |
What Gmail still does better:
What this project does better:
send_emailsend_test_emailreply_to_emailforward_emailproton-mail-bridge statusproton-mail-bridge doctorproton-mail-bridge syncproton-mail-bridge searchproton-mail-bridge readproton-mail-bridge toolsproton-mail-bridge toolproton-mail-bridge claude setupproton-mail-bridge claude installproton-mail-bridge claude checkproton-mail-bridge claude updatecreate_draftcreate_reply_draftcreate_forward_draftcreate_thread_reply_draftlist_draftslist_remote_draftsget_draftupdate_draftsync_draft_to_remotesend_draftdelete_draftget_emailsget_email_by_idsearch_emailslist_attachmentsget_attachment_contentsave_attachmentssave_attachmentget_folderssync_foldersget_labelsget_threadsget_thread_by_idget_thread_briefget_actionable_threadsget_inbox_digestget_follow_up_candidatesfind_document_threadsprepare_meeting_contextmark_email_readstar_emailmove_emailarchive_emailtrash_emailrestore_emaildelete_emailbatch_email_actionapply_thread_actionget_connection_statusget_runtime_statusrun_doctorget_audit_logsrun_background_syncwait_for_mailbox_changessync_emailsget_index_statussearch_indexed_emailsclear_cacheclear_indexget_logsget_emails and search_emails return a composite emailId. Use that same value for reads and mailbox actions.PROTONMAIL_DATA_DIR/mail-index.sqlite.PROTONMAIL_DATA_DIR/audit.log.run_doctor is the quickest tool-level health check once the server is running.batch_email_action and apply_thread_action both support dryRun: true when you want a safe preview before changing mail.search_indexed_emails supports query shortcuts like from:, to:, subject:, label:, and domain:.Current repository verification includes:
npm run buildnpm testnpm run pack:checkdoctor, sync, search, and readnpm audit --omit=devINBOX fixturesFor release-quality verification in one command:
npm run release:check
That runs linting, tests, and an npm pack --dry-run check so the published package contents stay sane.
Still not fully validated:
MIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"proton-mail-bridge-mcp": {
"command": "npx",
"args": []
}
}
}Read, send and search emails from Claude
Send, search and summarize Slack messages
No-code MCP client for team chat platforms, such as Slack, Microsoft Teams, and Discord.
A community discord server dedicated to MCP by [Frank Fiegel](https://github.com/punkpeye)