Aller au contenu principal

Plugin pour Claude Code

Le plugin Campbooks pour Claude Code connecte votre agent de programmation à votre boîte de réception via MCP. Une fois installé, deux skills font le gros du travail : /campbooks:setup vous guide dans l'intégration et /campbooks:triage exécute votre session quotidienne de boîte de réception.

Installer

Dans une session Claude Code :

/plugin marketplace add notacamp/campbooks
/plugin install campbooks@campbooks

Claude Code vous demandera deux choses :

  1. URL du serveur Campbookshttps://app.campbooks.not-a-camp.com pour Campbooks Cloud, ou l'URL de votre propre instance (sans barre oblique finale).
  2. Clé MCP — une accréditation sans expiration ; voir ci-dessous.

Créer la clé MCP

Les tokens OAuth de courte durée expirent au bout de deux heures et ne peuvent pas être utilisés dans une configuration d'agent statique. Une clé MCP reste valide jusqu'à ce que vous la fassiez pivoter ou la supprimiez.

  1. Dans votre instance Campbooks, ouvrez Paramètres → Accès à l'API et cliquez sur Nouveau client.
  2. Donnez-lui un nom — « Agent Claude Code » convient bien.
  3. Sélectionnez les scopes dont il a besoin (voir ci-dessous), puis cliquez sur Créer.
  4. Sur la page suivante, vous verrez la clé MCP : une chaîne unique de la forme <client-id>.<client-secret>. Copiez-la maintenant — elle n'est affichée qu'une seule fois. Si vous la perdez, regénérez le client secret depuis la même page Paramètres.
  5. Collez la clé dans le champ mcp_key de la configuration du plugin.

Pour faire pivoter la clé ultérieurement : allez dans Paramètres → Accès à l'API, trouvez le client et regénérez son secret. L'ancienne clé cesse de fonctionner immédiatement.

Ensembles de scopes

Les scopes constituent un plafond sur ce que l'agent peut faire. Scope plus restreint = moins d'outils dans tools/list = moins de contexte utilisé par session. Choisissez ce dont vous avez vraiment besoin.

Ensemble complet (recommandé pour les utilisateurs avancés) :

emails:read emails:write emails:send
tags:read tags:write
documents:read documents:write
document_types:read document_types:write
contacts:read contacts:write
calendar:read calendar:write
reminders:read reminders:write
tasks:read tasks:write
folders:read folders:write
email_accounts:read email_accounts:write
scout:read scout:write
scheduled_emails:read scheduled_emails:write

Triage uniquement (lecture + skim, sans envoi) :

emails:read emails:write
tags:read documents:read calendar:read tasks:read reminders:read

Lecture seule (requêtes uniquement, sans modifications) :

emails:read documents:read calendar:read tasks:read

Les trois outils de contexte — get_overview, get_setup_status et guide — ne nécessitent aucun scope et sont toujours disponibles pour tout client authentifié.

Skills

Le plugin comprend deux skills que vous pouvez invoquer directement dans une session Claude Code.

/campbooks:setup — intégration guidée

Exécutez-la la première fois, ou chaque fois que le plugin ne se connecte pas. Elle vous guide pas à pas :

  1. Vérifier la connexion MCP — appelle get_setup_status. Si l'appel échoue, elle vous guide pour créer le client API et coller la clé MCP.
  2. Connecter une boîte aux lettres — si aucun compte e-mail n'est encore connecté, elle demande si vous êtes sur Campbooks Cloud ou si vous gérez votre propre instance :
    • Chemin Cloud : appelle connect_email_account(mode: "web") et vous donne l'URL OAuth à ouvrir dans un navigateur. Attendez que le flux OAuth se termine, puis confirmez.
    • Chemin auto-hébergé : propose le script d'assistance OAuth local (voir OAuth local ci-dessous).
  3. Traitement IA — indique votre configuration IA actuelle et propose d'activer l'IA gérée ou vous oriente vers Paramètres → IA pour une clé personnalisée.
  4. Taxonomie — si vous n'avez encore aucun type de document, étiquette ou dossier, elle demande quel type de travail gère la boîte de réception et propose un ensemble de départ (pour votre approbation avant toute création).
  5. Première session de skim — charge le jeu de skim, vous montre les principaux clusters et vous guide dans les premières décisions.

La skill ne crée jamais rien sans un « oui » explicite de votre part.

/campbooks:triage — session quotidienne de boîte de réception

Exécutez-la dès que vous souhaitez traiter ce qui attend. Elle parcourt ces étapes dans l'ordre (toute étape peut être sautée) :

  1. Vue d'ensemble — appelle get_overview et rapporte le nombre de non lus, les fils en attente de réponse, les documents en attente, les événements de calendrier du jour, les rappels en retard et les tâches suggérées. Un court paragraphe ou une liste rapide — juste de quoi vous orienter.
  2. Jeu de skim — charge les clusters groupés par anneau (priorité, notifications, newsletters, etc.), propose des actions et les applique en lot ou une par une après votre confirmation.
  3. En attente de réponse — liste les fils où vous avez envoyé le dernier message sans avoir de retour. Rédige les réponses en ligne ; n'envoie qu'après un « oui, envoie-le » explicite.
  4. Documents en attente — liste les documents en attente de révision. Approuvez, rejetez ou reclassifiez, un par un ou en lot.
  5. Tâches et rappels suggérés — affiche les tâches et rappels extraits par l'IA ; confirme ou ignore chacun après que vous en ayez vu le titre.
  6. Résumé final — e-mails traités, réponses envoyées, documents approuvés, tâches confirmées.

À quoi ressemble une session

Voici une exécution matinale typique :

> /campbooks:triage

Vous avez 14 e-mails non lus, 2 fils en attente d'une réponse de votre part,
3 documents en attente de révision (dont une facture ACME de 1 290 €) et un
rappel en retard : « Déposer la déclaration de TVA » était dû hier.

Jeu de skim — 4 clusters :
Anneau priorité
• Factures ACME — 2 e-mails — Scout suggère conserver
Anneau notifications
• Alertes PR GitHub — 9 e-mails — suggère archiver
• Reçus de paiement Stripe — 4 e-mails — suggère archiver
Anneau newsletters
• Résumés produit — 6 e-mails — suggère archiver

Appliquer ces actions (sauf conserver ACME) ?

> oui

19 e-mails archivés dans 3 clusters. 2 e-mails conservés.

En attente de réponse — 2 fils :
1. Jane chez ACME — « Re : proposition Q3 » — il y a 4 jours
2. Intégration bancaire — « Vos documents » — il y a 2 jours

Rédiger un suivi pour le fil ACME ?

> oui

« Bonjour Jane, je fais juste un suivi sur la proposition Q3 — je suis
disponible pour un appel cette semaine si ça peut aider. Dites-moi. »

Envoyer cette réponse ?

> oui

Envoyé. Passage aux documents...

L'agent vous montre ce qu'il s'apprête à faire avant chaque écriture et attend votre réponse.

OAuth local (auto-hébergé uniquement)

Si les callbacks OAuth de votre serveur auto-hébergé ne sont pas accessibles depuis internet, vous pouvez créer un token de rafraîchissement localement et le passer au serveur via l'API MCP.

Utilisateurs Cloud : utilisez le flux connect_email_account(mode: "web") — la skill /campbooks:setup s'en occupe automatiquement.

Prérequis

  • Python 3 (bibliothèque standard uniquement — sans pip install nécessaire).
  • Les accréditations OAuth du serveur lui-mêmeGOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRET ou ZOHO_CLIENT_ID/ZOHO_CLIENT_SECRET de l'environnement du serveur. Un token créé avec un client_id différent échouera lorsque le serveur tentera de le rafraîchir.
  • http://localhost:8765/callback ajouté aux URI de redirection autorisés de l'application OAuth (Google Cloud Console → Identifiants → votre client OAuth → URI de redirection autorisés ; Console développeur Zoho → Console API → votre client → URI de redirection).

Exécuter

python3 integrations/claude-plugin/scripts/campbooks_oauth.py google \
--client-id YOUR_GOOGLE_CLIENT_ID \
--client-secret YOUR_GOOGLE_CLIENT_SECRET

# Zoho — spécifiez la région du centre de données de votre serveur
python3 integrations/claude-plugin/scripts/campbooks_oauth.py zoho \
--client-id YOUR_ZOHO_CLIENT_ID \
--client-secret YOUR_ZOHO_CLIENT_SECRET \
--region eu

Omettez --client-id / --client-secret et le script les demandera de manière sécurisée. Il ouvre votre navigateur, complète le flux de consentement et imprime une ligne de JSON :

{"provider": "google", "refresh_token": "1//0e..."}

La skill /campbooks:setup appelle connect_email_account(mode: "token", ...) avec ce token automatiquement — vous n'avez pas besoin de coller le token dans le chat. Conservez-le en lieu sûr : il donne un accès complet à la boîte aux lettres.