Outils MCP
cc_server héberge un seul registre d’outils MCP (JSON-RPC 2.0), servi sur le port principal du serveur (9030 par défaut) à 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 l’environnement d’exécution d’agents intégré. Les serveurs MCP externes peuvent être raccordés au même registre comme 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 des 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 se lancent (cc_server_runtime.dart) |
47 |
| Parmi 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 passe un dépôt de graphe de code à buildServerMcpRegistry. cc_server en passe toujours un, donc les 110 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”Requis sur chaque outil qui touche des données liées à 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é cible est rejetée plutôt que silencieusement ignorée. Omettez-le sur les outils réellement globaux : list_workspaces et les six outils de fil de nouvelles (list_feeds, list_articles, get_article, set_article_read, set_article_saved, refresh_feeds), qui s’appuient sur la liste de fils par utilisateur du propriétaire du serveur. Les outils de découverte (search_tool_bm25, list_my_tools) le prennent facultativement 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, de sorte que l’agent ne peut pas atteindre un autre espace de travail en passant un identifiant étranger.
Découverte des outils
Section intitulée “Découverte des outils”Les deux viennent de cc_mcp_client, et non de cc_mcp, et tous deux consultent le garde de mode pour rapporter ce qui est appelable dans le mode de conversation courant.
| Outil | Description |
|---|---|
search_tool_bm25 |
Rechercher le catalogue d’outils par mot-clé ; renvoie les outils correspondants, leurs schémas d’arguments et si chacun est appelable immédiatement |
list_my_tools |
Lister les outils appelables immédiatement dans cette conversation, filtrés selon 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 |
Lister 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 se parlent entre eux par les espaces (durables, visibles dans l’effectif). ask_agent est une requête-réponse avec délai d’attente obligatoire ; delegate_task est encadré côté serveur par un plafond de profondeur, une détection de cycle, une enveloppe budgétaire et un plafond d’autonomie.
| Outil | Description |
|---|---|
send_to_agent |
Envoyer un message unidirectionnel à un autre agent, adressé par to_agent_id ou par to_agent_name exact |
ask_agent |
Poser une question à un autre agent et attendre sa réponse, ou expirer |
delegate_task |
Déléguer une tâche à un autre agent sous forme de ticket enfant suivi |
consult_agent |
Ajouter à l’espace le spécialiste dont les skills correspondent le mieux et le lancer avec une consigne ciblée |
todo_read |
Lire 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 barrière d’analyse à refus par défaut avant qu’un contenu de skill n’atteigne le disque ou l’invite d’un agent.
| Outil | Description |
|---|---|
list_skills |
Lister les slugs des skills disponibles dans un espace de travail |
create_skill |
Créer un nouveau skill à partir d’un contenu markdown |
install_skill |
Installer le répertoire complet d’un skill depuis un dépôt GitHub à une référence épinglée |
update_skill |
Mettre à jour un skill GitHub installé vers une nouvelle référence, en réanalysant et en réépinglant |
list_skill_updates |
Lister les skills pour lesquels une version plus récente est offerte |
verify_skills |
Vérifier les skills verrouillés par rapport aux empreintes de leur contenu sur disque |
pin_skill |
Calculer l’empreinte d’un skill existant 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 |
Le contrat de sortie du mode plan : émettre un PlanDocument typé qui s’ouvre dans Plan Studio |
create_playbook |
Enregistrer un plan comme modèle nommé et versionné avec des espaces réservés {{param}} typés |
run_playbook |
Instancier un playbook avec des valeurs de paramètres, produisant un plan que l’opérateur approuve |
publish_artifact |
Publier une liste ordonnée de blocs typés (markdown, table, chart, mermaid, code, JSON) rendus nativement dans le client |
revise_artifact |
Remplacer le contenu d’un artefact publié |
list_artifacts |
Lister les artefacts de l’espace de travail |
get_artifact |
Lire un artefact |
complete_goal |
Déclarer atteint l’objectif durable actif de la conversation (lancé avec /goal ou /loop) |
Outils d’espace de travail
Section intitulée “Outils d’espace de travail”| Outil | Description |
|---|---|
list_workspaces |
Lister tous les espaces de travail avec leurs identifiants et leurs noms (global ; sans workspace_id) |
Outils de dépôts
Section intitulée “Outils de dépôts”| Outil | Description |
|---|---|
list_repos |
Lister les dépôts enregistrés dans un espace de travail. Les agents appelants reçoivent les chemins des arbres de travail isolés en copie sur écriture de leur conversation, jamais les extractions d’origine |
Outils de messagerie
Section intitulée “Outils de messagerie”| Outil | Description |
|---|---|
list_spaces |
Lister les espaces de messagerie d’un espace de travail |
get_messages |
Récupérer les messages d’un espace |
send_message |
Envoyer un message à un espace en tant qu’agent émetteur nommé |
get_space_notes |
Lire le document de passation partagé d’un espace |
update_space_notes |
Remplacer le document de passation partagé d’un espace |
todo_write |
Remplacer la liste de tâches de cette conversation en un seul appel (transmettre la liste complète) |
Outils de révision
Section intitulée “Outils de révision”| Outil | Description |
|---|---|
start_ai_review |
Lancer la révision par IA d’une PR : calculer les axes de révision, répartir les relecteurs spécialisés dans l’espace de la PR, rédiger la visite guidée et finaliser |
add_review_node |
Ajouter un constat de révision structuré (fichier, ligne, priorité P0–P3) à un espace de révision |
confirm_review_node |
Confirmer le constat d’un pair ; l’auteur ne peut pas confirmer le sien |
resolve_review_node |
Marquer un constat comme corrigé après avoir réellement fait la modification ; publie une trace dans l’espace de révision |
dismiss_review_node |
Rejeter un constat non applicable ; consigne un fait de suppression pour que les relecteurs cessent de le signaler |
request_peer_review |
Demander à un autre agent relecteur un second regard sur un constat |
dispatch_reviewers |
Lancer simultanément les agents relecteurs correspondants dans un espace de révision |
submit_reviewer_verdict |
Publier un verdict ship/hold/block par relecteur, avec un niveau de confiance et une explication |
finalize_review |
Calculer le consensus par nœud et le verdict de la PR, puis clore la révision |
set_cohort_summary |
Définir le résumé en langage clair d’une cohorte de révision |
add_review_diagram |
Joindre à une cohorte un diagramme structuré et vérifié par graphe (sequence, entityRelation, stateMachine) |
publish_review_to_github |
Publier la révision finalisée dans 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 |
Rechercher dans les faits et les politiques (par mot-clé, sémantique ou hybride — hybride par défaut) |
propose_fact |
Stocker un court fait en markdown dans un domaine |
supersede_fact |
Marquer un fait comme remplacé par un autre |
propose_policy |
Stocker une règle normative dans un domaine (exige un droit d’écriture sur celui-ci) |
supersede_policy |
Retirer une politique — la marque inactive tout en la conservant pour l’audit |
list_policies |
Lister les politiques actives, avec filtrage facultatif par domaine |
list_memory_domains |
Lister les domaines de mémoire de l’espace de travail avec le nombre de faits et de politiques |
record_observation |
Consigner une observation brute dans la mémoire de travail de l’agent |
get_my_notes |
Lire le bloc-notes de mémoire de travail de l’agent appelant |
update_my_notes |
Mettre à jour le bloc-notes de mémoire de travail de l’agent appelant |
remember |
Ajouter une note à la mémoire de travail vive de l’agent pour cette session (bornée par TTL et par nombre) |
consolidate_memory |
Exécuter une passe de consolidation (« sommeil ») : évincer les éléments chauds expirés, verser les durables dans les faits à long terme |
harmonize_memory |
Exécuter l’harmonisation des croyances entre agents (SHMR) et signaler les contradictions |
list_memory_conflicts |
Lister 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éer un objectif organisationnel (niveau entreprise, équipe, agent ou tâche) |
list_goals |
Lister les objectifs avec leur niveau, leur statut et leur progression agrégée |
update_goal_progress |
Définir la progression d’un objectif |
create_approval |
Ouvrir une approbation du conseil pour une action gouvernée (sortie de plan, fusion, publication, embauche, personnalisée) |
list_approvals |
Lister les approbations, avec filtrage facultatif par statut |
decide_approval |
Consigner une décision : approuver, rejeter, demander une révision ou soumettre de nouveau |
comment_approval |
Commenter une approbation du conseil |
exit_plan_mode |
Ouvrir (puis, une fois approuvée, consommer) une approbation plan_exit, faisant sortir la conversation du mode plan |
agent_heartbeat |
Signaler la vitalité (en vie, inactif, bloqué) ; le silence fait passer la santé d’exécution à récemment perdu, puis hors ligne |
list_runtime_health |
Lister la santé d’exécution de chaque agent |
list_agent_presence |
Lister la présence de chaque agent (santé, cycle de vie, exécutions en cours et en file, capacité) |
get_org_chart |
Lire l’arbre hiérarchique, avec le CEO à la racine, imbriqué selon reports_to |
create_work_product |
Créer un livrable durable rattaché à un ticket |
save_work_product_revision |
Enregistrer une nouvelle révision ; passer base_revision_id pour être rejeté en cas de modification concurrente |
list_work_products |
Lister les livrables, avec filtrage facultatif sur un ticket |
get_work_product |
Lire un livrable avec son historique de révisions |
create_runtime_profile |
Définir un profil d’exécution réutilisable (famille de protocoles, commande CLI, arguments de lancement fixes) |
list_runtime_profiles |
Lister 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 toute autre langue sont absents.
| Outil | Description |
|---|---|
search_code |
Rechercher les symboles indexés par nom, signature et commentaire de documentation (hybride BM25 + sémantique) |
code_symbol |
Rechercher des symboles par nom exact ; renvoie file:line et la signature |
code_callers |
Lister les symboles qui appellent un symbole ou en dépendent (arêtes entrantes) |
code_callees |
Lister les symboles qu’un symbole appelle ou dont il dépend (arêtes sortantes) |
code_impact |
Calculer le rayon d’impact transitif d’un symbole, jusqu’à une profondeur donnée |
Outils de billetterie
Section intitulée “Outils de billetterie”| Outil | Description |
|---|---|
create_ticket |
Créer un ticket sur le fournisseur configuré |
get_ticket |
Récupérer un ticket par son identifiant |
list_tickets |
Lister les tickets, avec filtrage facultatif par statut ou par personne assignée |
update_ticket |
Mettre à jour le statut, le titre, la description, la priorité ou les étiquettes (le statut accepte des alias comme in_progress / completed) |
assign_ticket |
Assigner un ticket à un agent, à une équipe, ou aux deux |
reassign_ticket |
Réassigner un ticket à un autre agent |
add_ticket_collaborator |
Inviter un agent à collaborer sur un ticket (ajouté à son espace) |
comment_on_ticket |
Commenter un ticket |
close_ticket |
Fermer un ticket (le marque comme terminé) avec une sortie facultative |
fail_ticket |
Marquer un ticket comme échoué avec un message d’erreur |
delegate_ticket |
Déléguer un ticket à un agent en créant un ticket suivi |
ticket_pr_link |
Lier ou dissocier un ticket et une demande de tirage par l’id de nœud de la PR (action : link | unlink) |
ticket_relation |
Ajouter ou retirer 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 |
Lister le parent, les sous-tickets et les liens de dépendance d’un ticket |
Outils d’équipe et de pipeline
Section intitulée “Outils d’équipe et de pipeline”| Outil | Description |
|---|---|
record_team_activity |
Consigner une entrée d’activité d’un chef d’équipe relativement à un ticket |
preview_trigger |
Simuler à blanc les exécutions de pipeline qu’un événement hypothétique déclencherait, sans rien valider |
submit_output |
Soumettre la charge utile 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 |
Émettre un plan d’orchestration multi-agents structuré pour une approbation préalable unique ; valide et renvoie les violations éventuelles |
Outils de fil de nouvelles
Section intitulée “Outils de fil de nouvelles”| Outil | Description |
|---|---|
list_feeds |
Lister les fils RSS/Atom enregistrés |
list_articles |
Lister les articles, avec filtrage facultatif par fil, non lus ou enregistrés |
get_article |
Récupérer un article |
set_article_read |
Marquer un article comme lu ou non lu |
set_article_saved |
Enregistrer un article ou annuler son enregistrement |
refresh_feeds |
Récupérer de nouveau tous les fils activés immédiatement |
Outils d’enceinte (rigs)
Section intitulée “Outils d’enceinte (rigs)”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, sans condition : savoir si une machine peut
réellement démarrer est une question à laquelle les outils répondent à chaque
appel, par sondage. 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 ou d’interface extrait est encadré
comme données non fiables. Les quatre outils d’utilisation, plus rig_close,
déclarent la classe d’action enclosureControl
(les outils d’utilisation déclarent aussi networkEgress et processSpawn ;
mobile_use et ios_use déclarent en outre packageInstall), de sorte 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 se
trouve dans la référence des rigs.
| Outil | Description |
|---|---|
computer_use |
Piloter un bureau Linux dans une VM en enceinte : déplacer, cliquer, glisser, faire défiler, saisir, redimensionner, presse-papiers, capture d’écran |
browser_use |
Piloter un Chromium, Firefox ou WebKit sans interface (engine) : naviguer, cliquer, remplir, extraire (a11y/DOM/console), presse-papiers, capture d’écran |
mobile_use |
Piloter Android par ADB : inspecter et saisir, captures d’écran, installer, démarrer, arrêter, réinitialiser et désinstaller des applications, liens profonds et commandes d’appareil au format argv |
ios_use |
Piloter le simulateur iOS par WebDriverAgent/CoreSimulator : inspecter et saisir, captures d’écran, installer, démarrer, arrêter et désinstaller des applications, liens profonds et processus de simulateur au format argv |
rig_list |
Lister les rigs d’un espace de travail avec leur surface, leur statut, la taille de l’affichage et le contrôleur |
rig_close |
Détruire un rig et jeter l’état des machines qu’il possède |
Non exposé par MCP
Section intitulée “Non exposé par MCP”Le calendrier et les réunions n’ont aucun outil MCP. Les agents ne peuvent pas lire votre calendrier, vos réunions, vos transcriptions, vos points d’action ni vos décisions. Le résumé qui produit les points d’action et les décisions s’exécute comme pipeline meeting_summary intégré, et non comme un outil qu’un agent peut appeler.
Filtrage des outils selon le mode
Section intitulée “Filtrage des outils selon le 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 permis |
review |
Une liste d’autorisation restreinte : la participation à la révision, la communication, les 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 : les 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 se font de façon déterministe après l’approbation, jamais en cours d’exécution |
Permis dans tous les modes, peu importe 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 question à l’opérateur est un outil du harnais (ask_user), donc elle 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 par le ConfirmationPort avant l’exécution de l’outil ; cc_server câble ce port, donc la barrière 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 vu mentionné ailleurs renvoie « unknown tool » :
| Capacité | Où elle se trouve plutôt |
|---|---|
| Embaucher, congédier 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 par RPC, qui amorce l’espace de travail et estampille la propriété |
| Projets (créer / lister / mettre à jour / classer) | L’interface des tickets. Les projets sont une surface d’opérateur — voir Projets |
| Poser une question bloquante à l’opérateur | L’outil ask_user du harnais, et non MCP. Il affiche un formulaire dans la conversation et bloque jusqu’à la réponse |
| Diagnostic par agent | Rien. Il n’existe aucun doctor — voir Diagnostic d’un agent |
| Calendrier et réunions | RPC pour les clients humains seulement (voir plus haut) |