Proton Bridge MCP
Enables sending correctly threaded email replies through Proton Mail Bridge using SMTP with proper In-Reply-To and References headers, avoiding IMAP draft pitfalls.
README
Proton Bridge MCP
CLI and MCP server for sending correctly threaded replies through Proton Mail Bridge.
The main lesson encoded here is simple:
- Use Proton Bridge SMTP with explicit
In-Reply-ToandReferencesfor agent-sent replies. - Do not create same-thread reply drafts by IMAP
APPEND; Proton Bridge may rewrite those draft headers and the sent email can leave the original conversation. - Proton web/app reply composer is also safe because it creates the reply from the existing conversation.
Features
- Search message headers through Proton Bridge IMAP.
- Find a thread anchor by sender and subject.
- Send a threaded reply through Proton Bridge SMTP.
- Verify sent-message headers.
- Expose the same operations as MCP tools for coding agents.
- Sending tools are dry-run by default unless
confirm_sendis set.
Requirements
- Python 3.10+
- Proton Mail Bridge running locally
- Bridge IMAP enabled, usually
127.0.0.1:1143 - Bridge SMTP enabled, usually
127.0.0.1:1025
No third-party Python dependencies are required.
Configuration
Set the Bridge account and Bridge mailbox password:
export PROTON_BRIDGE_ACCOUNT="you@example.com"
export PROTON_BRIDGE_PASSWORD="your-bridge-mailbox-password"
PROTON_PW is also accepted for the password if you already use that name.
These are Proton Bridge credentials, not necessarily your Proton web password.
CLI Usage
From the repo root:
python3 -m krantiutils_proton.cli search \
--from-addr collaborator@example.com \
--subject-contains "Paper draft" \
--limit 3
Dry-run a threaded reply to the latest matching incoming message:
python3 -m krantiutils_proton.cli reply-latest \
--thread-from collaborator@example.com \
--subject-contains "Paper draft" \
--to collaborator@example.com \
--body-file /tmp/reply.txt \
--attach /tmp/paper.pdf
Actually send only after checking the dry-run output:
python3 -m krantiutils_proton.cli reply-latest \
--thread-from collaborator@example.com \
--subject-contains "Paper draft" \
--to collaborator@example.com \
--body-file /tmp/reply.txt \
--attach /tmp/paper.pdf \
--confirm-send
Verify sent headers:
python3 -m krantiutils_proton.cli verify-sent \
--to-addr collaborator@example.com \
--subject-contains "Paper draft" \
--limit 5
Send a controlled threading test to yourself:
python3 -m krantiutils_proton.cli thread-test \
--to you+thread-test@example.com \
--count 3 \
--confirm-send
MCP Server
Run:
./proton-bridge-mcp
Codex-style config:
[mcp_servers.proton_bridge]
command = "/absolute/path/to/proton-bridge-mcp/proton-bridge-mcp"
env = { PROTON_BRIDGE_ACCOUNT = "you@example.com" }
Set PROTON_BRIDGE_PASSWORD in the environment available to the MCP process.
Available tools:
proton_search_headersproton_latest_thread_anchorproton_send_emailproton_reply_to_latestproton_verify_sentproton_send_thread_test
Agent Workflow
For a thread-safe reply:
- Use
proton_latest_thread_anchorto find the latest incoming message in the target thread. - Inspect the returned
message_id,in_reply_to,references, sender, and subject. - Dry-run
proton_reply_to_latestwithoutconfirm_send. - Check recipient, subject, attachment paths, and the generated
In-Reply-To/References. - Send only after explicit user approval with
confirm_send: true. - Use
proton_verify_sentto confirm the sent copy kept thread headers.
Never claim an IMAP-created draft is definitely on the original thread unless
the stored draft has the expected In-Reply-To and References headers.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.