Aller au contenu

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.

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.

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.

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.

Outil Description
list_agents Liste les agents enregistrés dans un espace de travail

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

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
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)
Outil Description
list_workspaces Liste tous les espaces de travail avec leurs identifiants et leurs noms (global ; sans workspace_id)
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
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)
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é
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
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

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
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
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
Outil Description
propose_orchestration Émet un plan d’orchestration multi-agents structuré pour une approbation unique en amont ; valide et renvoie les éventuelles violations
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é

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

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.

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.

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.

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)