Sari la conținut

Instrumente MCP

cc_server găzduiește un singur registru de instrumente MCP (JSON-RPC 2.0), servit pe portul principal al serverului (implicit 9030) la POST /mcp și GET /sse, versiunea de protocol 2024-11-05. Fiecare client ajunge la același registru: aplicația desktop, versiunea web, clienții MCP externi și runtime-ul de agenți încorporat. Serverele MCP externe pot fi conectate în același registru ca un strat dinamic.

Măsură Număr
Instrumente înregistrate de cc_server 110
Din packages/cc_mcp 108
Din packages/cc_mcp_client (descoperirea instrumentelor) 2
Înregistrate în registrul de bază (server_mcp_registry.dart) 63
Înregistrate după pornire, pe măsură ce serviciile lor devin disponibile (cc_server_runtime.dart) 47
Dintre cele 63 ale registrului de bază, condiționate de un repo cu graf de cod 5

Cele cinci instrumente de graf de cod sunt înregistrate doar când gazda transmite un repo cu graf de cod către buildServerMcpRegistry. cc_server transmite mereu unul, așa că toate cele 110 sunt active în binarul livrat.

Registrul complet este anunțat în tools/list, fără restricționare la descoperire. Editările de tichete sunt instrumente tipizate.

Obligatoriu la fiecare instrument care atinge date limitate la spațiul de lucru. Un workspace_id lipsă sau nevalid returnează o eroare explicită, iar o valoare care nu corespunde spațiului de lucru al entității țintă este refuzată, nu ignorată în tăcere. Omite-l la instrumentele cu adevărat globale: list_workspaces și cele șase instrumente de flux de știri (list_feeds, list_articles, get_article, set_article_read, set_article_saved, refresh_feeds), care se folosesc de lista de fluxuri per utilizator a proprietarului serverului. Instrumentele de descoperire (search_tool_bm25, list_my_tools) îl primesc opțional, ca să poată clasifica apelabilitatea după modul conversației. Când serverul trimite un agent, spațiul de lucru este impus pe server, așa că agentul nu poate ajunge în alt spațiu de lucru transmitând un id străin.

Ambele vin din cc_mcp_client, nu din cc_mcp, și ambele consultă garda de mod, ca să raporteze ce este apelabil în modul curent al conversației.

Instrument Descriere
search_tool_bm25 Caută în catalogul de instrumente după cuvânt cheie; returnează instrumentele potrivite, schemele lor de argumente și dacă fiecare este apelabil chiar acum
list_my_tools Listează instrumentele apelabile chiar acum în această conversație, filtrate după modul ei

Un al treilea instrument de descoperire, search_tools, există doar în interiorul harness-ului încorporat și nu face parte din acest registru MCP. El clasează suprafața proprie de instrumente a rulării și, spre deosebire de search_tool_bm25, încarcă schemele a ceea ce găsește, ca agentul să poată apela o potrivire la următorul tur. Agenții de pe harness ar trebui să îl prefere; clienții MCP au search_tool_bm25.

Instrument Descriere
list_agents Listează agenții înregistrați într-un spațiu de lucru

Agenții vorbesc între ei prin spații (durabile, vizibile în listă). ask_agent este cerere/răspuns cu un timeout obligatoriu; delegate_task este protejat pe server de un plafon de adâncime, detectarea ciclurilor, o anvelopă bugetară și un plafon de autonomie.

Instrument Descriere
send_to_agent Trimite un mesaj unidirecțional altui agent, adresat prin to_agent_id sau prin to_agent_name exact
ask_agent Pune o întrebare altui agent și așteaptă răspunsul lui sau expiră
delegate_task Deleagă o sarcină altui agent ca tichet copil urmărit
consult_agent Adaugă în spațiu specialistul cel mai potrivit după skill-uri și îl trimite cu un brief concentrat
todo_read Citește lista de sarcini persistată a acestei conversații

Fiecare instalare și actualizare trece printr-o poartă de scanare cu eșec închis înainte ca vreun conținut de skill să ajungă pe disc sau într-un prompt de agent.

