email-mcp
email-mcp
Correo electrónico y calendario mediante Outlook clásico en Windows, controlado a través de COM nativo (pywin32). Se distribuye como un único comando email que es a la vez una CLI y un servidor MCP stdio. Sin registro de aplicación en Azure, sin OAuth, sin PowerShell: simplemente controla el cliente de escritorio de Outlook en el que ya has iniciado sesión.
Requisitos
Windows 10/11
Outlook clásico de escritorio, configurado con al menos una cuenta
Python 3.10+ y
uv
El Outlook "nuevo" para Windows no expone COM. Si usas el nuevo Outlook y no puedes volver al clásico, esto no funcionará para ti.
Solo se accede a COM a través del cliente de escritorio de Outlook; no hay autenticación separada. La cuenta que haya iniciado sesión en Outlook es la que ve la herramienta, y el correo enviado llega a la carpeta Elementos enviados real exactamente como si lo hubieras enviado a mano.
Related MCP server: outlook-mcp
Instalar / Ejecutar
Ejecútalo directamente desde GitHub con uvx (sin clonar ni instalar manualmente):
uvx --from git+https://github.com/kerodkibatu/email-mcp email --helpuv resuelve y guarda en caché el paquete en la primera ejecución; las invocaciones posteriores son rápidas.
CLI
Cada herramienta es un subcomando de email. La salida es JSON en stdout.
# List configured Outlook accounts
uvx --from git+https://github.com/kerodkibatu/email-mcp email list-accounts
# Query across all mail folders with a MongoDB-style filter (JSON string)
uvx --from git+https://github.com/kerodkibatu/email-mcp email query \
--filter '{"$and":[{"from":{"$contains":"@kyros.com"}},{"unread":true}]}' \
--limit 20 --order-by received_desc
# Read one email by EntryID
uvx --from git+https://github.com/kerodkibatu/email-mcp email read --entry-id "0000000..."
# Send a new mail (account is REQUIRED — see below)
uvx --from git+https://github.com/kerodkibatu/email-mcp email send \
--to client@example.com \
--subject "Status update" \
--body "Heads up — ..." \
--account kerod@towlydigital.com
# Save a new mail as a draft instead of sending (same flags as send, no --send-as)
uvx --from git+https://github.com/kerodkibatu/email-mcp email draft \
--to client@example.com \
--subject "Status update" \
--body "Heads up — ..." \
--account kerod@towlydigital.comMCP
email mcp arranca un servidor MCP stdio que expone las 11 herramientas. Añádelo a tu .mcp.json (o claude_desktop_config.json):
{
"mcpServers": {
"email": {
"command": "uvx",
"args": ["--from", "git+https://github.com/kerodkibatu/email-mcp", "email", "mcp"]
}
}
}El primer arranque es más lento mientras uv resuelve el paquete; los arranques posteriores usan la caché.
Herramientas
Herramienta | Propósito |
| Lista las cuentas de Outlook configuradas |
| Consulta estilo MongoDB en todas las carpetas ( |
| Lee el cuerpo completo de un correo por EntryID |
| Envía un correo nuevo (opcionalmente desde una cuenta concreta, con archivos adjuntos) |
| Redacta un correo nuevo y lo guarda como borrador en lugar de enviarlo |
| Responde / Responde a todos a un correo |
| Reenvía un correo |
| Guarda los archivos adjuntos reales en |
| Activa Enviar/Recibir y espera brevemente a que los grupos de sincronización avancen |
| Cambia el estado leído/no leído |
| Lista los próximos eventos del calendario |
Elegir la cuenta de envío
send_email, reply_email y forward_email requieren un parámetro account: una subcadena del nombre de la cuenta de Outlook configurada (normalmente la dirección SMTP). Esto es intencionado: con varias cuentas configuradas (p. ej., personal + trabajo), usar por defecto la cuenta principal de Outlook es un tiro en el pie: así es como el correo personal se filtra desde una cuenta de trabajo o viceversa. Obligar a quien llama a indicar la cuenta hace que el envío sea explícito.
Si el account proporcionado no coincide con ninguna cuenta configurada (subcadena que no distingue mayúsculas/minúsculas), la herramienta devuelve un error y enumera las cuentas disponibles. Ejecuta list_accounts primero si aún no conoces el nombre. La cuenta de transporte se establece directamente en el elemento de Outlook mediante SendUsingAccount.
{
"to": "client@example.com",
"subject": "Status update",
"body": "Heads up — ...",
"account": "kerod@towlydigital.com"
}Enviar como (EXPERIMENTAL — se requiere el permiso "Enviar como" de Exchange)
EXPERIMENTAL. Esto controla Outlook clásico únicamente a través de pywin32 COM; no existe una vía Azure/OAuth. El comportamiento depende de la política del inquilino y puede rebotar, degradarse silenciosamente o dejar el mensaje en la Bandeja de salida. Trátalo como una operación de mejor esfuerzo.
send_email, reply_email y forward_email aceptan un parámetro opcional send_as: una dirección SMTP desde la que enviar. El destinatario ve esa dirección como remitente, sin indicación de "en nombre de". Esto es el verdadero Enviar como de Exchange, distinto de Enviar en nombre de.
Mecánicamente, la herramienta establece SendUsingAccount en la account que proporcionas (el buzón de transporte) y, a continuación, resuelve send_as contra Exchange y sobrescribe tanto las propiedades MAPI PR_SENT_REPRESENTING_* como PR_SENDER_* (mediante el PropertyAccessor del elemento) para que apunten a esa dirección antes de enviarlo. Sobrescribir las propiedades del remitente (no solo las de representación) es lo que convierte el "en nombre de" en un Enviar como puro. Exchange valida el permiso en el momento del envío.
Requisitos:
El usuario de
accountdebe tener permiso de Enviar como en el buzón desend_as, concedido en el servidor por un administrador de Exchange. La herramienta no puede conceder ni comprobar este permiso; solo puede intentar el envío.La dirección
send_asdebe ser resoluble por Exchange; normalmente se trata de un buzón del mismo inquilino. Las direcciones externas (gmail.com, etc.) fallarán al resolverla con un error.Si falta el permiso, el comportamiento depende de la política del inquilino: Exchange puede rebotar el mensaje, degradarlo silenciosamente a "en nombre de" o dejarlo en la Bandeja de salida.
Esta función solo funciona dentro de una organización de Exchange que la haya autorizado explícitamente. No se puede usar para suplantar a remitentes externos.
{
"to": "client@example.com",
"subject": "Status update",
"body": "Heads up — ...",
"account": "admin@custom.com",
"send_as": "contact@custom.com"
}La respuesta incluye un campo sent_as que refleja la dirección cuando se usó send_as.
Envío de archivos adjuntos
send_email acepta un array opcional attachments de rutas de archivo absolutas. Cada ruta debe existir y apuntar a un archivo normal; si alguna ruta no es válida, la herramienta devuelve un error que enumera las infractoras y no envía. En Windows se aceptan tanto la barra diagonal como la barra invertida; ~ y las variables de entorno no se expanden: pasa rutas completamente resueltas.
{
"to": "kerod@example.com",
"subject": "Signed contract",
"body": "See attached.",
"account": "kerod@towlydigital.com",
"attachments": [
"C:\\Users\\Kerod\\Desktop\\contract.pdf",
"C:/Users/Kerod/Desktop/cover-letter.pdf"
]
}Descarga de archivos adjuntos
La herramienta download_attachments extrae los archivos de un correo y los guarda localmente, devolviendo la ruta absoluta de la carpeta.
Ubicación: Los archivos se guardan en la carpeta de Descargas del usuario:
~/Downloads/email-attachments/YYYY-MM-DD_<sender>_<subject>/.Imágenes incrustadas: Los logotipos y las imágenes de firma se filtran de forma predeterminada para evitar el desorden. Establece
include_inline: truesi los necesitas específicamente.Idempotencia: Volver a ejecutar la herramienta sobre el mismo correo reutiliza la carpeta de forma segura (controlado mediante un marcador
.entry_id) y desambigua cuando dos correos distintos generan el mismo slug.
Cómo funciona
El comando email se conecta a una instancia de Outlook en ejecución mediante COM (recurriendo a iniciar una si no hay ninguna en ejecución) y, a continuación, controla el espacio de nombres MAPI para leer y escribir correo. Todo el acceso a COM pasa por una única sesión de Outlook; la herramienta nunca inicia PowerShell.
Esto significa:
Outlook debe estar instalado (no es necesario que esté abierto: la primera llamada lo iniciará)
La cuenta que haya iniciado sesión en Outlook es la que ve la herramienta: sin autenticación separada
El correo enviado aparece en la carpeta Elementos enviados del usuario exactamente como si lo hubiera enviado manualmente
Licencia
MIT — consulta LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityDmaintenanceA lightweight MCP server for personal Microsoft Outlook/Hotmail accounts, enabling email search, reading, attachment management, and folder operations via Microsoft Graph API with OAuth device-code flow.61
- AlicenseNot gradedqualityFmaintenanceMCP server for Outlook — enables AI assistants to access email, contacts, and calendars via Windows COM interface.1MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP-aware agents to interact with the classic Outlook desktop client for mail, calendar, contacts, tasks, and Out-of-Office settings via the COM API, without Azure or OAuth.14MIT
- AlicenseNot gradedqualityBmaintenanceTurns your running Outlook Desktop into an MCP server, enabling email, calendar, tasks, and attachment management through your existing Outlook session without any cloud APIs.AGPL 3.0
Related MCP Connectors
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kerodkibatu/email-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server