Skip to content

Serveur MCP

Nid inclut un serveur Model Context Protocol (MCP) qui permet aux assistants IA (Claude, GitHub Copilot, etc.) d'interagir avec l'application.


Qu'est-ce que MCP ?

Le Model Context Protocol est un standard ouvert qui permet aux LLM d'accéder à des outils et des données depuis des applications externes. Le serveur MCP de Nid expose des outils en lecture et en écriture pour manipuler vos mails, règles, jobs et archives.


Démarrage

Build

bash
cd backend
npm run build:mcp

Lancement

bash
npm run start:mcp

Le serveur MCP utilise le transport stdio (entrée/sortie standard) — il est conçu pour être lancé par un client MCP (comme Claude Desktop ou VS Code).


Configuration avec Claude Desktop

Ajoutez cette configuration dans claude_desktop_config.json :

json
{
  "mcpServers": {
    "nid": {
      "command": "node",
      "args": ["/chemin/vers/nid/backend/dist/mcp-server.js"],
      "env": {
        "DATABASE_URL": "postgres://user:pass@localhost:5432/nid",
        "JWT_SECRET": "votre-secret",
        "JWT_REFRESH_SECRET": "votre-refresh-secret",
        "GOOGLE_CLIENT_ID": "votre-client-id",
        "GOOGLE_CLIENT_SECRET": "votre-client-secret",
        "GOOGLE_REDIRECT_URI": "http://localhost:4000/api/auth/gmail/callback"
      }
    }
  }
}

Configuration avec VS Code

Dans .vscode/mcp.json :

json
{
  "servers": {
    "nid": {
      "type": "stdio",
      "command": "node",
      "args": ["backend/dist/mcp-server.js"],
      "env": {
        "DATABASE_URL": "postgres://user:pass@localhost:5432/nid",
        "JWT_SECRET": "votre-secret",
        "JWT_REFRESH_SECRET": "votre-refresh-secret",
        "GOOGLE_CLIENT_ID": "votre-client-id",
        "GOOGLE_CLIENT_SECRET": "votre-client-secret",
        "GOOGLE_REDIRECT_URI": "http://localhost:4000/api/auth/gmail/callback"
      }
    }
  }
}

Outils disponibles

Consultation

OutilDescription
list-usersListe tous les utilisateurs
list-accountsListe les comptes Gmail d'un utilisateur
search-archived-mailsRecherche full-text dans les archives
get-dashboard-statsStatistiques d'un compte (mails, taille, PJ)
list-rulesListe les règles automatiques
list-jobsListe les jobs récents avec filtres
list-notificationsNotifications non lues
list-saved-searchesListe les recherches sauvegardées
get-sender-scoresTop expéditeurs pollueurs
search-attachmentsRecherche dans les pièces jointes
get-audit-logJournal d'audit
get-inbox-zero-progressHistorique inbox zero
get-cleanup-suggestionsSuggestions de nettoyage
get-dedup-statsStatistiques de déduplication des PJ

Actions

OutilDescription
toggle-ruleActiver/désactiver une règle
create-ruleCréer une règle automatique avec conditions et actions
update-ruleModifier une règle existante
delete-ruleSupprimer une règle
run-ruleExécuter immédiatement une règle
create-notificationCréer une notification / alerte pour un utilisateur
mark-notifications-readMarquer les notifications comme lues
create-saved-searchCréer une recherche sauvegardée (dossier intelligent)
update-saved-searchModifier une recherche sauvegardée
delete-saved-searchSupprimer une recherche sauvegardée

Ressources

RessourceURIDescription
Configurationconfig://appParamètres de l'application (sans secrets)

Exemples d'utilisation

Avec un assistant IA connecté au serveur MCP :

« Montre-moi les statistiques de mon compte Gmail principal »

« Quels sont mes 10 expéditeurs les plus pollueurs ? »

« Recherche les pièces jointes PDF de plus de 5 Mo »

« Quelles suggestions de nettoyage sont disponibles ? »

« Désactive la règle de nettoyage des notifications GitHub »

« Crée une règle pour archiver automatiquement les mails de newsletter non lus depuis plus de 30 jours »

« Crée une recherche sauvegardée "Factures récentes" avec la requête label:factures newer_than:1m »

« Envoie-moi une alerte quand le quota Gmail approche de la limite »


Sécurité

  • Le serveur MCP accède directement à la base de données — il nécessite les mêmes variables d'environnement que le backend
  • Il n'y a pas d'authentification MCP intégrée : la sécurité repose sur le contrôle d'accès au processus stdio
  • Les outils en lecture seule sont annotés readOnlyHint: true
  • Aucun secret (tokens Gmail, mots de passe) n'est exposé via les outils MCP