Traitement des courriels - MCP Server sécurisé par ALMC Security 2025

Traitement des courriels

Voir sur GitHub

MseeP.ai Security Assessment Badge

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

  1. Installez uv (si ce n'est pas déjà fait) :
pip install uv
  1. Créez un environnement virtuel :
uv venv .venv
  1. Activer l'environnement virtuel :

    Windows :

    .venv\Scripts\activate

    macOS/Linux :

    source .venv/bin/activate
  2. Installer les dépendances :

uv pip install -e
  1. Installer le paquet fastmcp :
uv pip install fastmcp
  1. 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 virtuel
  • args: Tableau contenant le chemin complet du script du serveur MCP
  • env: Variables d'environnement pour la configuration
    • MONGODB_URI: Chaîne de connexion à MongoDB
    • SQLITE_DB_PATH: Chemin absolu vers le fichier de base de données SQLite
    • EMBEDDING_BASE_URL: URL du serveur Ollama
    • EMBEDDING_MODEL: Modèle à utiliser pour les embeddings
    • LLM_MODEL: Modèle à utiliser pour les opérations LLM
    • COLLECTION_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'utilisateur
  • autoApprove: 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 :

  1. Se connecter aux boîtes aux lettres Outlook spécifiées
  2. 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)
  3. Stocker les courriels dans une base de données SQLite
  4. Générer des embeddings à l'aide d'Ollama
  5. 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 :

  1. 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
  2. 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 :

  1. Vérifier que les emails ont été traités avec succès (vérifier la réponse process_emails)
  2. S'assurer que le serveur Ollama est en cours d'exécution pour la génération d'embedded
  3. Vérifier que la base de données SQLite est accessible
  4. Vérifier que la connexion MongoDB fonctionne correctement

Liés dans Communication - MCP Servers sécurisés

ServeurRésuméActions
Serveur Coreflux MQTT MCPIl s'agit d'un serveur Model Context Protocol (MCP) qui se connecte à un courtier Coreflux MQTT et r...Voir
Aligo SMSVoir
Serveur Dixa MCPUne implémentation de serveur FastMCP pour l'API Dixa, fournissant des ressources et des outils pour...Voir
Le temps d'antenne parlant de l'Afrique MCPVoir
Clash of ClansVoir
DingTalk钉钉的 Model Context Protocol (MCP) 服务器实现,使 Claude 能够与钉钉工作空间进行交互。Voir