Instrument Descriere
list_skills Listează slug-urile de skill disponibile într-un spațiu de lucru
create_skill Creează un skill nou din conținut markdown
install_skill Instalează întregul director al unui skill dintr-un depozit GitHub, la un ref fixat
update_skill Actualizează un skill GitHub instalat la un ref nou, rescanând și refixând
list_skill_updates Listează skill-urile pentru care există o versiune mai nouă
verify_skills Verifică skill-urile blocate față de hash-urile de conținut de pe disc
pin_skill Calculează hash-ul unui skill existent de pe disc în skills-lock.json
Instrument Descriere
submit_plan Contractul de ieșire al modului plan: emite un PlanDocument tipizat care se deschide în Plan Studio
create_playbook Salvează un plan ca șablon numit și versionat, cu substituenți tipizați {{param}}
run_playbook Instanțiază un playbook cu valori de parametri, producând un plan pe care operatorul îl aprobă
publish_artifact Publică o listă ordonată de blocuri tipizate (markdown, tabel, grafic, mermaid, cod, JSON) randate nativ în client
revise_artifact Înlocuiește conținutul unui artefact publicat
list_artifacts Listează artefactele spațiului de lucru
get_artifact Citește un artefact
complete_goal Declară atins obiectivul durabil activ al conversației (pornit cu /goal sau /loop)
Instrument Descriere
list_workspaces Listează toate spațiile de lucru cu id-urile și numele lor (global; fără workspace_id)
Instrument Descriere
list_repos Listează depozitele înregistrate într-un spațiu de lucru. Apelanții agenți primesc căile worktree-urilor izolate copy-on-write ale conversației lor, niciodată checkout-urile originale
Instrument Descriere
list_spaces Listează spațiile de mesagerie dintr-un spațiu de lucru
get_messages Preia mesajele dintr-un spațiu
send_message Trimite un mesaj într-un spațiu ca agent expeditor numit
get_space_notes Citește documentul de predare partajat al unui spațiu
update_space_notes Înlocuiește documentul de predare partajat al unui spațiu
todo_write Înlocuiește lista de sarcini a acestei conversații într-un singur apel (transmite lista completă)
Instrument Descriere
start_ai_review Pornește revizuirea IA pentru un PR: calculează zonele de revizuire, distribuie recenzenți specialiști în spațiul PR-ului, redactează prezentarea ghidată și finalizează
add_review_node Adaugă o constatare de revizuire structurată (fișier, linie, prioritate P0–P3) într-un spațiu de revizuire
confirm_review_node Confirmă constatarea unui coleg; autorul nu se poate autoconfirma
resolve_review_node Marchează o constatare ca reparată după ce ai făcut efectiv modificarea; postează o urmă în spațiul de revizuire
dismiss_review_node Respinge o constatare care nu se aplică; înregistrează un fapt de suprimare, ca recenzenții să nu o mai semnaleze
request_peer_review Cere unui alt agent recenzent o a doua părere asupra unei constatări
dispatch_reviewers Trimite în paralel agenții recenzenți potriviți într-un spațiu de revizuire
submit_reviewer_verdict Postează un verdict ship/hold/block per recenzent, cu încredere și o explicație
finalize_review Calculează consensul per nod și verdictul per PR și închide revizuirea
set_cohort_summary Setează rezumatul în limbaj simplu al unei cohorte de revizuire
add_review_diagram Atașează unei cohorte o diagramă structurată, verificată de graf (sequence, entityRelation, stateMachine)
publish_review_to_github Publică pe GitHub revizuirea finalizată, ca comentarii inline plus un corp de rezumat
Instrument Descriere
search_memory Caută fapte și politici (cuvânt cheie, semantic sau hibrid — hibrid este implicit)
propose_fact Stochează un fapt markdown scurt într-un domeniu
supersede_fact Marchează un fapt ca înlocuit de altul
propose_policy Stochează o regulă normativă într-un domeniu (necesită permisiune de scriere pe el)
supersede_policy Retrage o politică — o marchează ca inactivă, păstrând-o pentru audit
list_policies Listează politicile active, opțional filtrate după domeniu
list_memory_domains Listează domeniile de memorie ale spațiului de lucru, cu numărul de fapte și de politici
record_observation Înregistrează o observație brută în memoria de lucru a agentului
get_my_notes Citește caietul de notițe din memoria de lucru a agentului apelant
update_my_notes Actualizează caietul de notițe din memoria de lucru a agentului apelant
remember Adaugă o notă în memoria de lucru fierbinte a agentului pentru această sesiune (limitată ca TTL și ca număr)
consolidate_memory Rulează o trecere de consolidare („somn”): elimină elementele fierbinți expirate, transformă cele durabile în fapte pe termen lung
harmonize_memory Rulează armonizarea convingerilor între agenți (SHMR) și semnalează contradicțiile
list_memory_conflicts Listează contradicțiile detectate și modul în care a fost rezolvată fiecare
Instrument Descriere
create_goal Creează un obiectiv organizațional (la nivel de companie, echipă, agent sau sarcină)
list_goals Listează obiectivele cu nivel, stare și progres agregat
update_goal_progress Setează progresul unui obiectiv
create_approval Deschide o aprobare a consiliului pentru o acțiune guvernată (ieșire din plan, îmbinare, lansare, angajare, personalizată)
list_approvals Listează aprobările, opțional filtrate după stare
decide_approval Înregistrează o decizie: aprobă, respinge, cere revizuire sau retrimite
comment_approval Comentează o aprobare a consiliului
exit_plan_mode Deschide (și, odată aprobată, consumă) o aprobare plan_exit, scotând conversația din modul plan
agent_heartbeat Raportează vitalitatea (activ, inactiv, blocat); tăcerea trece starea de funcționare a runtime-ului în pierdut recent, apoi în offline
list_runtime_health Listează starea de funcționare a runtime-ului fiecărui agent
list_agent_presence Listează prezența fiecărui agent (starea de funcționare, ciclul de viață, numărul de rulări și de sarcini în coadă, capacitatea)
get_org_chart Citește arborele de raportare, cu CEO-ul la rădăcină, imbricat după reports_to
create_work_product Creează un livrabil durabil atașat unui tichet
save_work_product_revision Salvează o revizie nouă; transmite base_revision_id pentru a fi respins la o editare concurentă
list_work_products Listează produsele de lucru, opțional filtrate la un singur tichet
get_work_product Citește un produs de lucru împreună cu istoricul reviziilor lui
create_runtime_profile Definește un profil de runtime reutilizabil (familie de protocoale, comandă CLI, argumente de lansare fixe)
list_runtime_profiles Listează profilele de runtime ale spațiului de lucru

