Strumenti MCP
cc_server ospita un unico registro di strumenti MCP (JSON-RPC 2.0), servito sulla porta principale del server (predefinita 9030) su POST /mcp e GET /sse, versione del protocollo 2024-11-05. Ogni client raggiunge lo stesso registro: il desktop, la build web, i client MCP esterni e il runtime integrato degli agenti. I server MCP esterni possono essere collegati allo stesso registro come livello dinamico.
Dimensione del registro
Sezione intitolata “Dimensione del registro”| Voce | Conteggio |
|---|---|
Strumenti registrati da cc_server |
110 |
Da packages/cc_mcp |
108 |
Da packages/cc_mcp_client (scoperta degli strumenti) |
2 |
Registrati nel registro di base (server_mcp_registry.dart) |
63 |
Registrati dopo l’avvio man mano che i loro servizi partono (cc_server_runtime.dart) |
47 |
| Dei 63 del registro di base, condizionati a un repository con grafo del codice | 5 |
I cinque strumenti del grafo del codice vengono registrati solo quando l’host passa un repository con grafo del codice a buildServerMcpRegistry. cc_server ne passa sempre uno, quindi tutti e 110 sono attivi nel binario distribuito.
Il registro completo è annunciato in tools/list senza filtri di scoperta. Le modifiche ai ticket sono strumenti tipizzati.
Parametri comuni
Sezione intitolata “Parametri comuni”workspace_id
Sezione intitolata “workspace_id”Obbligatorio su ogni strumento che tocca dati con ambito di spazio di lavoro. Un workspace_id mancante o non valido restituisce un errore esplicito, e un valore che non corrisponde allo spazio di lavoro dell’entità di destinazione viene rifiutato anziché ignorato in silenzio. Omettilo sugli strumenti davvero globali: list_workspaces e i sei strumenti delle notizie (list_feeds, list_articles, get_article, set_article_read, set_article_saved, refresh_feeds), che cavalcano l’elenco dei feed per utente del proprietario del server. Gli strumenti di scoperta (search_tool_bm25, list_my_tools) lo accettano in modo facoltativo, così possono classificare l’invocabilità in base alla modalità della conversazione. Quando un agente viene inviato dal server, lo spazio di lavoro è forzato lato server, quindi l’agente non può raggiungere un altro spazio di lavoro passando un id estraneo.
Scoperta degli strumenti
Sezione intitolata “Scoperta degli strumenti”Entrambi provengono da cc_mcp_client, non da cc_mcp, ed entrambi consultano il controllo della modalità, così riportano ciò che è invocabile nella modalità corrente della conversazione.
| Strumento | Descrizione |
|---|---|
search_tool_bm25 |
Cerca nel catalogo degli strumenti per parola chiave; restituisce gli strumenti corrispondenti, i loro schemi degli argomenti e se ciascuno è invocabile in questo momento |
list_my_tools |
Elenca gli strumenti invocabili in questo momento in questa conversazione, filtrati in base alla sua modalità |
Un terzo strumento di scoperta, search_tools, esiste solo dentro l’harness integrato e non fa parte di questo registro MCP. Classifica la superficie di strumenti dell’esecuzione stessa e, a differenza di search_tool_bm25, carica gli schemi di ciò che trova, così l’agente può chiamare una corrispondenza al turno successivo. Gli agenti sull’harness dovrebbero preferirlo; i client MCP hanno search_tool_bm25.
Strumenti degli agenti
Sezione intitolata “Strumenti degli agenti”| Strumento | Descrizione |
|---|---|
list_agents |
Elenca gli agenti registrati in uno spazio di lavoro |
Messaggistica tra agenti pari e delega
Sezione intitolata “Messaggistica tra agenti pari e delega”Gli agenti parlano tra loro tramite gli spazi (durevoli, visibili nel roster). ask_agent è richiesta/risposta con un timeout obbligatorio; delegate_task è protetto lato server da un tetto di profondità, dal rilevamento dei cicli, da un perimetro di budget e da un tetto di autonomia.
| Strumento | Descrizione |
|---|---|
send_to_agent |
Invia un messaggio a senso unico a un altro agente, indirizzato tramite to_agent_id o to_agent_name esatto |
ask_agent |
Poni una domanda a un altro agente e attendi la sua risposta, oppure vai in timeout |
delegate_task |
Delega un’attività a un altro agente come ticket figlio tracciato |
consult_agent |
Aggiungi allo spazio lo specialista che corrisponde meglio per skill e invialo con un brief mirato |
todo_read |
Leggi la checklist delle attività persistita di questa conversazione |
Strumenti per le skill
Sezione intitolata “Strumenti per le skill”Ogni installazione e ogni aggiornamento passa attraverso un gate di scansione fail-closed prima che qualsiasi contenuto di skill raggiunga il disco o il prompt di un agente.
| Strumento | Descrizione |
|---|---|
list_skills |
Elenca gli slug delle skill disponibili in uno spazio di lavoro |
create_skill |
Crea una nuova skill da contenuto markdown |
install_skill |
Installa l’intera directory di una skill da un repository GitHub a un ref fissato |
update_skill |
Aggiorna una skill GitHub installata a un nuovo ref, rieseguendo la scansione e fissando di nuovo il ref |
list_skill_updates |
Elenca le skill per cui è disponibile una versione più recente |
verify_skills |
Verifica le skill bloccate rispetto ai loro hash di contenuto su disco |
pin_skill |
Calcola l’hash di una skill esistente su disco e lo scrive in skills-lock.json |
Strumenti per piani, playbook e artefatti
Sezione intitolata “Strumenti per piani, playbook e artefatti”| Strumento | Descrizione |
|---|---|
submit_plan |
Il contratto di output della modalità Piano: emette un PlanDocument tipizzato che si apre in Plan Studio |
create_playbook |
Salva un piano come modello con nome e versionato, con segnaposto {{param}} tipizzati |
run_playbook |
Istanzia un playbook con i valori dei parametri, producendo un piano che l’operatore approva |
publish_artifact |
Pubblica un elenco ordinato di blocchi tipizzati (markdown, tabella, grafico, mermaid, codice, JSON) renderizzati nativamente nel client |
revise_artifact |
Sostituisci il contenuto di un artefatto pubblicato |
list_artifacts |
Elenca gli artefatti dello spazio di lavoro |
get_artifact |
Leggi un artefatto |
complete_goal |
Dichiara raggiunto l’obiettivo durevole attivo della conversazione (avviato con /goal o /loop) |
Strumenti per gli spazi di lavoro
Sezione intitolata “Strumenti per gli spazi di lavoro”| Strumento | Descrizione |
|---|---|
list_workspaces |
Elenca tutti gli spazi di lavoro con i loro id e nomi (globale; nessun workspace_id) |
Strumenti per i repo
Sezione intitolata “Strumenti per i repo”| Strumento | Descrizione |
|---|---|
list_repos |
Elenca i repo registrati in uno spazio di lavoro. I chiamanti agent ricevono i percorsi dei worktree isolati copy-on-write della loro conversazione, mai i checkout originali |
Strumenti di messaggistica
Sezione intitolata “Strumenti di messaggistica”| Strumento | Descrizione |
|---|---|
list_spaces |
Elenca gli spazi di messaggistica in uno spazio di lavoro |
get_messages |
Recupera i messaggi da uno spazio |
send_message |
Invia un messaggio a uno spazio come agente mittente con nome |
get_space_notes |
Leggi il documento condiviso di passaggio di consegne di uno spazio |
update_space_notes |
Sostituisci il documento condiviso di passaggio di consegne di uno spazio |
todo_write |
Sostituisci la checklist delle attività di questa conversazione in una sola chiamata (passa l’elenco completo) |
Strumenti di revisione
Sezione intitolata “Strumenti di revisione”| Strumento | Descrizione |
|---|---|
start_ai_review |
Avvia la revisione IA di una PR: calcola le aree di revisione, distribuisce i revisori specialistici nello spazio della PR, scrive il percorso guidato e finalizza |
add_review_node |
Aggiungi un rilievo di revisione strutturato (file, riga, priorità P0–P3) a uno spazio di revisione |
confirm_review_node |
Conferma il rilievo di un pari; l’autore non può confermare da sé |
resolve_review_node |
Contrassegna un rilievo come risolto dopo aver effettuato davvero la modifica; pubblica una traccia nello spazio di revisione |
dismiss_review_node |
Scarta un rilievo che non si applica; registra un fatto di soppressione così i revisori smettono di segnalarlo di nuovo |
request_peer_review |
Chiedi a un altro agente revisore un secondo parere su un rilievo |
dispatch_reviewers |
Invia contemporaneamente gli agenti revisori corrispondenti in uno spazio di revisione |
submit_reviewer_verdict |
Pubblica un verdetto ship/hold/block per revisore, con confidenza e una spiegazione |
finalize_review |
Calcola il consenso per nodo e il verdetto per PR, e chiude la revisione |
set_cohort_summary |
Imposta il riepilogo in linguaggio semplice di una coorte di revisione |
add_review_diagram |
Allega a una coorte un diagramma strutturato e verificato dal grafo (sequence, entityRelation, stateMachine) |
publish_review_to_github |
Pubblica su GitHub la revisione finalizzata come commenti inline più un corpo di riepilogo |
Strumenti di memoria
Sezione intitolata “Strumenti di memoria”| Strumento | Descrizione |
|---|---|
search_memory |
Cerca fatti e policy (per parola chiave, semantica o ibrida — quella ibrida è l’impostazione predefinita) |
propose_fact |
Memorizza un breve fatto in markdown in un dominio |
supersede_fact |
Contrassegna un fatto come superato da un altro |
propose_policy |
Memorizza una regola normativa in un dominio (richiede il permesso di scrittura su di esso) |
supersede_policy |
Dismetti una policy — la contrassegna come inattiva pur conservandola per l’audit |
list_policies |
Elenca le policy attive, facoltativamente filtrate per dominio |
list_memory_domains |
Elenca i domini di memoria dello spazio di lavoro con i conteggi di fatti e policy |
record_observation |
Registra un’osservazione grezza nella memoria di lavoro dell’agente |
get_my_notes |
Leggi il blocco note della memoria di lavoro dell’agente chiamante |
update_my_notes |
Aggiorna il blocco note della memoria di lavoro dell’agente chiamante |
remember |
Aggiungi una nota alla memoria di lavoro calda dell’agente per questa sessione (limitata per TTL e per numero) |
consolidate_memory |
Esegue una passata di consolidamento («sonno»): elimina le voci calde scadute e trasforma quelle durevoli in fatti a lungo termine |
harmonize_memory |
Esegue l’armonizzazione delle convinzioni tra agenti (SHMR) e segnala le contraddizioni |
list_memory_conflicts |
Elenca le contraddizioni rilevate e come ciascuna è stata risolta |
Strumenti di governance
Sezione intitolata “Strumenti di governance”| Strumento | Descrizione |
|---|---|
create_goal |
Crea un obiettivo organizzativo (a livello di azienda, team, agente o attività) |
list_goals |
Elenca gli obiettivi con livello, stato e avanzamento aggregato |
update_goal_progress |
Imposta l’avanzamento di un obiettivo |
create_approval |
Apre un’approvazione della board per un’azione governata (uscita dal piano, merge, release, assunzione, personalizzata) |
list_approvals |
Elenca le approvazioni, facoltativamente filtrate per stato |
decide_approval |
Registra una decisione: approva, rifiuta, richiedi revisione o invia di nuovo |
comment_approval |
Commenta un’approvazione della board |
exit_plan_mode |
Apre (e, una volta approvata, consuma) un’approvazione plan_exit, portando la conversazione fuori dalla modalità Piano |
agent_heartbeat |
Segnala lo stato di attività (attivo, inattivo, bloccato); il silenzio porta lo stato di salute del runtime a recentemente perso, poi offline |
list_runtime_health |
Elenca lo stato di salute del runtime di ciascun agente |
list_agent_presence |
Elenca la presenza di ciascun agente (salute, ciclo di vita, conteggi in esecuzione e in coda, capacità) |
get_org_chart |
Leggi l’albero gerarchico, con il CEO alla radice, annidato tramite reports_to |
create_work_product |
Crea un deliverable durevole collegato a un ticket |
save_work_product_revision |
Salva una nuova revisione; passa base_revision_id per essere rifiutato in caso di modifica concorrente |
list_work_products |
Elenca i prodotti di lavoro, facoltativamente filtrati a un solo ticket |
get_work_product |
Leggi un prodotto di lavoro con la sua cronologia delle revisioni |
create_runtime_profile |
Definisci un profilo di runtime riutilizzabile (famiglia di protocolli, comando CLI, argomenti di avvio fissi) |
list_runtime_profiles |
Elenca i profili di runtime dello spazio di lavoro |
Strumenti del grafo del codice
Sezione intitolata “Strumenti del grafo del codice”Registrati solo quando l’host fornisce un repository con grafo del codice. L’indice copre l’insieme di grammatiche distribuite (Dart, JS/TS, PHP, Python, Rust, Zig, C/C++, Go, Java, Ruby, C#, Swift, Kotlin, R, Assembly, MATLAB, Ada); i simboli in qualsiasi altra lingua non sono presenti.
| Strumento | Descrizione |
|---|---|
search_code |
Cerca i simboli indicizzati per nome, firma e commento di documentazione (ibrido BM25 + semantico) |
code_symbol |
Cerca i simboli per nome esatto; restituisce file:line e la firma |
code_callers |
Elenca i simboli che chiamano o da cui dipende un simbolo (archi entranti) |
code_callees |
Elenca i simboli che un simbolo chiama o da cui dipende (archi uscenti) |
code_impact |
Calcola il raggio d’impatto transitivo di un simbolo, fino a una certa profondità |
Strumenti per i ticket
Sezione intitolata “Strumenti per i ticket”| Strumento | Descrizione |
|---|---|
create_ticket |
Crea un ticket sul provider configurato |
get_ticket |
Recupera un ticket per id |
list_tickets |
Elenca i ticket, facoltativamente filtrati per stato o assegnatario |
update_ticket |
Aggiorna stato, titolo, descrizione, priorità o etichette (lo stato accetta alias come in_progress / completed) |
assign_ticket |
Assegna un ticket a un agente e/o a un team |
reassign_ticket |
Riassegna un ticket a un agente diverso |
add_ticket_collaborator |
Invita un agente a collaborare a un ticket (viene aggiunto al suo spazio) |
comment_on_ticket |
Commenta un ticket |
close_ticket |
Chiudi un ticket (lo contrassegna come completato) con output facoltativo |
fail_ticket |
Contrassegna un ticket come non riuscito con un messaggio di errore |
delegate_ticket |
Delega un ticket a un agente, creando un ticket tracciato |
ticket_pr_link |
Collega o scollega un ticket e una pull request tramite l’id del nodo PR (action: link | unlink) |
ticket_relation |
Aggiungi o rimuovi una relazione tra due ticket — blocked_by, blocking, related_to, duplicate_of, duplicated_by, sub_issue_of, parent_of (action: add | remove) |
list_ticket_relations |
Elenca il ticket padre, i sotto-ticket e i collegamenti di dipendenza di un ticket |
Strumenti per team e pipeline
Sezione intitolata “Strumenti per team e pipeline”| Strumento | Descrizione |
|---|---|
record_team_activity |
Registra una voce di attività di un team leader su un ticket |
preview_trigger |
Simula quali esecuzioni di pipeline avvierebbe un evento ipotetico, senza impegnare nulla |
submit_output |
Invia il payload di output strutturato per l’esecuzione di pipeline corrente del chiamante; convalidato rispetto allo schema di output dichiarato dall’esecuzione |
Strumenti di orchestrazione
Sezione intitolata “Strumenti di orchestrazione”| Strumento | Descrizione |
|---|---|
propose_orchestration |
Emette un piano di orchestrazione multi-agente strutturato per una sola approvazione iniziale; convalida e restituisce eventuali violazioni |
Strumenti delle notizie
Sezione intitolata “Strumenti delle notizie”| Strumento | Descrizione |
|---|---|
list_feeds |
Elenca i feed RSS/Atom registrati |
list_articles |
Elenca gli articoli, facoltativamente filtrati per feed, non letti o salvati |
get_article |
Recupera un articolo |
set_article_read |
Contrassegna un articolo come letto o non letto |
set_article_saved |
Salva o rimuovi dai salvati un articolo |
refresh_feeds |
Ricarica subito ogni feed abilitato |
Strumenti di recinto (rig)
Sezione intitolata “Strumenti di recinto (rig)”Pilotano macchine usa e getta — un browser o un desktop Linux in recinto, un
emulatore Android o un simulatore iOS — dall’interno di un’esecuzione.
Registrati dopo l’avvio, senza condizioni: se una macchina possa davvero
avviarsi è una domanda da sondare a cui gli strumenti rispondono a ogni
chiamata. Chiamate ripetute in una stessa conversazione riusano una sola
macchina; gli screenshot tornano come contenuto immagine con un budget di una
immagine per risultato, e il contenuto di pagina/UI estratto è delimitato come
dati non attendibili. I quattro strumenti d’uso più rig_close dichiarano la
enclosureControl classe di azione
(gli strumenti d’uso dichiarano anche networkEgress e processSpawn;
mobile_use e ios_use dichiarano anche packageInstall), quindi le modalità
di sola lettura li negano. rig_list non ne dichiara nessuna — legge solo lo
stato dello spazio di lavoro. Il vocabolario completo dei verbi per superficie è
nel riferimento sui rig.
| Strumento | Descrizione |
|---|---|
computer_use |
Pilota un desktop Linux in una VM in recinto: muovi, fai clic, trascina, scorri, digita, ridimensiona, appunti, screenshot |
browser_use |
Pilota un Chromium, Firefox o WebKit headless (engine): naviga, fai clic, compila, estrai (a11y/DOM/console), appunti, screenshot |
mobile_use |
Pilota Android su ADB: ispeziona/invia input, screenshot, installa/avvia/ferma/ripristina/disinstalla app, deep link e comandi del dispositivo in forma argv |
ios_use |
Pilota il simulatore iOS tramite WebDriverAgent/CoreSimulator: ispeziona/invia input, screenshot, installa/avvia/ferma/disinstalla app, deep link e processi del simulatore in forma argv |
rig_list |
Elenca i rig di uno spazio di lavoro con superficie, stato, dimensione del display e controller |
rig_close |
Distruggi un rig e scarta lo stato della macchina che possiede |
Non esposti tramite MCP
Sezione intitolata “Non esposti tramite MCP”Calendario e riunioni non hanno strumenti MCP. Gli agenti non possono leggere il tuo calendario, le tue riunioni, le trascrizioni, le attività o le decisioni. Il riepilogo che produce attività e decisioni viene eseguito dalla pipeline meeting_summary integrata, non come strumento che un agente può chiamare.
Filtro degli strumenti per modalità
Sezione intitolata “Filtro degli strumenti per modalità”Il filtro è applicato due volte a partire da un’unica tabella (ModeToolPolicy): una nel dispatcher MCP per l’adattatore Claude Code e una nel registro dell’harness integrato. Una chiamata bloccata restituisce il motivo.
| Modalità | Superficie degli strumenti |
|---|---|
chat |
Ogni strumento registrato; nessuna lista di autorizzazione |
plan |
Una lista di autorizzazione curata. Nessuna scrittura nel worktree e nessun verbo ticket create / assign / delegate, ma sono consentiti memoria, artefatti, todo, submit_plan, exit_plan_mode e i verbi di completamento del ticket sul ticket inviato |
review |
Una lista di autorizzazione curata: partecipazione alla revisione, comunicazione, recuperatori di contesto in sola lettura e l’insieme completo dei verbi ticket, inclusi create_ticket e assign_ticket |
orchestrate |
Una lista di autorizzazione curata: strumenti di ricerca e lettura più propose_orchestration, create_playbook e run_playbook. Assunzioni, scomposizione e completamento dei ticket avvengono in modo deterministico dopo l’approvazione, mai a metà esecuzione |
Consentiti in ogni modalità a prescindere dalla lista di autorizzazione:
| Insieme | Strumenti |
|---|---|
| Memoria e artefatti | 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 |
| Grafo del codice | search_code, code_symbol, code_callers, code_callees, code_impact |
| Meccanica delle esecuzioni | search_tool_bm25, list_my_tools, todo_write, todo_read |
Stare in una lista di autorizzazione non rende invocabile uno strumento, e vale anche il contrario: la capacità di porre domande all’operatore è uno strumento dell’harness (ask_user), quindi non compare affatto in questo catalogo MCP.
Strumenti soggetti ad approvazione
Sezione intitolata “Strumenti soggetti ad approvazione”Uno strumento può dichiarare requiresApproval. Il dispatcher costruisce allora un ApprovalPayload e lo mostra attraverso la ConfirmationPort prima che lo strumento venga eseguito; cc_server collega quella porta, quindi il gate è attivo.
Strumenti registrati che lo dichiarano: 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.
In modo indipendente, i guardrail unificati delle azioni filtrano qualsiasi strumento che dichiari un insieme ActionClass non vuoto. Una decisione prompt senza alcun approvatore collegato viene negata. Vedi Guardrail.
Capacità senza alcuno strumento dietro
Sezione intitolata “Capacità senza alcuno strumento dietro”Non tutte le capacità del prodotto sono raggiungibili da un agente. Queste non hanno alcuno strumento, quindi un nome che potresti aver visto citato altrove restituisce «unknown tool»:
| Capacità | Dove risiede invece |
|---|---|
| Assumere, licenziare o modificare un agente | L’interfaccia degli agenti. Non esiste alcuno strumento hire_agent / fire_agent / update_agent |
| Creare uno spazio di lavoro | workspace.upsert via RPC, che inizializza e appone la proprietà |
| Progetti (crea / elenca / aggiorna / classifica) | L’interfaccia dei ticket. I progetti sono una superficie per l’operatore — vedi Progetti |
| Porre all’operatore una domanda bloccante | Lo strumento ask_user dell’harness, non MCP. Renderizza un modulo nella conversazione e si blocca in attesa della risposta |
| Diagnostica per agente | Nulla. Non esiste un doctor — vedi Diagnostica un agente |
| Calendario e riunioni | RPC solo per i client umani (vedi sopra) |