Outils MCP
cc_server héberge un registre d’outils MCP (JSON-RPC 2.0) unique, exposé sur le port principal du serveur (par défaut 9030) en POST /mcp et GET /sse, version de protocole 2024-11-05. Tous les clients atteignent le même registre : l’application de bureau, la version web, les clients MCP externes et le moteur d’agents intégré. Les serveurs MCP externes peuvent être raccordés au même registre sous forme de couche dynamique.
Taille du registre
Section intitulée « Taille du registre »| Mesure | Nombre |
|---|---|
Outils enregistrés par cc_server |
110 |
Provenant de packages/cc_mcp |
108 |
Provenant de packages/cc_mcp_client (découverte d’outils) |
2 |
Enregistrés dans le registre de base (server_mcp_registry.dart) |
63 |
Enregistrés après le démarrage, à mesure que leurs services montent (cc_server_runtime.dart) |
47 |
| Sur les 63 du registre de base, conditionnés à un dépôt de graphe de code | 5 |
Les cinq outils de graphe de code ne sont enregistrés que lorsque l’hôte transmet un dépôt de graphe de code à buildServerMcpRegistry. cc_server en transmet toujours un, donc les 110 outils sont actifs dans le binaire livré.
Le registre complet est annoncé dans tools/list, sans filtrage de découverte. Les modifications de tickets sont des outils typés.
Paramètres communs
Section intitulée « Paramètres communs »workspace_id
Section intitulée « workspace_id »Obligatoire sur tout outil qui touche à des données propres à un espace de travail. Un workspace_id manquant ou invalide renvoie une erreur explicite, et une valeur qui ne correspond pas à l’espace de travail de l’entité visée est rejetée plutôt qu’ignorée en silence. Omettez-le sur les outils réellement globaux : list_workspaces et les six outils de fil d’actualités (list_feeds, list_articles, get_article, set_article_read, set_article_saved, refresh_feeds), qui utilisent la liste de flux personnelle du propriétaire du serveur. Les outils de découverte (search_tool_bm25, list_my_tools) le prennent en option afin de pouvoir classer ce qui est appelable selon le mode de conversation. Lorsqu’un agent est lancé par le serveur, l’espace de travail est imposé côté serveur : l’agent ne peut donc pas atteindre un autre espace de travail en passant un identifiant étranger.
Découverte des outils
Section intitulée « Découverte des outils »Tous deux proviennent de cc_mcp_client, et non de cc_mcp, et consultent tous deux le garde-fou de mode afin de signaler ce qui est appelable dans le mode de conversation en cours.
| Outil | Description |
|---|---|
search_tool_bm25 |
Recherche dans le catalogue d’outils par mot-clé ; renvoie les outils correspondants, leur schéma d’arguments et s’ils sont appelables à l’instant |
list_my_tools |
Liste les outils appelables à l’instant dans cette conversation, filtrés par son mode |
Un troisième outil de découverte, search_tools, n’existe qu’à l’intérieur du harnais intégré et ne fait pas partie de ce registre MCP. Il classe la surface d’outils de l’exécution elle-même et, contrairement à search_tool_bm25, charge les schémas de ce qu’il trouve afin que l’agent puisse appeler une correspondance au tour suivant. Les agents sur le harnais devraient le préférer ; les clients MCP disposent de search_tool_bm25.
Outils d’agent
Section intitulée « Outils d’agent »| Outil | Description |
|---|---|
list_agents |
Liste les agents enregistrés dans un espace de travail |
Messagerie et délégation entre agents pairs
Section intitulée « Messagerie et délégation entre agents pairs »Les agents communiquent entre eux via des espaces (durables, visibles dans l’effectif). ask_agent fonctionne en requête/réponse avec un délai d’attente obligatoire ; delegate_task est encadré côté serveur par un plafond de profondeur, une détection de cycles, une enveloppe budgétaire et un plafond d’autonomie.
| Outil | Description |
|---|---|
send_to_agent |
Envoie un message à sens unique à un autre agent, adressé par to_agent_id ou par to_agent_name exact |
ask_agent |
Pose une question à un autre agent et attend sa réponse, ou expire |
delegate_task |
Délègue une tâche à un autre agent sous forme de ticket enfant suivi |
consult_agent |
Ajoute à l’espace le spécialiste dont les skills correspondent le mieux et le lance avec une consigne ciblée |
todo_read |
Lit la liste de tâches persistée de cette conversation |
Outils de skills
Section intitulée « Outils de skills »Chaque installation et chaque mise à jour passe par une porte d’analyse à échec fermé avant qu’un contenu de skill n’atteigne le disque ou le prompt d’un agent.
| Outil | Description |
|---|---|
list_skills |
Liste les slugs de skills disponibles dans un espace de travail |
create_skill |
Crée un nouveau skill à partir d’un contenu markdown |
install_skill |
Installe tout le répertoire d’un skill depuis un dépôt GitHub à une référence épinglée |
update_skill |
Met à jour un skill GitHub installé vers une nouvelle référence, en réanalysant et en réépinglant |
list_skill_updates |
Liste les skills pour lesquels une version plus récente est disponible |
verify_skills |
Vérifie les skills verrouillés par rapport aux hachages de leur contenu sur disque |
pin_skill |
Hache un skill déjà présent sur disque dans skills-lock.json |
Outils de plan, de playbook et d’artefact
Section intitulée « Outils de plan, de playbook et d’artefact »| Outil | Description |
|---|---|
submit_plan |
Contrat de sortie du mode plan : émet un PlanDocument typé qui s’ouvre dans Plan Studio |
create_playbook |
Enregistre un plan sous forme de modèle nommé et versionné avec des espaces réservés {{param}} typés |
run_playbook |
Instancie un playbook avec des valeurs de paramètres, produisant un plan que l’opérateur approuve |
publish_artifact |
Publie une liste ordonnée de blocs typés (markdown, table, chart, mermaid, code, JSON) rendus nativement dans le client |
revise_artifact |
Remplace le contenu d’un artefact publié |
list_artifacts |
Liste les artefacts de l’espace de travail |
get_artifact |
Lit un artefact |
complete_goal |
Déclare atteint l’objectif durable actif de la conversation (démarré avec /goal ou /loop) |
Outils d’espace de travail
Section intitulée « Outils d’espace de travail »| Outil | Description |
|---|---|
list_workspaces |
Liste tous les espaces de travail avec leurs identifiants et leurs noms (global ; sans workspace_id) |
Outils de dépôt
Section intitulée « Outils de dépôt »| Outil | Description |
|---|---|
list_repos |
Liste les dépôts enregistrés dans un espace de travail. Les appelants agents reçoivent les chemins des arbres de travail isolés en copie sur écriture de leur conversation, jamais les checkouts d’origine |
Outils de messagerie
Section intitulée « Outils de messagerie »| Outil | Description |
|---|---|
list_spaces |
Liste les espaces de messagerie d’un espace de travail |
get_messages |
Récupère les messages d’un espace |
send_message |
Envoie un message à un espace en tant qu’agent émetteur nommé |
get_space_notes |
Lit le document de passation partagé d’un espace |
update_space_notes |
Remplace le document de passation partagé d’un espace |
todo_write |
Remplace en un seul appel la liste de tâches de cette conversation (transmettez la liste complète) |
Outils de revue
Section intitulée « Outils de revue »| Outil | Description |
|---|---|
start_ai_review |
Démarre la revue par IA d’une PR : calcule les zones de revue, déploie en éventail des relecteurs spécialistes dans l’espace de la PR, rédige le parcours et finalise |
add_review_node |
Ajoute un constat de revue structuré (fichier, ligne, priorité P0–P3) à un espace de revue |
confirm_review_node |
Confirme le constat d’un pair ; l’auteur ne peut pas confirmer le sien |
resolve_review_node |
Marque un constat comme corrigé après avoir réellement effectué la modification ; publie une trace dans l’espace de revue |
dismiss_review_node |
Rejette un constat qui ne s’applique pas ; enregistre un fait de suppression pour que les relecteurs cessent de le signaler |
request_peer_review |
Demande à un autre agent relecteur un second regard sur un constat |
dispatch_reviewers |
Déploie en parallèle dans un espace de revue les agents relecteurs correspondants |
submit_reviewer_verdict |
Publie un verdict ship/hold/block par relecteur, avec un niveau de confiance et une explication |
finalize_review |
Calcule le consensus par nœud et le verdict de la PR, puis clôt la revue |
set_cohort_summary |
Définit le résumé en langage clair d’une cohorte de revue |
add_review_diagram |
Joint à une cohorte un diagramme structuré et vérifié par graphe (sequence, entityRelation, stateMachine) |
publish_review_to_github |
Publie la revue finalisée sur GitHub sous forme de commentaires en ligne et d’un corps de résumé |
Outils de mémoire
Section intitulée « Outils de mémoire »| Outil | Description |
|---|---|
search_memory |
Recherche des faits et des politiques (par mot-clé, sémantique ou hybride — l’hybride est la valeur par défaut) |
propose_fact |
Stocke un fait markdown court dans un domaine |
supersede_fact |
Marque un fait comme remplacé par un autre |
propose_policy |
Stocke une règle normative dans un domaine (exige le droit d’écriture sur celui-ci) |
supersede_policy |
Retire une politique : la marque inactive tout en la conservant pour l’audit |
list_policies |
Liste les politiques actives, avec filtrage facultatif par domaine |
list_memory_domains |
Liste les domaines de mémoire de l’espace de travail avec le nombre de faits et de politiques |
record_observation |
Consigne une observation brute dans la mémoire de travail de l’agent |
get_my_notes |
Lit le bloc-notes de mémoire de travail de l’agent appelant |
update_my_notes |
Met à jour le bloc-notes de mémoire de travail de l’agent appelant |
remember |
Ajoute une note à la mémoire de travail chaude de l’agent pour cette session (bornée en TTL et en nombre) |
consolidate_memory |
Exécute une passe de consolidation (« sommeil ») : évince les éléments chauds expirés et agrège les éléments durables en faits à long terme |
harmonize_memory |
Exécute une harmonisation des croyances entre agents (SHMR) et signale les contradictions |
list_memory_conflicts |
Liste les contradictions détectées et la façon dont chacune a été résolue |
Outils de gouvernance
Section intitulée « Outils de gouvernance »| Outil | Description |
|---|---|
create_goal |
Crée un objectif organisationnel (au niveau entreprise, équipe, agent ou tâche) |
list_goals |
Liste les objectifs avec leur niveau, leur statut et leur progression agrégée |
update_goal_progress |
Définit la progression d’un objectif |
create_approval |
Ouvre une approbation de gouvernance pour une action gouvernée (sortie de plan, fusion, publication, embauche, personnalisée) |
list_approvals |
Liste les approbations, avec filtrage facultatif par statut |
decide_approval |
Enregistre une décision : approuver, rejeter, demander une révision ou soumettre à nouveau |
comment_approval |
Commente une approbation de gouvernance |
exit_plan_mode |
Ouvre (et, une fois approuvée, consomme) une approbation plan_exit, faisant sortir la conversation du mode plan |
agent_heartbeat |
Signale sa vivacité (actif, inactif, bloqué) ; le silence fait passer la santé d’exécution à récemment perdue, puis hors ligne |
list_runtime_health |
Liste la santé d’exécution de chaque agent |
list_agent_presence |
Liste la présence de chaque agent (santé, cycle de vie, nombre d’exécutions en cours et en file, capacité) |
get_org_chart |
Lit l’arbre hiérarchique, le CEO à la racine, imbriqué selon reports_to |
create_work_product |
Crée un livrable durable rattaché à un ticket |
save_work_product_revision |
Enregistre une nouvelle révision ; transmettez base_revision_id pour être rejeté en cas de modification concurrente |
list_work_products |
Liste les livrables, avec filtrage facultatif sur un ticket |
get_work_product |
Lit un livrable avec son historique de révisions |
create_runtime_profile |
Définit un profil d’exécution réutilisable (famille de protocoles, commande CLI, arguments de lancement fixes) |
list_runtime_profiles |
Liste les profils d’exécution de l’espace de travail |
Outils de graphe de code
Section intitulée « Outils de graphe de code »Enregistrés uniquement lorsque l’hôte fournit un dépôt de graphe de code. L’index couvre l’ensemble de grammaires livré (Dart, JS/TS, PHP, Python, Rust, Zig, C/C++, Go, Java, Ruby, C#, Swift, Kotlin, R, Assembly, MATLAB, Ada) ; les symboles de tout autre langage sont absents.
| Outil | Description |
|---|---|
search_code |
Recherche les symboles indexés par nom, signature et commentaire de documentation (hybride BM25 + sémantique) |
code_symbol |
Recherche des symboles par nom exact ; renvoie file:line et la signature |
code_callers |
Liste les symboles qui appellent un symbole ou en dépendent (arêtes entrantes) |
code_callees |
Liste les symboles qu’un symbole appelle ou dont il dépend (arêtes sortantes) |
code_impact |
Calcule le rayon d’impact transitif d’un symbole, jusqu’à une profondeur donnée |
Outils de tickets
Section intitulée « Outils de tickets »| Outil | Description |
|---|---|
create_ticket |
Crée un ticket sur le fournisseur configuré |
get_ticket |
Récupère un ticket par son identifiant |
list_tickets |
Liste les tickets, avec filtrage facultatif par statut ou par assigné |
update_ticket |
Met à jour le statut, le titre, la description, la priorité ou les étiquettes (le statut accepte des alias tels que in_progress / completed) |
assign_ticket |
Assigne un ticket à un agent et/ou à une équipe |
reassign_ticket |
Réassigne un ticket à un autre agent |
add_ticket_collaborator |
Invite un agent à collaborer sur un ticket (ajouté à son espace) |
comment_on_ticket |
Commente un ticket |
close_ticket |
Clôt un ticket (le marque comme terminé) avec une sortie facultative |
fail_ticket |
Marque un ticket comme échoué avec un message d’erreur |
delegate_ticket |
Délègue un ticket à un agent en créant un ticket suivi |
ticket_pr_link |
Lie ou délie un ticket et une pull request par identifiant de nœud de PR (action: link | unlink) |
ticket_relation |
Ajoute ou retire une relation entre deux tickets — blocked_by, blocking, related_to, duplicate_of, duplicated_by, sub_issue_of, parent_of (action: add | remove) |
list_ticket_relations |
Liste le parent d’un ticket, ses sous-tickets et ses liens de dépendance |
Outils d’équipe et de pipeline
Section intitulée « Outils d’équipe et de pipeline »| Outil | Description |
|---|---|
record_team_activity |
Consigne une entrée d’activité d’un chef d’équipe sur un ticket |
preview_trigger |
Simule à blanc les exécutions de pipeline qu’un événement hypothétique déclencherait, sans rien valider |
submit_output |
Soumet la charge de sortie structurée de l’exécution de pipeline en cours de l’appelant ; validée par rapport au schéma de sortie déclaré de l’exécution |
Outils d’orchestration
Section intitulée « Outils d’orchestration »| Outil | Description |
|---|---|
propose_orchestration |
Émet un plan d’orchestration multi-agents structuré pour une approbation unique en amont ; valide et renvoie les éventuelles violations |
Outils de fil d’actualités
Section intitulée « Outils de fil d’actualités »| Outil | Description |
|---|---|
list_feeds |
Liste les flux RSS/Atom enregistrés |
list_articles |
Liste les articles, avec filtrage facultatif par flux, non lus ou enregistrés |
get_article |
Récupère un article |
set_article_read |
Marque un article comme lu ou non lu |
set_article_saved |
Enregistre ou désenregistre un article |
refresh_feeds |
Récupère à nouveau immédiatement chaque flux activé |
Outils d’enceinte (rig)
Section intitulée « Outils d’enceinte (rig) »Pilotez des machines jetables — un navigateur ou un bureau Linux en enceinte, un
émulateur Android ou un simulateur iOS — depuis l’intérieur d’une exécution. Enregistrés après
le démarrage, inconditionnellement : savoir si une machine peut réellement démarrer est une
question de sonde à laquelle les outils répondent à chaque appel. Des appels répétés dans une
même conversation réutilisent une seule machine ; les captures d’écran reviennent comme contenu
image avec un budget d’une image par résultat, et le contenu de page/UI extrait est délimité
comme données non fiables. Les quatre outils d’usage plus rig_close déclarent la
classe d’actions enclosureControl
(les outils d’usage déclarent en outre networkEgress et processSpawn ; mobile_use et
ios_use déclarent en outre packageInstall), si bien que les modes en lecture seule les refusent.
rig_list n’en déclare aucune — il ne fait que lire l’état de l’espace de travail. Le vocabulaire
complet des verbes par surface figure dans la référence des rigs.
| Outil | Description |
|---|---|
computer_use |
Pilote un bureau Linux dans une VM en enceinte : déplacer, cliquer, glisser, faire défiler, saisir, redimensionner, presse-papiers, capture d’écran |
browser_use |
Pilote un Chromium, Firefox ou WebKit sans interface (engine) : naviguer, cliquer, remplir, extraire (a11y/DOM/console), presse-papiers, capture d’écran |
mobile_use |
Pilote Android via ADB : inspecter/saisir, captures d’écran, installer/démarrer/arrêter/réinitialiser/désinstaller des applications, liens profonds et commandes d’appareil au format argv |
ios_use |
Pilote le simulateur iOS via WebDriverAgent/CoreSimulator : inspecter/saisir, captures d’écran, installer/démarrer/arrêter/désinstaller des applications, liens profonds et processus de simulateur au format argv |
rig_list |
Liste les rigs d’un espace de travail avec leur surface, leur statut, leur taille d’affichage et leur contrôleur |
rig_close |
Détruit un rig et abandonne l’état de machine qu’il possède |
Non exposés via MCP
Section intitulée « Non exposés via MCP »Le calendrier et les réunions n’ont pas d’outils MCP. Les agents ne peuvent pas lire votre calendrier, vos réunions, vos transcriptions, vos actions à mener ni vos décisions. Le résumé qui produit les actions à mener et les décisions s’exécute comme le pipeline meeting_summary intégré, et non comme un outil qu’un agent peut appeler.
Filtrage des outils par mode
Section intitulée « Filtrage des outils par mode »Le filtrage est appliqué deux fois à partir d’une seule table (ModeToolPolicy) : une fois dans le répartiteur MCP pour l’adaptateur Claude Code, et une fois dans le registre du harnais intégré. Un appel bloqué renvoie la raison.
| Mode | Surface d’outils |
|---|---|
chat |
Tous les outils enregistrés ; aucune liste d’autorisation |
plan |
Une liste d’autorisation restreinte. Aucune écriture dans l’arbre de travail et aucun verbe de ticket create / assign / delegate, mais la mémoire, les artefacts, les listes de tâches, submit_plan, exit_plan_mode et les verbes d’achèvement de ticket sur le ticket lancé sont autorisés |
review |
Une liste d’autorisation restreinte : participation aux revues, communication, récupérateurs de contexte en lecture seule et l’ensemble complet des verbes de ticket, y compris create_ticket et assign_ticket |
orchestrate |
Une liste d’autorisation restreinte : outils de recherche et de lecture, plus propose_orchestration, create_playbook et run_playbook. L’embauche, la décomposition et l’achèvement des tickets ont lieu de façon déterministe après approbation, jamais en cours d’exécution |
Autorisés dans tous les modes, quelle que soit la liste d’autorisation :
| Ensemble | Outils |
|---|---|
| Mémoire et artefacts | search_memory, propose_fact, propose_policy, supersede_fact, supersede_policy, record_observation, update_my_notes, get_my_notes, list_memory_domains, list_policies, publish_artifact, revise_artifact, list_artifacts, get_artifact |
| Graphe de code | search_code, code_symbol, code_callers, code_callees, code_impact |
| Mécanique d’exécution | search_tool_bm25, list_my_tools, todo_write, todo_read |
Figurer sur une liste d’autorisation ne rend pas un outil appelable, et l’inverse est vrai aussi : la capacité de poser une question à l’opérateur est un outil du harnais (ask_user), donc il n’apparaît jamais dans ce catalogue MCP.
Outils soumis à approbation
Section intitulée « Outils soumis à approbation »Un outil peut déclarer requiresApproval. Le répartiteur construit alors un ApprovalPayload et le présente via le ConfirmationPort avant l’exécution de l’outil ; cc_server câble ce port, donc la porte est active.
Outils enregistrés qui le déclarent : create_ticket, update_ticket, assign_ticket, reassign_ticket, close_ticket, ticket_relation, create_goal, update_goal_progress, create_approval, decide_approval, comment_approval, create_work_product, save_work_product_revision, create_runtime_profile, install_skill, update_skill.
Indépendamment, les garde-fous d’action unifiés filtrent tout outil qui déclare un ensemble ActionClass non vide. Une décision prompt sans approbateur connecté est refusée. Voir Garde-fous.
Capacités sans outil derrière elles
Section intitulée « Capacités sans outil derrière elles »Toutes les capacités du produit ne sont pas accessibles à un agent. Celles-ci n’ont aucun outil, donc un nom que vous auriez pu voir cité ailleurs renvoie « unknown tool » :
| Capacité | Où cela se trouve à la place |
|---|---|
| Embaucher, renvoyer ou modifier un agent | L’interface des agents. Il n’existe aucun outil hire_agent / fire_agent / update_agent |
| Créer un espace de travail | workspace.upsert via RPC, qui initialise et estampille la propriété |
| Projets (créer / lister / modifier / classer) | L’interface des tickets. Les projets sont une surface d’opérateur — voir Projets |
| Poser à l’opérateur une question bloquante | L’outil ask_user du harnais, et non MCP. Il affiche un formulaire dans la conversation et bloque jusqu’à la réponse |
| Diagnostics par agent | Rien. Il n’existe aucun doctor — voir Diagnostiquer un agent |
| Calendrier et réunions | RPC réservé aux clients humains (voir plus haut) |