Connecteur MCP
Brancher ERHA sur Claude, ChatGPT ou un éditeur par le protocole MCP, les autorisations demandées, les outils disponibles, la facturation et les limites.
ERHA expose un serveur MCP (Model Context Protocol). Un assistant comme Claude ou ChatGPT, ou un éditeur comme Claude Code, s'y connecte avec votre compte ERHA et travaille dans vos espaces : il lit vos tâches, vos dossiers clients et vos erreurs, écrit dans le tableau et fait travailler vos agents.
Le connecteur agit en votre nom. Il ne voit que ce que vous voyez dans la console et ne peut faire que ce que vous pouvez y faire.
Adresse du serveur
https://api.erha.ai/mcp
Le serveur parle MCP en HTTP (transport « Streamable HTTP »). La connexion passe par OAuth 2.1 avec PKCE : le client ouvre la page de connexion d'ERHA, puis un écran d'autorisation qui liste ce qu'il pourra faire. Le client ne reçoit jamais votre mot de passe.
Ajouter le connecteur
| Client | Marche à suivre |
|---|---|
| Claude (web, bureau) | Plans Free, Pro et Max : menu Customize, puis Connectors, « + Add », « Add custom connector », puis l'adresse ci-dessus. Le plan Free n'a droit qu'à un connecteur personnalisé. Plans Team et Enterprise : un propriétaire de l'organisation ajoute d'abord le connecteur dans Organization settings, Connectors, « Add », Custom, Web, avec l'adresse ci-dessus. Chaque membre le trouve ensuite dans Customize, Connectors, et clique sur « Connect ». |
| ChatGPT (web) | Page Plugins (chatgpt.com/plugins), bouton +, « Add custom MCP server » : donnez un nom et l'adresse ci-dessus, puis « Create as a plugin ». Sur un espace de travail Business, Enterprise ou Edu, un admin active d'abord le mode développeur dans les réglages de l'espace de travail, et seuls les admins et les propriétaires créent et publient le plugin pour l'espace. D'après l'aide d'OpenAI, le support complet de MCP, outils qui écrivent compris, est réservé aux plans Business, Enterprise et Edu. |
| Claude Code | claude mcp add --transport http erha https://api.erha.ai/mcp, puis /mcp pour vous connecter. |
| Autre client MCP | Donnez l'adresse ci-dessus. Le client découvre le serveur d'autorisation tout seul (/.well-known/oauth-protected-resource). |
Quand ERHA figure dans l'annuaire des connecteurs de Claude ou des plugins de ChatGPT, vous pouvez aussi l'ajouter depuis l'annuaire, sans saisir l'adresse.
Au premier appel, le client vous envoie sur la console ERHA. Connectez-vous si ce n'est pas déjà fait, puis lisez l'écran d'autorisation.
Autorisation
L'écran d'autorisation s'affiche sur la console (/oauth/consent). Il dit trois choses :
- le nom du client qui demande l'accès ;
- les accès demandés (voir le tableau plus bas) ;
- les espaces que le client pourra lire, et l'adresse à laquelle l'accès sera envoyé après votre accord.
Si vous ne reconnaissez pas cette adresse, refusez.
Portée : tout le compte
L'autorisation couvre votre compte, pas un seul espace. Le connecteur atteint les espaces dont vous êtes membre au moment de chaque appel : un espace que vous rejoignez ensuite est inclus, un espace que vous quittez ne l'est plus. Vous n'avez rien à reconnecter.
Un connecteur autorisé avant le 27/09/2026 a été autorisé pour un seul espace. Il reste sur cet espace, et l'argument espace ne le fait pas changer. Pour qu'il couvre tous vos espaces, retirez-le puis autorisez-le de nouveau.
Accès
Le client demande des accès, l'écran les liste, et le client n'obtient que ceux qui y figurent. La lecture est toujours accordée.
| Accès | Scope OAuth | Ce qu'il permet |
|---|---|---|
| Lecture | mcp:read | Lire les projets, les tâches et leur fil, les dossiers clients, les erreurs, les agents et vos fils avec eux, et chercher dans ce que vous pouvez lire dans l'espace. Les textes lus sont envoyés au modèle utilisé par le client. |
| Écriture | mcp:write | Écrire en votre nom : créer, modifier, commenter et valider des tâches, créer et modifier des dossiers clients, changer le statut d'une erreur. |
| Travail des agents | mcp:run | Faire travailler les agents, aux frais de l'espace : lancer une tâche, répondre à un agent ou lui écrire, faire le point sur un client. Demande aussi mcp:write. |
Un outil qui écrit sans l'accès Écriture, ou qui fait travailler un agent sans l'accès Travail des agents, n'est pas lancé. La réponse est un HTTP 403 insufficient_scope qui nomme les accès à demander : c'est l'autorisation progressive (step-up) de la spécification MCP. Un client qui la gère vous montre de nouveau l'écran d'autorisation avec l'accès manquant, puis refait l'appel. Le corps de la réponse porte aussi la raison du refus, que le modèle peut vous rapporter. Si votre client ne redemande rien, retirez le connecteur puis autorisez-le de nouveau.
Un connecteur autorisé avant le 09/10/2026 n'a pas l'accès Travail des agents : il le demande au premier appel qui en a besoin, ou se reconnecte à la main si le client ne gère pas l'autorisation progressive.
Droits dans l'espace
Les règles de la console s'appliquent à chaque appel :
- les tâches d'un département dont vous n'êtes pas membre restent cachées ;
- un module fermé à votre équipe (Clients, Projets, Support) l'est aussi pour le connecteur ;
- seuls l'auteur d'une tâche et les admins de l'espace peuvent la modifier, la valider ou la lancer.
Un opérateur ERHA connecté à votre espace par « Se connecter en tant que » ne peut pas autoriser de connecteur à votre nom.
Choisir l'espace : l'argument espace
Chaque outil accepte un argument facultatif espace : la clé de l'espace visé, telle que list_spaces la rend.
| Situation | Ce qui se passe |
|---|---|
| Le compte a un seul espace | L'argument est inutile. L'appel porte sur cet espace. |
| Le compte a plusieurs espaces, l'argument est donné | L'appel porte sur l'espace nommé. Une clé inconnue est refusée, avec la liste des espaces du compte. |
| Le compte a plusieurs espaces, l'argument manque | L'appel est refusé, avec la liste des espaces. Le connecteur ne choisit jamais un espace à votre place : le modèle doit vous demander lequel. |
| Le connecteur a été autorisé pour un seul espace | L'appel porte sur cet espace, quel que soit l'argument. |
Le plus simple est de nommer l'espace dans votre demande (« dans l'espace boutique, … »).
Outils
Le client affiche le titre de chaque outil. Les outils de lecture sont marqués comme tels (readOnlyHint). update_task et update_client sont marqués comme destructifs (destructiveHint), car ils remplacent un texte existant : la plupart des clients demandent votre accord avant de les appeler.
Lecture
| Outil | Titre | Ce qu'il fait |
|---|---|---|
list_spaces | Lister les espaces | Liste vos espaces avec leur clé. |
my_day | Ma journée | Ce qui vous attend aujourd'hui, comme l'écran Activité : questions des agents et actions à valider, tâches à relire, rendez-vous, relances clients échues, échecs, erreurs nouvelles ou revenues, visiteurs du chat qui demandent une personne, puis vos fils non lus avec les agents. |
list_projects | Lister les projets | Les projets de l'espace : identifiant, nom, statut et applications. |
project_status | Faire le point sur un projet | Le bilan d'un projet sur une période (24 heures par défaut) : tâches par statut, ce qui a bougé, tâches en cours, bloquées, à relire, en retard ou à rendre dans les 7 jours, prochaine version et erreurs des applications. |
search_tasks | Chercher des tâches | Cherche des tâches par mots du titre, statut, projet (son nom ou son identifiant) ou personne assignée. Rend leur numéro, leur statut et leur titre. |
read_task | Lire une tâche | Une tâche par son numéro (#112) : statut, projet, client, personnes et agents qui la portent, dates, branche, lien dans la console, applications concernées (dépôt, branche, dossier), erreurs liées, description et derniers messages du fil. |
search_clients | Chercher des dossiers clients | Cherche dans les dossiers clients et prospects par nom, email, domaine, ville ou contact. Sans résultat exact, rend les dossiers archivés et les noms proches. |
read_client | Lire un dossier client | Un dossier : coordonnées, étape, responsable, prochaine action, résumé, état d'avancement, contacts, projets, tâches liées et derniers échanges. |
search_knowledge | Chercher dans l'espace | Cherche dans ce que l'espace a partagé : tickets, commentaires, emails, page Contexte et documents, conversations, fichiers, demandes de compétence, fiches clients. Rend au plus 8 passages, chacun avec sa source et sa date. Facturé à l'espace (voir Facturation). |
search_errors | Chercher des erreurs | Les erreurs relevées sur les applications de l'espace, dans tous les projets ou dans un seul. Par défaut, les erreurs encore ouvertes. Filtres : statut, texte, nouvelles ou revenues depuis 7 jours, sans tâche de correction. 25 par page. |
read_error | Lire une erreur | Une erreur et ce qu'il faut pour la corriger : application (dépôt, branche, dossier, techno), statut, compteurs, versions, environnements et pages touchés, tâche et correctif connus, puis une occurrence (la dernière par défaut) avec la pile d'appels après source maps, le code autour de chaque ligne de l'application et ses variables, la requête, le navigateur ou le runtime, le fil d'Ariane, les tags et les données du SDK. |
list_members | Lister les membres de l'espace | Les membres : nom, email, admin ou non, et le texte qui mentionne chacun (@[Nom](user:identifiant)). Une mention dans la description d'une tâche ou un commentaire notifie la personne. |
list_agents | Lister les agents | Les agents de l'espace que vous voyez : prénom, fonction, métier, début de la présentation, tâches en cours, et si leur fil avec vous a une réponse non lue. Avec un agent : sa fiche complète, présentation, ton et ce qu'il sait faire. |
list_conversations | Lister les conversations avec les agents | Vos fils avec les agents, du plus récent au plus ancien, archivés à part : titre, date, non lu, agent au travail ou en attente de votre réponse. |
read_conversation | Lire le fil avec un agent | Les messages d'un de vos fils avec un agent, y compris ceux envoyés par message_agent : le dernier fil par défaut, un autre par son identifiant, page par page. |
read_task_file | Lire un fichier d'une tâche | Le texte d'un fichier joint à une tâche, ou produit pour elle (PDF, Word, tableurs, texte), en parties de 40 000 caractères. Une image ou un PDF scanné n'a pas de texte lisible par le connecteur. |
list_skills | Lister les compétences | Les compétences que vous pouvez lancer, avec leurs entrées. |
read_skill_run | Lire le run d'une compétence | L'état d'un run, son résultat et ses fichiers produits, et le texte de ces fichiers. Sans run : vos derniers runs. |
list_recurrences | Lister mes récurrences | Vos récurrences avec les agents : rythme, état, email, prochain et dernier passage, consigne. |
Écriture (mcp:write)
| Outil | Titre | Ce qu'il fait |
|---|---|---|
create_task | Créer une tâche | Ouvre une tâche sur le tableau : un titre, une description et, en option, un projet (son nom ou son identifiant), les personnes assignées (prénom, nom ou email), un dossier client, un statut et une échéance. Rend le numéro de la tâche, sa colonne et son projet. |
update_task | Modifier une tâche | Change le titre, la description, le statut, les dates, le projet, le client ou les personnes assignées. Seuls les champs donnés changent. Tout contributeur du projet change les assignés ; le reste est réservé à l'auteur de la tâche et aux responsables du projet. Le statut d'une tâche portée par un agent suit son travail et ne se change pas ici. |
comment_task | Commenter une tâche | Ajoute un commentaire en votre nom et notifie les membres cités (prénom, nom ou email). Ne relance aucun agent. |
update_recurrence | Modifier une récurrence | Met en pause, reprend, change la consigne ou l'email d'une de vos récurrences, ou la supprime. |
review_task | Valider ou refuser une tâche en revue | Valider passe la tâche en terminé. Refuser la renvoie à faire, avec la raison dans son fil, sans relancer l'agent. |
create_client | Créer un dossier client | Ouvre un dossier client ou prospect, à la première étape du pipeline ou à celle donnée, suivi par vous ou par le responsable donné. Un seul dossier par adresse email et par domaine : si un dossier existe déjà, rien n'est créé et la réponse le nomme. |
update_client | Mettre à jour un dossier client | Change l'étape, le responsable, la prochaine action et sa date, le résumé ou les coordonnées. |
add_client_note | Noter dans un dossier client | Ajoute une note, le compte rendu d'un appel ou d'un rendez-vous à l'historique du dossier, datée de maintenant ou de la date donnée. |
update_error | Changer le statut d'une erreur | Résout, ignore ou rouvre une erreur. |
error_to_task | Créer une tâche pour une erreur | Ouvre la tâche de correction d'une erreur, avec la pile et le lien vers l'erreur. Une erreur qui a déjà sa tâche la garde. |
record_error_fix | Déclarer le correctif d'une erreur | Enregistre le commit qui corrige une erreur (hash complet, et la merge request si elle existe), et ouvre sa tâche de correction si besoin. L'erreur passe en attente de livraison et se ferme quand le commit arrive dans une version livrée ou en production. |
Travail des agents (mcp:write et mcp:run)
| Outil | Titre | Ce qu'il fait |
|---|---|---|
start_task | Lancer une tâche | Confie une tâche aux agents, comme le bouton Démarrer : ERHA choisit les agents et la part de chacun. Le résultat arrive dans le fil de la tâche (read_task). |
answer_agent | Répondre à un agent sur une tâche | Répond à un agent dans le fil d'une tâche et le relance. Sans agent nommé, c'est celui qui tient la tâche. |
message_agent | Écrire à un agent | Envoie un message dans votre dernier fil avec un agent, dans un fil choisi, ou dans une nouvelle conversation. L'agent répond en général en moins d'une minute ; sa réponse se lit avec read_conversation. |
launch_skill | Lancer une compétence | Lance une compétence comme le module Compétences, avec ses entrées texte et des fichiers d'une tâche. Le run est à vous et se lit avec read_skill_run. |
create_recurrence | Programmer un agent | Confie une consigne à un agent chaque jour, chaque semaine ou chaque mois à l'heure de Paris choisie ; le résultat reste dans le fil de la récurrence et peut partir par email. Chaque passage est facturé comme un échange. |
client_progress | Faire le point sur un client | Rédige l'état d'avancement d'un dossier, comme le bouton « Faire le point avec ce client » de la fiche. Le texte s'ajoute sous le résumé de l'équipe, sans le remplacer. |
Ce que le connecteur ne fait pas
- Il ne valide pas une action d'un outil connecté (Slack, Notion…) en attente : cette validation reste dans la console.
- Il n'envoie pas d'email.
- Il ne lit pas les clés d'API, la facturation ni les réglages de l'espace.
Facturation
Les outils qui font travailler un modèle sont facturés à l'espace visé, au même prix que depuis la console :
start_task,answer_agent,message_agentet les passages des récurrences créées parcreate_recurrence: le travail des agents ;launch_skill: le run de la compétence ;client_progress: un appel de modèle par point ;search_knowledge: un petit appel de modèle par recherche, pour lire la question. C'est le seul outil de lecture qui coûte.
Avant chacun de ces appels, et avant tout appel qui écrit, ERHA vérifie que l'espace peut dépenser. L'appel est refusé quand l'espace n'a pas de moyen de paiement, que son abonnement est résilié ou que son plafond de dépense est atteint. Le refus revient comme une erreur d'outil avec sa raison, et rien n'est facturé.
Les autres outils de lecture et d'écriture ne coûtent rien.
Journal d'audit
Chaque lecture de passages par search_knowledge est inscrite au journal d'audit de l'espace : la date, la personne, le connecteur, le titre de chaque source lue et l'adresse IP. Une ligne est écrite une fois et ne se modifie jamais.
Les admins de l'espace lisent ce journal dans les Paramètres de l'espace, rubrique Journal d'audit. Ils le filtrent par action, par personne et par période, et l'exportent en CSV. On sait ainsi après coup quels contenus sont sortis de l'espace, par quel connecteur et pour qui.
L'autorisation et le retrait d'un connecteur concernent le compte, pas un espace : ERHA les garde, mais ils ne sont pas listés dans le journal d'un espace.
Retirer un connecteur
Votre profil, section Connecteurs (/<espace>/profile?tab=connectors), liste les connecteurs que vous avez autorisés, avec leur dernier usage. « Retirer » coupe l'accès tout de suite : l'appel suivant du connecteur est refusé, sans attendre l'expiration de son jeton. Pour le rebrancher, il faut l'autoriser de nouveau.
Vous ne voyez et ne retirez que vos propres connecteurs. Le connecteur d'un collègue sur le même espace est le sien.
Changer votre mot de passe retire tous vos connecteurs. Quitter un espace retire l'accès du connecteur à cet espace.
Limites
| Limite | Valeur |
|---|---|
| Appels d'outils | 120 par minute, par connecteur et par compte. Au-delà, le serveur répond 429 avec Retry-After: 60. |
message_agent | 30 messages par heure et par personne. |
client_progress | 60 points par heure et par personne. |
search_knowledge | 8 passages au plus par recherche. |
search_tasks | 15 tâches au plus par recherche ; la réponse dit quand il y en a plus. |
read_conversation | 10 messages par page par défaut, 30 au plus, 3 000 caractères au plus par message. |
launch_skill | 20 lancements par jour et par personne. |
create_recurrence | 10 récurrences actives au plus par personne et par espace. |
| Jeton d'accès | Valable une heure. Le client le renouvelle seul, 30 renouvellements par heure au plus. |
Un outil peut être coupé par l'équipe ERHA. Il n'est alors plus proposé au client.