Serveur MCP de traitement du courrier électronique
Ce serveur MCP offre des capacités de traitement du courrier électronique avec l'intégration de MongoDB pour la recherche sémantique et de SQLite pour un stockage et une récupération efficaces.
Caractéristiques
- Traitement des courriels provenant d'Outlook avec filtrage des plages de dates
- Stockage des courriels dans une base de données SQLite avec une gestion appropriée des connexions
- Génération d'embeddings vectoriels à l'aide d'Ollama
- Prise en charge de plusieurs boîtes aux lettres
- Prise en charge des dossiers Boîte de réception, Éléments envoyés, et optionnellement Éléments supprimés
Fonctionnalités à venir
- Recherche d'emails avec capacités sémantiques
- Résumés d'emails utilisant les LLMs
- Catégorisation automatique des courriels
- Rapports d'emails personnalisables
- Options de filtrage avancées
- Réponses aux courriels de rédaction d'Outlook
- Suggestions de règles Outlook
- Options de base de données étendues avec l'intégration de Neo4j et ChromaDB
Conditions préalables
- Python 3.10 ou supérieur
- Ollama exécuté localement (pour les embeddings)
- Microsoft Outlook installé
- Système d'exploitation Windows (pour l'intégration d'Outlook)
- Serveur MongoDB (pour le stockage des embeddings)
Installation de l'application
- Installez uv (si ce n'est pas déjà fait) :
pip install uv
- Créez un environnement virtuel :
uv venv .venv
Activer l'environnement virtuel :
Windows :
.venv\Scripts\activate
macOS/Linux :
source .venv/bin/activate
Installer les dépendances :
uv pip install -e
- Installer le paquet fastmcp :
uv pip install fastmcp
- Assurez-vous qu'Ollama fonctionne localement avec les modèles requis :
ollama pull nomic-embed-text
Configuration
Ajoutez le serveur à votre fichier de configuration Claude for Desktop :
- Windows :
%APPDATA%\Claudeclaude_desktop_config.json
- macOS :
~/Bibliothèque/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:/Users/username/path/to/mcp-server-outlook-email/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" } } }
Traçage et surveillance
Le serveur a été conçu pour prendre en charge des solutions externes de suivi et de surveillance. L'implémentation de la journalisation MCP a été intentionnellement supprimée en faveur d'une approche de traçage plus robuste qui sera implémentée séparément.
Note : N'essayez pas de réimplémenter l'ancien système de journalisation. Une nouvelle solution de traçage sera fournie à l'avenir.
Explication des champs de configuration :
command
: Chemin complet de l'exécutable Python dans votre environnement virtuelargs
: Tableau contenant le chemin complet du script du serveur MCPenv
: Variables d'environnement pour la configurationMONGODB_URI
: Chaîne de connexion à MongoDBSQLITE_DB_PATH
: Chemin absolu vers le fichier de base de données SQLiteEMBEDDING_BASE_URL
: URL du serveur OllamaEMBEDDING_MODEL
: Modèle à utiliser pour les embeddingsLLM_MODEL
: Modèle à utiliser pour les opérations LLMCOLLECTION_NAME
: Nom de la collection MongoDB à utiliser (obligatoire)PROCESS_DELETED_ITEMS
: Indique s'il faut traiter les courriels provenant du dossier Éléments supprimés (facultatif, valeur par défaut : "false")
disabled
: Indique si le serveur est désactivé (doit être "false")alwaysAllow
: Tableau des outils qui ne nécessitent pas de confirmation de la part de l'utilisateurautoApprove
: Tableau d'outils qui peuvent être approuvés automatiquement
Remplacez les chemins d'accès par les chemins d'accès réels de votre système. Notez que les chemins Windows dans la section env
doivent utiliser des doubles barres obliques inverses.
Outils disponibles
1. process_emails
Traite les courriels à partir d'une plage de dates spécifiée :
{ "start_date" : "2024-01-01", # date au format ISO (AAAA-MM-JJ) "end_date" : "2024-02-15", # Date au format ISO (AAAA-MM-JJ) "boîtes aux lettres" : ["All"] # Liste de noms de boîtes aux lettres ou ["All"] pour toutes les boîtes aux lettres }
L'outil va :
- Se connecter aux boîtes aux lettres Outlook spécifiées
- Récupérer les courriels des dossiers Boîte de réception et Éléments envoyés (et Éléments supprimés si l'option est activée)
- Stocker les courriels dans une base de données SQLite
- Générer des embeddings à l'aide d'Ollama
- Stocker les embeddings dans MongoDB pour la recherche sémantique
Exemple d'utilisation dans Claude
"Traiter les courriels du 1er au 17 février de toutes les boîtes aux lettres
Architecture du serveur
Le serveur utilise une approche de recherche hybride :
Base de données SQLite pour :
- Stockage primaire des courriels
- Capacités de recherche en texte intégral
- Le suivi de l'état du traitement
- Un filtrage efficace
- Le répertoire est créé automatiquement s'il n'existe pas
- Les connexions sont correctement fermées pour éviter le verrouillage de la base de données
MongoDB pour :
- Stockage d'embeddings vectoriels
- Recherche de similarité sémantique
- Filtrage des métadonnées
- Recherche efficace
- Les connexions sont correctement fermées après utilisation
Gestion des erreurs
Le serveur fournit des messages d'erreur détaillés pour les problèmes courants :
- Formats de date non valides
- Problèmes de connexion avec Outlook
- Erreurs MongoDB
- Échecs de la génération de l'intégration avec la logique de réessai
- Erreurs de stockage SQLite
- Problèmes de connexion au serveur Ollama avec tentatives automatiques
Gestion des ressources
Le serveur met en œuvre une gestion des ressources appropriée pour éviter les problèmes :
- Les connexions aux bases de données (SQLite et MongoDB) sont maintenues ouvertes pendant toute la durée de vie du serveur afin d'éviter les erreurs de type "Cannot operate on a closed database" (Impossible d'opérer sur une base de données fermée)
- Les connexions ne sont fermées que lorsque le serveur s'arrête, à l'aide d'un gestionnaire atexit
- Les destructeurs et les gestionnaires de contexte sont utilisés comme solution de repli pour s'assurer que les connexions sont fermées lorsque les objets sont mis au rebut
- La gestion des connexions est conçue pour équilibrer l'utilisation des ressources et la fiabilité opérationnelle
- Logique de relance robuste pour les services externes tels qu'Ollama afin de gérer les problèmes de connexion temporaires
Notes de sécurité
- Le serveur ne traite que les courriels provenant des boîtes aux lettres spécifiées
- Toutes les données sont stockées localement (SQLite) et dans MongoDB
- Pas d'appels d'API externes sauf vers le serveur local Ollama
- L'approbation explicite de l'utilisateur est requise pour le traitement des courriels
- Aucune donnée sensible n'est exposée à travers l'interface MCP
Débogage
Si vous rencontrez des problèmes :
- Vérifier que les emails ont été traités avec succès (vérifier la réponse process_emails)
- S'assurer que le serveur Ollama est en cours d'exécution pour la génération d'embedded
- Vérifier que la base de données SQLite est accessible
- Vérifier que la connexion MongoDB fonctionne correctement