跳至內容

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 會回傳明確的錯誤,而與目標實體所屬工作區不符的值會被拒絕,不會被靜默略過。真正全域性的工具則可省略: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 工具。代理無法讀取你的日曆、會議、轉錄、行動項目或決定。產生行動項目與決定的摘要,是以內建的 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」:

能力 實際所在位置
招聘、解僱或編輯代理 代理介面。沒有 hire_agent / fire_agent / update_agent 工具
建立工作區 透過 RPC 的 workspace.upsert,它會植入並蓋上擁有權戳記
項目(建立/列出/更新/歸類) 工單介面。項目是操作者介面——見項目
向操作者提出會阻塞的問題 執行框架的 ask_user 工具,而非 MCP。它會在對話中渲染一個表單,並阻塞等待答案
逐代理診斷 沒有。沒有 doctor——見診斷代理
日曆與會議 只為人類用戶端提供的 RPC(見上文)