Înregistrate doar când gazda furnizează un repo cu graf de cod. Indexul acoperă setul de gramatici livrat (Dart, JS/TS, PHP, Python, Rust, Zig, C/C++, Go, Java, Ruby, C#, Swift, Kotlin, R, Assembly, MATLAB, Ada); simbolurile din orice alt limbaj nu sunt prezente.

Instrument Descriere
search_code Caută simbolurile indexate după nume, semnătură și comentariu de documentație (hibrid BM25 + semantic)
code_symbol Caută simboluri după nume exact; returnează file:line și semnătura
code_callers Listează simbolurile care apelează sau depind de un simbol (muchii de intrare)
code_callees Listează simbolurile pe care le apelează sau de care depinde un simbol (muchii de ieșire)
code_impact Calculează raza de impact tranzitivă a unui simbol, până la o adâncime
Instrument Descriere
create_ticket Creează un tichet la providerul configurat
get_ticket Preia un tichet după id
list_tickets Listează tichetele, opțional filtrate după stare sau responsabil
update_ticket Actualizează starea, titlul, descrierea, prioritatea sau etichetele (starea acceptă aliasuri precum in_progress / completed)
assign_ticket Atribuie un tichet unui agent și/sau unei echipe
reassign_ticket Reatribuie un tichet unui alt agent
add_ticket_collaborator Invită un agent să colaboreze la un tichet (adăugat în spațiul lui)
comment_on_ticket Comentează un tichet
close_ticket Închide un tichet (îl marchează ca finalizat), cu un rezultat opțional
fail_ticket Marchează un tichet ca eșuat, cu un mesaj de eroare
delegate_ticket Deleagă un tichet unui agent, creând un tichet urmărit
ticket_pr_link Leagă sau dezasociază un tichet și un pull request după id-ul nodului PR (action: link | unlink)
ticket_relation Adaugă sau elimină o relație între două tichete — blocked_by, blocking, related_to, duplicate_of, duplicated_by, sub_issue_of, parent_of (action: add | remove)
list_ticket_relations Listează părintele unui tichet, subproblemele și legăturile de dependență
Instrument Descriere
record_team_activity Înregistrează o intrare de activitate a unui lider de echipă pe un tichet
preview_trigger Rulează în probă ce rulări de pipeline ar porni un eveniment ipotetic, fără să angajeze nimic
submit_output Trimite payload-ul de ieșire structurat pentru rularea curentă de pipeline a apelantului; validat față de schema de ieșire declarată a rulării
Instrument Descriere
propose_orchestration Emite un plan structurat de orchestrare multi-agent pentru o singură aprobare prealabilă; validează și returnează eventualele încălcări
Instrument Descriere
list_feeds Listează fluxurile RSS/Atom înregistrate
list_articles Listează articolele, opțional filtrate după flux, necitite sau salvate
get_article Preia un articol
set_article_read Marchează un articol ca citit sau necitit
set_article_saved Salvează sau anulează salvarea unui articol
refresh_feeds Repreia acum fiecare flux activat

Conduc mașini de unică folosință — un browser sau un desktop Linux într-un mediu izolat, un emulator Android sau un simulator iOS — din interiorul unei rulări. Înregistrate după pornire, necondiționat: dacă o mașină poate porni efectiv este o întrebare de sondare la care instrumentele răspund la fiecare apel. Apelurile repetate dintr-o conversație refolosesc o singură mașină; capturile de ecran se întorc ca conținut imagine, cu un buget de o imagine per rezultat, iar conținutul de pagină/UI extras este delimitat ca date neîncrezute. Cele patru instrumente de utilizare plus rig_close declară clasa de acțiuni enclosureControl (instrumentele de utilizare declară și networkEgress și processSpawn; mobile_use și ios_use declară și packageInstall), așa că modurile doar-citire le refuză. rig_list nu declară niciuna — citește doar starea spațiului de lucru. Vocabularul complet de verbe pentru fiecare suprafață se află în referința stațiilor.

Instrument Descriere
computer_use Conduce un desktop Linux într-o VM izolată: mișcă, dă clic, trage, derulează, tastează, redimensionează, clipboard, captură de ecran
browser_use Conduce un Chromium, Firefox sau WebKit headless (engine): navighează, dă clic, completează, extrage (a11y/DOM/consolă), clipboard, captură de ecran
mobile_use Conduce Android prin ADB: inspectare/intrare, capturi de ecran, instalare/pornire/oprire/resetare/dezinstalare de aplicații, link-uri profunde și comenzi de dispozitiv în forma argv
ios_use Conduce simulatorul iOS prin WebDriverAgent/CoreSimulator: inspectare/intrare, capturi de ecran, instalare/pornire/oprire/dezinstalare de aplicații, link-uri profunde și procese de simulator în forma argv
rig_list Listează stațiile unui spațiu de lucru cu suprafața, starea, dimensiunea afișajului și controlerul
rig_close Distruge o stație și aruncă starea mașinii pe care o deține

Calendarul și întâlnirile nu au instrumente MCP. Agenții nu pot citi calendarul, întâlnirile, transcrierile, acțiunile de urmat sau deciziile tale. Rezumatul care produce acțiunile de urmat și deciziile rulează ca pipeline-ul încorporat meeting_summary, nu ca un instrument pe care un agent îl poate apela.

Restricționarea este aplicată de două ori, pornind de la un singur tabel (ModeToolPolicy): o dată în dispecerul MCP pentru adaptorul Claude Code și o dată în registrul harness-ului încorporat. Un apel blocat returnează motivul.

Mod Suprafața de instrumente
chat Toate instrumentele înregistrate; fără listă de permisiuni
plan O listă de permisiuni atent selectată. Fără scrieri în worktree și fără verbele de tichet create / assign / delegate, dar memoria, artefactele, todo-urile, submit_plan, exit_plan_mode și verbele de finalizare a tichetului pe tichetul trimis sunt permise
review O listă de permisiuni atent selectată: participare la revizuire, comunicare, preluări de context doar-citire și setul complet de verbe de tichet, inclusiv create_ticket și assign_ticket
orchestrate O listă de permisiuni atent selectată: instrumente de cercetare și de citire, plus propose_orchestration, create_playbook și run_playbook. Angajarea, descompunerea și finalizarea tichetelor se produc determinist după aprobare, niciodată în timpul rulării

Permise în orice mod, indiferent de lista de permisiuni:

Set Instrumente
Memorie și artefacte 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
Graf de cod search_code, code_symbol, code_callers, code_callees, code_impact
Mecanica rulării search_tool_bm25, list_my_tools, todo_write, todo_read

Faptul de a fi pe o listă de permisiuni nu face un instrument apelabil, și nici invers: capabilitatea de a pune întrebări operatorului este un instrument de harness (ask_user), așa că nu apare niciodată în acest catalog MCP.

Un instrument poate declara requiresApproval. Dispecerul construiește atunci un ApprovalPayload și îl expune prin ConfirmationPort înainte ca instrumentul să ruleze; cc_server conectează acel port, așa că poarta este activă.

Instrumentele înregistrate care îl declară: 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.

Independent, guardrail-urile unificate de acțiuni aplică o poartă oricărui instrument care declară un set nevid de ActionClass. O decizie prompt fără niciun aprobator conectat este refuzată. Vezi Guardrail-uri.

Nu orice capabilitate din produs este accesibilă unui agent. Acestea nu au niciun instrument, așa că un nume pe care poate l-ai văzut menționat altundeva returnează „unknown tool”:

Capabilitate Unde se află în schimb
Angajarea, concedierea sau editarea unui agent Interfața de agenți. Nu există niciun instrument hire_agent / fire_agent / update_agent
Crearea unui spațiu de lucru workspace.upsert prin RPC, care inițializează și aplică proprietatea
Proiecte (creare / listare / actualizare / încadrare) Interfața de tichete. Proiectele sunt o suprafață de operator — vezi Organizează munca cu proiecte
Adresarea unei întrebări blocante operatorului Instrumentul de harness ask_user, nu MCP. Randează un formular în conversație și așteaptă blocat răspunsul
Diagnosticarea per agent Nimic. Nu există doctor — vezi Diagnostichează un agent
Calendar și întâlniri RPC doar pentru clienții umani (vezi mai sus)