MCP 工具
cc_server 託管單一 MCP(JSON-RPC 2.0)工具註冊表,於主伺服器連接埠(預設 9030)的 POST /mcp 與 GET /sse 提供,協定版本 2024-11-05。每個用戶端都會連到同一個註冊表:桌面版、網頁版、外部 MCP 用戶端,以及內建的代理執行環境。外部 MCP 伺服器可以作為一個動態層,橋接進同一個註冊表。
註冊表大小
標題為「註冊表大小」的章節| 指標 | 數量 |
|---|---|
由 cc_server 註冊的工具 |
110 |
來自 packages/cc_mcp |
108 |
來自 packages/cc_mcp_client(工具探索) |
2 |
在基礎註冊表中註冊(server_mcp_registry.dart) |
63 |
開機後隨所屬服務啟動而註冊(cc_server_runtime.dart) |
47 |
| 基礎註冊表那 63 個之中,視乎是否有程式碼圖程式庫而定 | 5 |
這五個程式碼圖工具,只有在主機把程式碼圖程式庫傳給 buildServerMcpRegistry 時才會註冊。cc_server 一定會傳入一個,因此隨附的二進位檔中,全部 110 個工具都處於生效狀態。
整份註冊表都會在 tools/list 中對外宣告,沒有任何探索閘門。工單編輯是具型別的工具。
通用參數
標題為「通用參數」的章節workspace_id
標題為「workspace_id」的章節凡涉及工作區範圍資料的工具都必填。缺少或無效的 workspace_id 會回傳明確的錯誤,而與目標實體所屬工作區不符的值會被拒絕,不會被靜默略過。真正全域性的工具則可省略:list_workspaces 與六個資訊動態工具(list_feeds、list_articles、get_article、set_article_read、set_article_saved、refresh_feeds),它們用的是伺服器擁有者的每位使用者訂閱清單。探索工具(search_tool_bm25、list_my_tools)可選填,好讓它們按對話模式判斷可呼叫性。當代理由伺服器派發時,工作區會由伺服器端強制指定,因此代理無法透過傳入外來的 id 觸達另一個工作區。
工具探索
標題為「工具探索」的章節兩者都來自 cc_mcp_client,而非 cc_mcp;兩者都會查詢模式防護,因此回報的是_當前_對話模式下可呼叫的工具。
| 工具 | 說明 |
|---|---|
search_tool_bm25 |
以關鍵字搜尋工具目錄;回傳相符的工具、它們的引數 schema,以及每一個目前是否可呼叫 |
list_my_tools |
列出這個對話中目前可呼叫的工具,並按其模式篩選 |
第三個探索工具 search_tools 只存在於內建執行框架之內,並不屬於這個 MCP 註冊表。它會為該次執行自身的工具介面排序;與 search_tool_bm25 不同,它會載入找到項目的 schema,讓代理可以在下一個回合呼叫相符的工具。在執行框架上運行的代理應優先使用它;MCP 用戶端則有 search_tool_bm25。
代理工具
標題為「代理工具」的章節| 工具 | 說明 |
|---|---|
list_agents |
列出工作區中已註冊的代理 |
代理之間的訊息傳遞與委派
標題為「代理之間的訊息傳遞與委派」的章節代理透過空間互相通訊(持久,且在名冊上可見)。ask_agent 是請求/回覆模式,逾時為強制;delegate_task 則在伺服器端受深度上限、循環偵測、預算包絡與自主權上限所管控。
| 工具 | 說明 |
|---|---|
send_to_agent |
向另一個代理傳送單向訊息,以 to_agent_id 或完全相符的 to_agent_name 為地址 |
ask_agent |
向另一個代理提出問題並等待其回覆,或等候逾時 |
delegate_task |
把工作委派給另一個代理,成為一張受追蹤的子工單 |
consult_agent |
把技能最相符的專家加入空間,並以聚焦的任務簡述派發它 |
todo_read |
讀取這個對話已持久化的工作清單 |
技能工具
標題為「技能工具」的章節每次安裝與更新,都會先通過一道失效即拒絕的掃描閘門,技能內容才會到達磁碟或代理提示。
| 工具 | 說明 |
|---|---|
list_skills |
列出工作區中可用的技能 slug |
create_skill |
以 markdown 內容建立新技能 |
install_skill |
從 GitHub 程式庫安裝技能的整個目錄,並固定於指定的 ref |
update_skill |
把已安裝的 GitHub 技能更新至新的 ref,並重新掃描、重新固定 |
list_skill_updates |
列出有較新版本可用的技能 |
verify_skills |
依據磁碟上內容的雜湊值,驗證已鎖定的技能 |
pin_skill |
把磁碟上既有的技能雜湊進 skills-lock.json |
計劃、劇本與產出物工具
標題為「計劃、劇本與產出物工具」的章節| 工具 | 說明 |
|---|---|
submit_plan |
計劃模式的輸出契約:發出一個具型別的 PlanDocument,它會在 Plan Studio 中開啟 |
create_playbook |
把計劃儲存為具名、有版本的範本,並帶有具型別的 {{param}} 佔位符 |
run_playbook |
以參數值具現化劇本,產生一份由操作者核准的計劃 |
publish_artifact |
發佈一串有序的具型別區塊(markdown、表格、圖表、mermaid、程式碼、JSON),在用戶端原生渲染 |
revise_artifact |
取代已發佈產出物的內容 |
list_artifacts |
列出工作區的產出物 |
get_artifact |
讀取單一產出物 |
complete_goal |
宣告這個對話進行中的持久目標(以 /goal 或 /loop 啟動)已達成 |
工作區工具
標題為「工作區工具」的章節| 工具 | 說明 |
|---|---|
list_workspaces |
列出所有工作區及其 id 與名稱(全域;無需 workspace_id) |
程式庫工具
標題為「程式庫工具」的章節| 工具 | 說明 |
|---|---|
list_repos |
列出工作區中已註冊的程式庫。代理呼叫者會收到其對話專屬的寫入時複製 worktree 路徑,永遠不會是原始檢出 |
訊息工具
標題為「訊息工具」的章節| 工具 | 說明 |
|---|---|
list_spaces |
列出工作區中的訊息空間 |
get_messages |
從某個空間取得訊息 |
send_message |
以具名的傳送者代理身分,向某個空間傳送訊息 |
get_space_notes |
讀取某個空間的共用交接文件 |
update_space_notes |
取代某個空間的共用交接文件 |
todo_write |
一次呼叫即取代這個對話的工作清單(傳入整份清單) |
審查工具
標題為「審查工具」的章節| 工具 | 說明 |
|---|---|
start_ai_review |
為一個 PR 展開 AI 審查:計算審查範圍、把專家審查者分散派入該 PR 空間、撰寫走查,然後定案 |
add_review_node |
把一項結構化的審查發現(檔案、行號、P0 至 P3 優先級)加入審查空間 |
confirm_review_node |
確認同行的發現;作者不能自我確認 |
resolve_review_node |
在實際完成變更之後,把發現標記為已修正;並在審查空間貼出軌跡 |
dismiss_review_node |
駁回一項不適用的發現;記錄一筆抑制事實,讓審查者不再重複標記它 |
request_peer_review |
請另一位審查代理就某項發現再看一次 |
dispatch_reviewers |
把相符的審查代理並行派入審查空間 |
submit_reviewer_verdict |
貼出每位審查者的 ship/hold/block 判定,並附上信心程度與說明 |
finalize_review |
計算逐節點共識與整個 PR 的判定,並結束審查 |
set_cohort_summary |
設定某個審查群體的淺白摘要 |
add_review_diagram |
為某個群體附加一張經圖譜驗證的結構化圖表(sequence、entityRelation、stateMachine) |
publish_review_to_github |
把已定案的審查發佈到 GitHub,成為行內評論加一段摘要內文 |
記憶工具
標題為「記憶工具」的章節| 工具 | 說明 |
|---|---|
search_memory |
搜尋事實與政策(關鍵字、語意或混合——預設為混合) |
propose_fact |
在某個領域中儲存一則簡短的 markdown 事實 |
supersede_fact |
把一則事實標記為被另一則取代 |
propose_policy |
在某個領域中儲存一條規範性規則(需要對該領域有寫入權限) |
supersede_policy |
讓一條政策退場——把它標記為停用,同時保留下來供稽核 |
list_policies |
列出使用中的政策,可選擇按領域篩選 |
list_memory_domains |
列出工作區的記憶領域,並附上事實與政策數量 |
record_observation |
把一筆原始觀察記錄到代理的工作記憶中 |
get_my_notes |
讀取呼叫方代理的工作記憶速記本 |
update_my_notes |
更新呼叫方代理的工作記憶速記本 |
remember |
為本次工作階段在代理的熱工作記憶中加入一則筆記(受 TTL 與數量上限約束) |
consolidate_memory |
執行一次整併(「睡眠」)程序:逐出已到期的熱項目,把耐久的項目歸併成長期事實 |
harmonize_memory |
執行跨代理信念協調(SHMR)並標示矛盾 |
list_memory_conflicts |
列出偵測到的矛盾,以及每一項的解決方式 |
治理工具
標題為「治理工具」的章節| 工具 | 說明 |
|---|---|
create_goal |
建立一個組織目標(公司、團隊、代理或任務層級) |
list_goals |
列出目標,附上層級、狀態與彙總進度 |
update_goal_progress |
設定某個目標的進度 |
create_approval |
為一項受治理的動作在核准板上開啟一項核准(計劃退出、合併、發佈、招聘、自訂) |
list_approvals |
列出核准,可選擇按狀態篩選 |
decide_approval |
記錄一項決定:核准、拒絕、要求修訂或重新提交 |
comment_approval |
對核准板上的一項核准留言 |
exit_plan_mode |
開啟(並在核准後消耗)一項 plan_exit 核准,把對話切離計劃模式 |
agent_heartbeat |
回報存活狀態(存活、閒置、卡住);一旦靜默,執行環境健康狀況會轉為最近失去,然後離線 |
list_runtime_health |
列出每個代理的執行環境健康狀況 |
list_agent_presence |
列出每個代理的線上狀態(健康、生命週期、執行中與排隊中的數量、容量) |
get_org_chart |
讀取匯報樹,CEO 在根,按 reports_to 嵌套 |
create_work_product |
建立一份附屬於某張工單、可長久保存的工作成果 |
save_work_product_revision |
儲存一個新修訂;傳入 base_revision_id,遇上並行編輯時會被拒絕 |
list_work_products |
列出工作成果,可選擇只篩選某一張工單 |
get_work_product |
讀取一份工作成果及其修訂歷史 |
create_runtime_profile |
定義一個可重用的執行環境設定檔(協定家族、CLI 指令、固定的啟動引數) |
list_runtime_profiles |
列出工作區的執行環境設定檔 |
程式碼圖工具
標題為「程式碼圖工具」的章節只有在主機提供程式碼圖程式庫時才會註冊。索引涵蓋隨附的語法集(Dart、JS/TS、PHP、Python、Rust、Zig、C/C++、Go、Java、Ruby、C#、Swift、Kotlin、R、Assembly、MATLAB、Ada);其他任何語言的符號都不在其中。
| 工具 | 說明 |
|---|---|
search_code |
按名稱、簽章與文件註解搜尋已索引的符號(混合 BM25 + 語意) |
code_symbol |
以完全相符的名稱查閱符號;回傳 file:line 與簽章 |
code_callers |
列出呼叫或依賴某個符號的符號(入邊) |
code_callees |
列出某個符號所呼叫或依賴的符號(出邊) |
code_impact |
計算某個符號的遞移影響範圍,直到指定深度 |
工單工具
標題為「工單工具」的章節| 工具 | 說明 |
|---|---|
create_ticket |
在已設定的提供方上建立一張工單 |
get_ticket |
以 id 取得單一工單 |
list_tickets |
列出工單,可選擇按狀態或指派對象篩選 |
update_ticket |
更新狀態、標題、描述、優先級或標籤(狀態接受 in_progress / completed 等別名) |
assign_ticket |
把工單指派給代理及/或團隊 |
reassign_ticket |
把工單改派給另一個代理 |
add_ticket_collaborator |
邀請一個代理協作某張工單(會被加入該工單的空間) |
comment_on_ticket |
對工單留言 |
close_ticket |
關閉工單(標記為完成),可附上輸出 |
fail_ticket |
以錯誤訊息把工單標記為失敗 |
delegate_ticket |
把工單委派給一個代理,並建立一張受追蹤的工單 |
ticket_pr_link |
以 PR 節點 id 連結或解除連結一張工單與一個 pull request(action:link | unlink) |
ticket_relation |
新增或移除兩張工單之間的關係——blocked_by、blocking、related_to、duplicate_of、duplicated_by、sub_issue_of、parent_of(action:add | remove) |
list_ticket_relations |
列出一張工單的母工單、子議題與相依連結 |
團隊與管線工具
標題為「團隊與管線工具」的章節| 工具 | 說明 |
|---|---|
record_team_activity |
針對某張工單記錄一筆團隊領導者的活動條目 |
preview_trigger |
試跑一個假設事件會啟動哪些管線執行,不會實際提交任何東西 |
submit_output |
為呼叫方當前的管線執行提交結構化輸出內容;會依據該次執行宣告的輸出 schema 驗證 |
編排工具
標題為「編排工具」的章節| 工具 | 說明 |
|---|---|
propose_orchestration |
為一次事先核准發出結構化的多代理編排計劃;會驗證並回傳任何違規 |
資訊動態工具
標題為「資訊動態工具」的章節| 工具 | 說明 |
|---|---|
list_feeds |
列出已註冊的 RSS/Atom 摘要來源 |
list_articles |
列出文章,可選擇按摘要來源、未讀或已儲存篩選 |
get_article |
取得單一文章 |
set_article_read |
把文章標記為已讀或未讀 |
set_article_saved |
儲存或取消儲存一篇文章 |
refresh_feeds |
立即重新抓取每個已啟用的摘要來源 |
隔離環境(測試機)工具
標題為「隔離環境(測試機)工具」的章節從一次執行之中,驅動用完即棄的機器——隔離環境中的瀏覽器或 Linux 桌面、Android 模擬器,或 iOS Simulator。開機後無條件註冊:一部機器實際上能否開機,是工具每次呼叫時回答的探測問題。同一個對話中重複呼叫會重用同一部機器;螢幕截圖會以圖片內容回傳,每個結果有單一圖片的預算,而抽取到的頁面/UI 內容會被圍欄標示為不受信任的資料。四個 use 工具加上 rig_close 會宣告 enclosureControl 動作類別(該些 use 工具亦宣告 networkEgress 與 processSpawn;mobile_use 與 ios_use 亦宣告 packageInstall),因此唯讀模式會拒絕它們。rig_list 不宣告任何類別——它只讀取工作區狀態。各介面類型完整的動詞詞彙見測試機參考。
| 工具 | 說明 |
|---|---|
computer_use |
在隔離環境的 VM 中驅動 Linux 桌面:移動、點擊、拖曳、捲動、輸入、調整大小、剪貼板、螢幕截圖 |
browser_use |
驅動無介面的 Chromium、Firefox 或 WebKit(engine):導覽、點擊、填寫、抽取(a11y/DOM/console)、剪貼板、螢幕截圖 |
mobile_use |
透過 ADB 驅動 Android:檢查/輸入、螢幕截圖、安裝/啟動/停止/重設/解除安裝應用程式、深層連結,以及 argv 形式的裝置指令 |
ios_use |
透過 WebDriverAgent/CoreSimulator 驅動 iOS Simulator:檢查/輸入、螢幕截圖、安裝/啟動/停止/解除安裝應用程式、深層連結,以及 argv 形式的模擬器行程 |
rig_list |
列出工作區的測試機,附上介面類型、狀態、顯示大小與控制器 |
rig_close |
銷毀一部測試機,並丟棄它所擁有的機器狀態 |
不經 MCP 提供的功能
標題為「不經 MCP 提供的功能」的章節日曆與會議沒有 MCP 工具。代理無法讀取你的日曆、會議、轉錄、行動項目或決定。產生行動項目與決定的摘要,是以內建的 meeting_summary 管線 執行,而不是一個代理可以呼叫的工具。
按模式對工具施加閘門
標題為「按模式對工具施加閘門」的章節閘門由同一份表(ModeToolPolicy)執行兩次:一次在 Claude Code 配接器的 MCP 分派器中,一次在內建執行框架的註冊表中。被封鎖的呼叫會回傳原因。
| 模式 | 工具介面 |
|---|---|
chat |
每一個已註冊的工具;沒有允許清單 |
plan |
一份經策劃的允許清單。沒有 worktree 寫入,也沒有 create / assign / delegate 工單動詞,但記憶、產出物、待辦事項、submit_plan、exit_plan_mode,以及對已派發工單的工單完成動詞則獲允許 |
review |
一份經策劃的允許清單:審查參與、通訊、唯讀上下文取得工具,以及完整的工單動詞集,包括 create_ticket 與 assign_ticket |
orchestrate |
一份經策劃的允許清單:研究與讀取工具,加上 propose_orchestration、create_playbook 與 run_playbook。招聘、拆解與工單完成會在核准後以確定性方式發生,絕不會在執行中途進行 |
無論允許清單為何,每種模式都允許:
| 組合 | 工具 |
|---|---|
| 記憶與產出物 | 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 |
| 程式碼圖 | search_code, code_symbol, code_callers, code_callees, code_impact |
| 執行機制 | search_tool_bm25, list_my_tools, todo_write, todo_read |
列入允許清單,並不代表工具就一定可呼叫;反過來也一樣:向操作者提問的能力是一個執行框架工具(ask_user),因此它根本不會出現在這份 MCP 目錄中。
需經核准的工具
標題為「需經核准的工具」的章節工具可以宣告 requiresApproval。分派器便會在工具執行之前建立 ApprovalPayload,並透過 ConfirmationPort 呈現出來;cc_server 會接上這個埠,因此這道閘門是實際生效的。
已註冊且宣告它的工具: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.
另外,統一的動作護欄會對任何宣告了非空 ActionClass 集合的工具施加閘門。若判定為 prompt 而未連接任何核准人,則會被拒絕。見護欄。
背後沒有工具的能力
標題為「背後沒有工具的能力」的章節產品中並非每一項能力都能讓代理觸達。以下這些完全沒有工具,因此你可能在別處見過的名稱,會回傳「unknown tool」: