pyfastmail-mcp
Servidor MCP para Fastmail: correo electrónico, contactos, calendarios y archivos a través de JMAP, CardDAV, CalDAV y WebDAV
Documentación
pyfastmail-mcp
Un servidor MCP que brinda a los asistentes de IA acceso completo a tu cuenta de Fastmail: correo electrónico, contactos, calendarios y almacenamiento de archivos.
⚠️ Este servidor puede enviar correos electrónicos, eliminar mensajes y modificar contactos/calendarios en tu nombre. Los asistentes de IA pueden actuar sobre contenido de fuentes no confiables (correos electrónicos, páginas web, archivos) que podrían contener ataques de inyección de prompts. Revisa las llamadas a herramientas antes de aprobarlas, especialmente acciones que envíen correos o eliminen datos.
Características
| Dominio | Protocolo | Herramientas |
|---|---|---|
| Correo | JMAP | Enviar, responder, reenviar, buscar, leer, fijar, archivar, palabras clave, correo enmascarado, adjuntos, hilos, importar/exportar, identidades |
| Contactos | JMAP | Listar libretas de direcciones, CRUD de contactos, consulta |
| Calendario | CalDAV | Listar calendarios, CRUD de eventos (opcional — requiere contraseña de aplicación) |
| Archivos | WebDAV | Listar, subir, descargar, mover, eliminar, crear carpetas (opcional — requiere contraseña de aplicación) |
Instalación
pip install pyfastmail-mcp
O ejecuta directamente con uvx:
uvx pyfastmail-mcp
Configuración
1. Obtén las credenciales de Fastmail
Necesitas un token de API de Fastmail. Una contraseña de aplicación es opcional (solo se necesita para calendario y almacenamiento de archivos).
- Token de API (requerido — correo y contactos): Configuración de Fastmail → Privacidad y seguridad → Tokens de API — habilita la capacidad
urn:ietf:params:jmap:contacts - Contraseña de aplicación (opcional — calendarios y archivos): Configuración de Fastmail → Privacidad y seguridad → Contraseñas de aplicación — crea una con el alcance "DAV (CardDAV, CalDAV, WebDAV)"
Si solo configuras el token de API, el servidor se inicia con las herramientas de correo y contactos. Las herramientas de calendario y archivos se registran solo cuando también se proporciona la contraseña de aplicación.
2. Configura las variables de entorno
export FASTMAIL_API_TOKEN="fmu1-..."
export FASTMAIL_APP_PASSWORD="your-app-password"
export FASTMAIL_EMAIL="you@fastmail.com"
3. Añádelo a tu cliente MCP
Para Claude Desktop, añade a claude_desktop_config.json:
{
"mcpServers": {
"fastmail": {
"command": "uvx",
"args": ["pyfastmail-mcp"],
"env": {
"FASTMAIL_API_TOKEN": "fmu1-...",
"FASTMAIL_APP_PASSWORD": "your-app-password",
"FASTMAIL_EMAIL": "you@fastmail.com"
}
}
}
}
Para Kiro CLI, añade a .kiro/settings/mcp.json:
{
"mcpServers": {
"fastmail": {
"command": "uvx",
"args": ["pyfastmail-mcp"],
"env": {
"FASTMAIL_API_TOKEN": "${FASTMAIL_API_TOKEN}",
"FASTMAIL_EMAIL": "${FASTMAIL_EMAIL}",
"FASTMAIL_APP_PASSWORD": "${FASTMAIL_APP_PASSWORD}"
}
}
}
}
Herramientas
Correo (mail_*)
| Herramienta | Descripción |
|---|---|
health_check | Verificar conexión y autenticación |
mail_list_mailboxes | Listar todas las bandejas de entrada (carpetas/etiquetas) |
mail_create_mailbox | Crear una bandeja de entrada |
mail_rename_mailbox | Renombrar una bandeja de entrada |
mail_delete_mailbox | Eliminar una bandeja de entrada |
mail_get_email | Obtener correo por ID (con encabezados opcionales) |
mail_get_recent_emails | Obtener correos recientes |
mail_search_emails | Buscar por consulta |
mail_search_snippets | Fragmentos resaltados de resultados de búsqueda |
mail_get_email_thread | Obtener hilo completo |
mail_mark_email_read | Marcar como leído/no leído |
mail_pin_email | Fijar/desfijar (marcar/estrella) |
mail_move_email | Mover a bandeja de entrada |
mail_delete_email | Mover a la papelera o eliminar permanentemente |
mail_archive_email | Archivar |
mail_manage_email_labels | Añadir/eliminar palabras clave |
mail_export_email | Descargar archivo .eml sin procesar |
mail_import_email | Importar .eml al almacén de correo |
mail_parse_email | Analizar un blob como correo sin importar |
mail_list_identities | Listar identidades de envío |
mail_set_identity | Crear/actualizar/eliminar identidades |
mail_send_email | Enviar nuevo correo |
mail_reply_to_email | Responder al correo |
mail_forward_email | Reenviar correo |
mail_list_masked_emails | Listar correos enmascarados |
mail_create_masked_email | Crear correo enmascarado |
mail_update_masked_email | Actualizar estado, dominio, descripción o URL del correo enmascarado |
mail_download_attachment | Descargar adjunto |
mail_upload_attachment | Subir blob para envío |
Contactos (contacts_*)
| Herramienta | Descripción |
|---|---|
contacts_list_address_books | Listar libretas de direcciones |
contacts_list | Listar contactos (combinación de consulta y obtención) |
contacts_get_contact | Obtener contacto(s) por ID |
contacts_query_contacts | Consultar contactos con filtros y ordenación |
contacts_create_contact | Crear contacto |
contacts_update_contact | Actualizar campos de contacto |
contacts_delete_contact | Eliminar contacto(s) |
Calendario (calendar_*)
| Herramienta | Descripción |
|---|---|
calendar_list_calendars | Listar calendarios |
calendar_list_events | Listar eventos |
calendar_get_event | Obtener detalles del evento |
calendar_create_event | Crear evento |
calendar_update_event | Actualizar evento |
calendar_delete_event | Eliminar evento |
Archivos (files_*)
| Herramienta | Descripción |
|---|---|
files_list | Listar archivos/carpetas |
files_get | Descargar archivo |
files_upload | Subir archivo |
files_create_folder | Crear carpeta |
files_move | Mover/renombrar archivo |
files_delete | Eliminar archivo/carpeta |
Desarrollo
git clone https://github.com/pjosols/pyfastmail-mcp.git
cd pyfastmail-mcp
uv sync --group dev
uv run pytest
Licencia
MIT