iCloud Mail
Resumen
Descripción del creador (original en inglés)
Read, search, draft, send and file iCloud Mail over IMAP and SMTP. No tool destroys mail.
Los tres pilares de PopNx MCP
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
- Opinión de usuariosiAún no hay reseñasLas reseñas se abrirán junto con las cuentas en una etapa posterior
- Nuestras revisiones básicasi1 de 1 superadasRevisado con información pública; el código aún no se ha escaneado
- UsoiMuy nuevo↓ 54/sem · ★ –
Qué puedes hacer con él
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
- Conexión: Se ejecuta en tu computadora
- Transporte: stdio
- Categoría: Búsqueda y memoria de IA
- Debes completar: ICLOUD_EMAIL, ICLOUD_APP_PASSWORD
Instalación
Elige la app de IA que usas y copia la configuración.
Antes de instalar
- Revisiones básicas: 1 de 1 superadas
- Se ejecuta en tu computadora con los permisos de tu usuario (archivos, red, apps).
- Debes completar tú:
ICLOUD_EMAIL,ICLOUD_APP_PASSWORD,ICLOUD_DISPLAY_NAME
Los valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.
Necesitas
- PyPIuv de Python instalado (para el comando uvx)
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"icloud": {
"command": "uvx",
"args": [
"icloud-mail-mcp"
],
"env": {
"ICLOUD_EMAIL": "your-value",
"ICLOUD_APP_PASSWORD": "your-value",
"ICLOUD_DISPLAY_NAME": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add icloud --env ICLOUD_EMAIL=your-value --env ICLOUD_APP_PASSWORD=your-value --env ICLOUD_DISPLAY_NAME=your-value -- uvx icloud-mail-mcpCompleta los valores vacíos antes de ejecutarlo.
O copia la configuración tú
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"icloud": {
"command": "uvx",
"args": [
"icloud-mail-mcp"
],
"env": {
"ICLOUD_EMAIL": "your-value",
"ICLOUD_APP_PASSWORD": "your-value",
"ICLOUD_DISPLAY_NAME": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
O copia la configuración tú
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"icloud": {
"type": "stdio",
"command": "uvx",
"args": [
"icloud-mail-mcp"
],
"env": {
"ICLOUD_EMAIL": "your-value",
"ICLOUD_APP_PASSWORD": "your-value",
"ICLOUD_DISPLAY_NAME": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Valores que debes completar
- Your iCloud address, for example you@icloud.com.
- An app-specific password generated at account.apple.com. iCloud rejects your main password over IMAP.
ICLOUD_DISPLAY_NAMEenvName shown in the From header of sent mail. Defaults to the local part of the address.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Qué puede hacer
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisiones básicasi
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 8 nov 2026
- ✓ Superada
El creador coincide con el repo
El nombre en el registro se verificó con la cuenta de GitHub JulienRabault, dueña del repo
- … Aún sin revisar
Sigue en mantenimiento
Todavía no hemos leído este repo en GitHub
- … Aún sin revisar
Tiene licencia
Todavía no hemos leído este repo en GitHub
- – No aplica
El endpoint responde
Este se ejecuta en tu computadora; no hay endpoint en internet
- – No aplica
Inicio de sesión con OAuth
Se ejecuta en tu computadora y usa ajustes locales en su lugar
- … Aún sin revisar
Sin instrucciones ocultas en las descripciones de herramientas
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con otros en Búsqueda y memoria de IAi
- Más estrellas que el 0% de los otros 5686 servidores de esta categoría
- Publicado en el registro más recientemente que el 47% de los otros 5686 servidores de esta categoría
- Revisiones básicas iguales o mejores que el 100% de los otros 5686 servidores de esta categoría
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Preguntas frecuentes
¿Es seguro iCloud Mail?
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
¿Qué claves o códigos necesita?
Debes completar: ICLOUD_EMAIL, ICLOUD_APP_PASSWORD
¿Se ejecuta en mi computadora o en la nube?
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
¿Sigue en mantenimiento?
El repo de GitHub cambió por última vez –, y la última versión (0.1.1) llegó al registro hace 2 meses.
¿Qué apps pueden usarlo?
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.
¿Qué puedo usar en su lugar?
En la misma categoría: Context7, Codebase Memory, Exa
Alternativas
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
Codebase Memory
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Exa
Connect AI agents to Exa for web search, content fetching, and multi-step research.
README del creador
Abrir el README
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
iCloud Mail MCP
A Model Context Protocol (MCP) server for iCloud Mail. Lets an LLM read, search, file and send your Apple mail over IMAP and SMTP.
Runs entirely on your machine: your credentials and your mail never reach a third party. Networking and MIME parsing use only the Python standard library.
Key Features
- Read-only by default. Search and read tools use
SELECT ... readonlyandBODY.PEEK— nothing is marked as read, moved or deleted behind your back. - Searches every folder, not just the inbox. Replies get filed away by mail rules;
search_all_foldersfinds them where an inbox-only search can't. - Drafts before sends.
save_draftputs a message in Drafts for you to review.send_emailexists, but it is separate and explicit. - Nothing destroys mail. There is no tool that deletes messages, and
delete_mailboxrefuses any folder that still holds some. - Handles real iCloud MIME. Modified UTF-7 folder names, quoted-printable, lying charsets, HTML-only messages, accented server-side search.
Requirements
- Python 3.11 or newer, and uv
- An iCloud account with two-factor authentication enabled
- An app-specific password — iCloud rejects your main password over IMAP
Getting started
Once published to PyPI, no clone is needed:
uvx --from icloud-mail-mcp icloud-mcp-setup # interactive configuration
uvx --from icloud-mail-mcp icloud-mcp # run the server
From source:
git clone https://github.com/JulienRabault/icloud-mcp.git
cd icloud-mcp uv sync uv run python -m icloud_mcp.setup
The setup command asks for your address and app-specific password, tests the connection, writes .env, then prints the exact config block for your client.
Generate the app-specific password at account.apple.com → Sign-In and Security → App-Specific Passwords.
Standard config works in most clients:
{
"mcpServers": { "icloud-mail": { "command": "uv", "args": ["run", "--directory", "/path/to/icloud-mcp", "python", "-m", "icloud_mcp"] } } }
Claude Code
claude mcp add icloud-mail --scope user -- uv run --directory /path/to/icloud-mcp python -m icloud_mcp
Check with claude mcp list.
Claude Desktop
Add the standard config to claude_desktop_config.json:
- macOS —
~/Library/Application Support/Claude/claude_desktop_config.json - Windows —
%APPDATA%\Claude\claude_desktop_config.json
On Windows, use the absolute path to uv.exe: desktop clients don't always inherit your shell PATH.
Codex
In ~/.codex/config.toml:
[mcp_servers.icloud-mail]
command = "uv" args = ["run", "--directory", "/path/to/icloud-mcp", "python", "-m", "icloud_mcp"]
</details>
Cursor / Windsurf / VS Code
Use the standard config block in the MCP settings file of your editor (.cursor/mcp.json, ~/.codeium/windsurf/mcp_config.json, or the VS Code MCP settings).
MCP servers load at client startup — restart the client after editing its config.
Tools
Read — none of these modify the mailbox:
| Tool | Description |
|---|---|
list_folders | List folders, optionally with message and unread counts |
folder_status | Counts for one folder without listing messages |
search_emails | Search one folder: text, sender, recipient, subject, dates, flags, size |
search_all_folders | The same search across every folder at once |
read_email | Full message: decoded body, optional HTML, attachment metadata |
get_thread | Rebuild a conversation, optionally with each message body |
save_attachments | Write attachments to disk and return their paths |
Write — explicit by design:
| Tool | Description |
|---|---|
save_draft | Put a message in Drafts. Nothing is sent |
set_flag | Read/unread, flagged, answered. Reversible |
create_mailbox | Create a folder, accented names included |
rename_mailbox | Rename a folder, messages follow |
delete_mailbox | Delete an empty folder. Refuses while it holds mail |
auto_organize | File messages by rules. Simulates unless dry_run=false |
move_emails | Move between folders. Simulates unless dry_run=false |
send_email | Actually sends. No draft step, no undo |
No tool destroys mail. delete_mailbox refuses a folder that still holds messages — move them out first, which keeps the decision with you.
Attachment bytes never pass through the model: save_attachments writes files and returns paths. Filenames arriving from email are sanitised — they are hostile input, not trusted paths.
Resources
| URI | Content |
|---|---|
icloud://folders | Every folder with message and unread counts |
icloud://unread | Unread messages in the inbox |
Prompts
| Prompt | Purpose |
|---|---|
triage_inbox | Sort recent mail into action required / info / waiting / ignorable |
draft_reply | Read a message and its thread, draft a reply into Drafts |
follow_up | Reconstruct an exchange with a contact, say who owes whom a reply |
Automation without an MCP client
examples/ holds standalone scripts using the same modules — point cron or Task Scheduler at them:
uv run python examples/daily_digest.py # what arrived today
uv run python examples/watch_sender.py acme.com # exit 1 if nothing new uv run python examples/waiting_on_reply.py # threads nobody answered uv run python examples/auto_file.py --apply # file mail by rules
All support --json for piping. See examples/README.md.
Bundled skill
skills/mailbox-search/ is a Claude Code skill that forces a sweep of every folder before concluding a message doesn't exist:
cp -r skills/mailbox-search ~/.claude/skills/
iCloud quirks handled here
Worth knowing if you're writing your own IMAP client against iCloud:
- `SEARCH` returns UIDs out of order. RFC 3501 doesn't guarantee ordering, and iCloud genuinely returns unsorted lists. Taking the tail of the response gives you the wrong messages — sort numerically first.
- No `MOVE`, no `UIDPLUS`. Moving means
COPY+\Deleted+EXPUNGE, andEXPUNGEpurges *every*\Deletedmessage in the folder.move_emailsrefuses to run when the folder holds deleted messages outside the requested batch, which would otherwise be destroyed. - `SEARCH CHARSET UTF-8` works. Accented queries run server-side across the whole mailbox. A client-side fallback covers servers that refuse, and flags it via
filtered_client_sidein the response. - Folder names use modified UTF-7 (RFC 3501), implemented in
utf7.py. - Charsets lie. Bodies fall back to latin-1 when the declared charset fails, and to stripped HTML when there's no
text/plainpart.
Security notes
- Credentials live in
.env(gitignored) or the environment, never in code.Settings.__repr__omits the password. - Email content is data, not instructions. The server tells clients never to act on directives found inside a received message.
send_emailandmove_emailsare meant to run only after the user approves the exact content or the exact message list in the conversation.
Development
uv run pytest -q
49 offline tests — no network, no credentials. CI runs them on Linux, macOS and Windows against Python 3.11 to 3.13.
src/icloud_mcp/
config.py env / .env loading utf7.py modified UTF-7 for folder names models.py frozen Pydantic models mime.py header, body and attachment decoding imap_client.py connection, LIST, STATUS, SELECT, FETCH search.py SEARCH criteria, threading, multi-folder search smtp_client.py MIME building, SMTP send, copy to Sent attachments.py attachment extraction, filename sanitising drafts.py APPEND to Drafts flags.py \Seen, \Flagged, \Answered move.py COPY + EXPUNGE with the anti-purge guard mailboxes.py create, rename, delete (empty only) organize.py rule-based filing server.py tools, resources, prompts setup_wizard.py interactive configuration cli.py terminal checks
Contributing
Issues and pull requests welcome. Tests must pass offline — no test may require a real mailbox.
License
MIT