Aller au contenu

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.

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.

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.

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.

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

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

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

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

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

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.

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.

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.

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)