Инструменты 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 |
Ищет по каталогу инструментов по ключевому слову; возвращает подходящие инструменты, схемы их аргументов и то, вызываем ли каждый прямо сейчас |
list_my_tools |
Перечисляет инструменты, вызываемые прямо сейчас в этом разговоре, с фильтрацией по его режиму |
Третий инструмент обнаружения, search_tools, существует только внутри встроенного харнесса и не входит в этот реестр MCP. Он ранжирует собственную поверхность инструментов запуска и, в отличие от search_tool_bm25, загружает схемы найденного, чтобы агент мог вызвать совпадение на следующем ходу. Агентам на харнессе стоит предпочитать его; у клиентов 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 |
Читает сохранённый контрольный список задач этого разговора |
Инструменты навыков
Заголовок раздела «Инструменты навыков»Каждая установка и обновление проходят через шлюз проверки по принципу fail-closed, прежде чем содержимое навыка попадёт на диск или в промпт агента.
| Инструмент | Описание |
|---|---|
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 своего разговора с копированием при записи, а не исходные checkout’ы |
Инструменты обмена сообщениями
Заголовок раздела «Инструменты обмена сообщениями»| Инструмент | Описание |
|---|---|
list_spaces |
Перечисляет пространства обмена сообщениями в рабочем пространстве |
get_messages |
Забирает сообщения из пространства |
send_message |
Отправляет сообщение в пространство от имени указанного агента-отправителя |
get_space_notes |
Читает общий документ передачи дел пространства |
update_space_notes |
Заменяет общий документ передачи дел пространства |
todo_write |
Заменяет контрольный список задач этого разговора одним вызовом (передайте полный список) |
Инструменты проверки
Заголовок раздела «Инструменты проверки»| Инструмент | Описание |
|---|---|
start_ai_review |
Запускает ИИ-проверку PR: вычисляет области проверки, веером рассылает ревьюеров-специалистов в пространство 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 |
Ищет проиндексированные символы по имени, сигнатуре и doc-комментарию (гибридно 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 |
Связывает или разрывает связь тикета и pull request по id узла PR (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 |
Отправляет структурированную полезную нагрузку вывода для текущего запуска конвейера вызывающего; проверяется по объявленной схеме вывода запуска |
Инструменты оркестрации
Заголовок раздела «Инструменты оркестрации»| Инструмент | Описание |
|---|---|
propose_orchestration |
Выдаёт структурированный план оркестрации нескольких агентов для однократного предварительного утверждения; валидирует и возвращает все нарушения |
Инструменты ленты новостей
Заголовок раздела «Инструменты ленты новостей»| Инструмент | Описание |
|---|---|
list_feeds |
Перечисляет зарегистрированные ленты RSS/Atom |
list_articles |
Перечисляет статьи с необязательной фильтрацией по ленте, непрочитанным или сохранённым |
get_article |
Забирает одну статью |
set_article_read |
Помечает статью прочитанной или непрочитанной |
set_article_saved |
Сохраняет статью или снимает сохранение |
refresh_feeds |
Заново получает все включённые ленты прямо сейчас |
Инструменты изолированной среды (rig)
Заголовок раздела «Инструменты изолированной среды (rig)»Управляют одноразовыми машинами — изолированным браузером или рабочим столом
Linux, эмулятором Android или симулятором iOS — изнутри запуска. Регистрируются
после загрузки, безусловно: может ли машина на самом деле загрузиться, — это
вопрос-зонд, на который инструменты отвечают при каждом вызове. Повторные вызовы
в одном разговоре переиспользуют одну машину; снимки экрана возвращаются как
графическое содержимое с бюджетом в одно изображение на результат, а извлечённое
содержимое страницы или интерфейса обрамляется как недоверенные данные. Четыре
инструмента использования плюс rig_close объявляют класс
действий enclosureControl
(инструменты использования также объявляют networkEgress и processSpawn;
mobile_use и ios_use также объявляют packageInstall), поэтому режимы
только для чтения их запрещают. rig_list не объявляет ничего — он только читает
состояние рабочего пространства. Полный набор глаголов для каждой поверхности — в
справочнике по rigs.
| Инструмент | Описание |
|---|---|
computer_use |
Управляет рабочим столом Linux в изолированной виртуальной машине: перемещение, клик, перетаскивание, прокрутка, ввод, изменение размера, буфер обмена, снимок экрана |
browser_use |
Управляет headless-браузером Chromium, Firefox или WebKit (engine): навигация, клик, заполнение, извлечение (a11y/DOM/консоль), буфер обмена, снимок экрана |
mobile_use |
Управляет Android через ADB: осмотр/ввод, снимки экрана, установка/запуск/остановка/сброс/удаление приложений, глубокие ссылки и команды устройства в форме argv |
ios_use |
Управляет симулятором iOS через WebDriverAgent/CoreSimulator: осмотр/ввод, снимки экрана, установка/запуск/остановка/удаление приложений, глубокие ссылки и процессы симулятора в форме argv |
rig_list |
Перечисляет rigs рабочего пространства с поверхностью, статусом, размером дисплея и контроллером |
rig_close |
Уничтожает rig и отбрасывает принадлежащее ему состояние машины |
Не предоставляется через MCP
Заголовок раздела «Не предоставляется через MCP»У календаря и встреч нет инструментов MCP. Агенты не могут читать ваш календарь, встречи, транскрипты, пункты действий или решения. Сводку, из которой получаются пункты действий и решения, выполняет встроенный конвейер meeting_summary, а не инструмент, который агент может вызвать.
Ограничение инструментов по режиму
Заголовок раздела «Ограничение инструментов по режиму»Ограничение применяется дважды из одной таблицы (ModeToolPolicy): один раз в диспетчере MCP для адаптера Claude Code и один раз в реестре встроенного харнесса. Заблокированный вызов возвращает причину.
| Режим | Поверхность инструментов |
|---|---|
chat |
Все зарегистрированные инструменты; без списка разрешённых |
plan |
Тщательно подобранный список разрешённых. Никаких записей в worktree и никаких глаголов тикетов create / assign / delegate, но разрешены память, артефакты, todo, 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 нет |
| Создание рабочего пространства | workspace.upsert по RPC, который заводит его и проставляет владельца |
| Проекты (создать / перечислить / обновить / отнести) | Интерфейс тикетов. Проекты — поверхность оператора, см. Проекты |
| Задать оператору блокирующий вопрос | Инструмент харнесса ask_user, а не MCP. Он отрисовывает форму в разговоре и блокируется в ожидании ответа |
| Диагностика отдельного агента | Ничего. Инструмента doctor нет — см. Диагностика агента |
| Календарь и встречи | Только RPC для человеческих клиентов (см. выше) |