Перейти к содержимому

Инструменты 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 Ищет по каталогу инструментов по ключевому слову; возвращает подходящие инструменты, схемы их аргументов и то, вызываем ли каждый прямо сейчас
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 Заново получает все включённые ленты прямо сейчас

Управляют одноразовыми машинами — изолированным браузером или рабочим столом 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. Агенты не могут читать ваш календарь, встречи, транскрипты, пункты действий или решения. Сводку, из которой получаются пункты действий и решения, выполняет встроенный конвейер 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 для человеческих клиентов (см. выше)