Salta ai contenuti

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.

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.

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.

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.

Strumento Descrizione
list_agents Elenca gli agenti registrati in uno spazio di lavoro

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

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
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)
Strumento Descrizione
list_workspaces Elenca tutti gli spazi di lavoro con i loro id e nomi (globale; nessun workspace_id)
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
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)
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
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
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

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à
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
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
Strumento Descrizione
propose_orchestration Emette un piano di orchestrazione multi-agente strutturato per una sola approvazione iniziale; convalida e restituisce eventuali violazioni
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

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

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.

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.

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.

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)