loading…
Search for a command to run...
loading…
Enables full Proton Mail management through the Model Context Protocol by connecting to a local Proton Mail Bridge instance. It allows users to list, search, re
Enables full Proton Mail management through the Model Context Protocol by connecting to a local Proton Mail Bridge instance. It allows users to list, search, read, send, and organize emails using natural language commands.
A complete TypeScript Model Context Protocol (MCP) server for Proton Mail integration via Proton Mail Bridge.
This MCP server provides full email management capabilities through Claude Code by connecting to Proton Mail Bridge running locally. It allows you to:
npm install
Copy the environment template and add your Proton credentials:
cp .env.example .env
Edit .env with your settings:
PROTON_IMAP_HOST=127.0.0.1
PROTON_IMAP_PORT=1143
PROTON_SMTP_HOST=127.0.0.1
PROTON_SMTP_PORT=1025
[email protected]
PROTON_PASS=your-bridge-password
npm run build
npm run dev
Or run the compiled version:
npm start
Add this MCP server to your Claude settings (~/.claude/settings.json):
{
"mcpServers": {
"proton": {
"command": "node",
"args": ["/path/to/proton-mcp-server/dist/index.js"],
"env": {
"PROTON_USER": "[email protected]",
"PROTON_PASS": "your-bridge-password",
"PROTON_IMAP_HOST": "127.0.0.1",
"PROTON_IMAP_PORT": "1143",
"PROTON_SMTP_HOST": "127.0.0.1",
"PROTON_SMTP_PORT": "1025"
}
}
}
}
Or with TypeScript/tsx:
{
"mcpServers": {
"proton": {
"command": "npx",
"args": ["tsx", "/path/to/proton-mcp-server/src/index.ts"]
}
}
}
proton-mcp-server/
├── src/
│ ├── index.ts # Main entry point
│ ├── constants.ts # Configuration constants
│ ├── types.ts # TypeScript interfaces
│ ├── schemas/
│ │ └── index.ts # Zod input schemas
│ ├── services/
│ │ ├── imap.ts # IMAP client wrapper
│ │ └── smtp.ts # SMTP client wrapper
│ └── tools/
│ ├── folders.ts # proton_list_folders
│ ├── list.ts # proton_list_emails
│ ├── search.ts # proton_search_emails
│ ├── read.ts # proton_read_email
│ ├── send.ts # proton_send_email
│ ├── reply.ts # proton_reply_email
│ ├── move.ts # proton_move_email
│ └── delete.ts # proton_delete_email
├── package.json
├── tsconfig.json
├── .env.example
├── .gitignore
└── README.md (this file)
imapflow library with STARTTLS on port 1143tls.rejectUnauthorized: falselogout() in finally blocksnodemailer with STARTTLS on port 1025In-Reply-To and References headers for email threadingmailparser to extract full message contentprotonmail-bridge --clitelnet 127.0.0.1 1143 (IMAP) and 1025 (SMTP).env filenode --versionnpm clean-installnpm run build@modelcontextprotocol/sdk — MCP protocol implementationimapflow — IMAP client for email readingnodemailer — SMTP client for sending emailsmailparser — Email parsing and content extractionzod — Input validation schemasdotenv — Environment variable loadingMIT
For issues with Proton Mail Bridge, see: https://proton.me/support/bridge
For MCP protocol documentation, see: https://modelcontextprotocol.io
Add this to claude_desktop_config.json and restart Claude Desktop.
{
"mcpServers": {
"proton-mcp-server": {
"command": "npx",
"args": []
}
}
}