Servidor MCP de procesamiento de correo electrónico
Este servidor MCP proporciona capacidades de procesamiento de correo electrónico con integración MongoDB para búsqueda semántica y SQLite para almacenamiento y recuperación eficientes.
Características
- Procesamiento de correos electrónicos desde Outlook con filtrado de intervalos de fechas
- Almacenamiento de correos electrónicos en base de datos SQLite con gestión de conexiones adecuada
- Generación de incrustaciones vectoriales mediante Ollama
- Soporte multi-buzón
- Compatibilidad con las carpetas Bandeja de entrada, Elementos enviados y, opcionalmente, Elementos eliminados
Próximas funciones
- Búsqueda de correos electrónicos con funciones semánticas
- Resumen de correos electrónicos mediante LLM
- Categorización automática de correos electrónicos
- Informes de correo personalizables
- Opciones avanzadas de filtrado
- Redacción de respuestas de correo electrónico de Outlook
- Sugerencias de reglas de Outlook
- Opciones ampliadas de bases de datos con integración de Neo4j y ChromaDB
Requisitos previos
- Python 3.10 o superior
- Ollama ejecutándose localmente (para incrustaciones)
- Microsoft Outlook instalado
- Sistema operativo Windows (para la integración de Outlook)
- Servidor MongoDB (para almacenar las incrustaciones)
Instalación
- Instale uv (si no está ya instalado):
pip install uv
- Crear un entorno virtual:
uv venv .venv
Activar el entorno virtual:
Windows:
.venv\Scripts\activar
macOS/Linux:
source .venv/bin/activate
Instalar dependencias:
uv pip install -e
- Instalar el paquete fastmcp:
uv pip install fastmcp
- Asegúrese de que Ollama se está ejecutando localmente con los modelos requeridos:
ollama pull nomic-embed-text
Configuración
Añada el servidor a su archivo de configuración de Claude for Desktop:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{ "mcpServers": { "outlook-email": { "command": "C:/Users/username/path/to/mcp-server-outlook-email/.venv/Scripts/python", "args": [ "C:/Usuarios/nombre_de_usuario/ruta/para/mcp-servidor-mirador-correo/src/mcp_server.py" ], "env": { "MONGODB_URI": "mongodb://localhost:27017/MCP?authSource=admin", "SQLITE_DB_PATH": "C:\Users\username\path\to\mcp-server-outlook-email\data\emails.db", "EMBEDDING_BASE_URL": "http://localhost:11434", "EMBEDDING_MODEL": "nomic-embed-text", "COLLECTION_NAME": "outlook-emails", "PROCESS_DELETED_ITEMS": "false" } } }
Seguimiento y supervisión
El servidor ha sido diseñado para soportar soluciones externas de seguimiento y monitorización. La implementación de registro de MCP se ha eliminado intencionadamente en favor de un enfoque de seguimiento más sólido que se implementará por separado.
Nota: No intente volver a implementar el sistema de registro anterior. En el futuro se proporcionará una nueva solución de seguimiento.
Explicación de los campos de configuración:
comando
: Ruta completa al ejecutable de Python en su entorno virtualargs
: Matriz que contiene la ruta completa al script del servidor MCPenv
: Variables de entorno para la configuraciónMONGODB_URI
: Cadena de conexión a MongoDBSQLITE_DB_PATH
: Ruta absoluta al archivo de base de datos SQLiteEMBEDDING_BASE_URL
: URL del servidor OllamaEMBEDDING_MODEL
: Modelo a utilizar para las incrustacionesLLM_MODEL
: Modelo a utilizar para las operaciones LLMNOMBRE_COLECCIÓN
: Nombre de la colección MongoDB a utilizar (obligatorio)PROCESS_DELETED_ITEMS
: Si procesar correos electrónicos de la carpeta Elementos eliminados (opcional, por defecto: "false")
disabled
: Si el servidor está deshabilitado (debe ser false)alwaysAllow
: Conjunto de herramientas que no requieren confirmación del usuarioautoApprove
: Conjunto de herramientas que pueden ser auto-aprobadas
Sustituya las rutas por las rutas reales de su sistema. Tenga en cuenta que las rutas de Windows en la sección env
deben usar doble barra invertida.
Herramientas disponibles
1. procesar_correos_electrónicos
Procesa los correos electrónicos de un intervalo de fechas especificado:
{ "fecha_inicio": "2024-01-01", # fecha con formato ISO (AAAA-MM-DD) "end_date": "2024-02-15", # fecha con formato ISO (AAAA-MM-DD) "mailboxes": ["Todos"] # Lista de nombres de buzones o ["Todos"] para todos los buzones }
La herramienta
- Conectarse a los buzones de Outlook especificados
- Recuperar correos electrónicos de las carpetas Bandeja de entrada y Elementos enviados (y Elementos eliminados si está activado)
- Almacenar los correos electrónicos en una base de datos SQLite
- Generar incrustaciones utilizando Ollama
- Almacenar las incrustaciones en MongoDB para la búsqueda semántica
Ejemplo de uso en Claude
"Procesar los correos electrónicos del 1 al 17 de febrero de todos los buzones"
Arquitectura
El servidor utiliza un enfoque de búsqueda híbrido:
Base de datos SQLite para:
- Almacenamiento primario de correo electrónico
- Capacidad de búsqueda de texto completo
- Seguimiento del estado de procesamiento
- Filtrado eficaz
- El directorio se crea automáticamente si no existe
- Las conexiones se cierran correctamente para evitar el bloqueo de la base de datos
MongoDB para:
- Almacenamiento de incrustaciones vectoriales
- Búsqueda por similitud semántica
- Filtrado de metadatos
- Recuperación eficiente
- Las conexiones se cierran correctamente después de su uso
Gestión de errores
El servidor proporciona mensajes de error detallados para los problemas más comunes:
- Formatos de fecha no válidos
- Problemas de conexión con Outlook
- Errores de MongoDB
- Errores de generación de incrustaciones con lógica de reintento
- Errores de almacenamiento SQLite
- Problemas de conexión con el servidor Ollama con reintentos automáticos
Gestión de recursos
El servidor implementa una gestión de recursos adecuada para evitar problemas:
- Las conexiones a bases de datos (SQLite y MongoDB) se mantienen abiertas durante la vida del servidor para evitar errores de "No se puede operar en una base de datos cerrada"
- Las conexiones sólo se cierran cuando el servidor se apaga, usando un manejador atexit
- Se utilizan destructores y gestores de contexto para garantizar que las conexiones se cierran cuando los objetos se recogen de la basura
- La gestión de conexiones está diseñada para equilibrar el uso de recursos con la fiabilidad operativa
- Lógica de reintento robusta para servicios externos como Ollama para gestionar problemas temporales de conexión
Notas de seguridad
- El servidor sólo procesa los correos electrónicos de los buzones especificados
- Todos los datos se almacenan localmente (SQLite) y en MongoDB
- No hay llamadas a API externas excepto al servidor local de Ollama
- Requiere la aprobación explícita del usuario para procesar el correo electrónico
- No se exponen datos sensibles de correo electrónico a través de la interfaz MCP
Depuración
En caso de problemas
- Compruebe que los correos electrónicos se han procesado correctamente (compruebe la respuesta process_emails)
- Asegúrese de que el servidor Ollama se está ejecutando para la generación de incrustaciones
- Compruebe que la base de datos SQLite es accesible
- Compruebe que la conexión MongoDB funciona correctamente