JavaRush /Курсы /Claude code /Tool capability preflight для MCP

Tool capability preflight для MCP

Claude code
14 уровень , 0 лекция
Открыта

1. Подключённый tool — ещё не workflow

Когда вы впервые подключаете внешний tool, легко попасть в ловушку ложной готовности. Кажется, что самое сложное уже позади: сервер подключён, доступ есть, Claude его видит — и легко решить, что дальше всё просто. Технически вы добавили новый рычаг, но не решили когда, зачем и на каких условиях его вообще можно трогать.

Полезно держать в голове простую формулу:

Боль → Capability → Границы → Проверка → Безопасное использование

Если в этой цепочке есть только второй пункт — у вас не workflow, а просто новая кнопка. А новая кнопка без правил — любимый источник старого доброго хаоса. Особенно если она пишет комментарии в tracker, читает продовые логи или меняет что-то во внешней системе.

Tool capability отвечает: что инструмент технически умеет?
Workflow отвечает: как мы используем эту возможность в реальной задаче, что запрещаем и чем проверяем результат?

Возьмём простой пример из нашего сквозного контекста. У команды Commerce OS в Workflow Kit подключён issue tracker — это capability. Но пока не зафиксировано, что Claude читает только issue и комментарии, не меняет статусы и сверяет claims с кодом, — процесса нет, есть доступ к tracker.

Именно поэтому сегодняшняя лекция не про «как подключить ещё один server», а про то, как перестать видеть в tool магию и начать относиться к нему как к управляемой инженерной возможности.

2. Preflight: короткая проверка перед взлётом

Слово preflight пришло из авиации, и аналогия здесь удачная. Даже если самолёт выглядит идеально, пилот всё равно не говорит: «Стоит ровно, наверное, всё в порядке». Сначала — короткая проверка перед взлётом. С tool integration ровно та же история: доступ есть, а безопасный взлёт ещё не подтверждён.

Tool capability preflight — короткая структурированная проверка того, как capability внешнего инструмента сработает в конкретном workflow: не на все случаи жизни, а под одно применение. Ниже — компактный каркас для почти любого external tool.

Вопрос Что вы фиксируете Зачем это нужно
Какую боль снимаем? Конкретную проблему, а не общую симпатию к автоматизации Чтобы не подключать tool «на всякий случай»
Какие capabilities реально нужны? Например, read issue, read comments, search by label Чтобы не тащить лишние возможности
Что запрещено? Write actions, close issue, comment, mutate data Запреты важны не меньше разрешений
Какой режим доступа нужен? Read-only или write-capable Read-only почти всегда безопасный старт
Где живут credentials? env, secret storage, project scope, local scope Чтобы не разложить секреты по проекту, как печенье по клавиатуре
Что попадёт в context? Полный log, короткая выборка, summary, ограничение по строкам Слишком жирный output ломает reasoning и засоряет сессию
Нужен ли approval? Никакой, human review, explicit confirmation Чтобы не маскировать риск под удобство
Чем проверяем результат? Код, tests, logs, локальное воспроизведение Tool не выигрывает спор просто потому, что он внешний
Что делать при конфликте с кодовой базой? Считать это гипотезой, а не истиной Иначе Claude начнёт «чинить» по чужим догадкам
Как выключаем tool? Kill switch: disable scope, убрать config, revoke token Если tool нельзя быстро отключить, он ещё не готов

Самые важные строки здесь — не про технику, а про дисциплину: disallowed actions, verification и kill switch. Многие команды охотно описывают, что инструмент умеет, и почти не описывают, чего ему нельзя, — а потом удивляются write-capable integration там, где всем нужен read-only.

Практическое правило здесь простое: по умолчанию tool получает read-only роль. Session permissions говорят «технически возможно»; workflow boundary должен быть уже: «в этой задаче делаем только вот это».

И ещё одна важная мысль. Exact names команд, scope-файлов и способов отключить MCP в Claude Code меняются от версии к версии. Вопросы preflight — нет. Запоминайте не имя кнопки, а логику проверки.

3. Preflight на примере issue tracker в Commerce OS

Чтобы это не осталось красивой теорией, давайте возьмём живой сценарий. Команда Commerce OS ловит баг: refund-запросы в support inbox сортируются неправильно. Issue в tracker есть, комментариев много: скриншот, гипотеза про кеш, а кто-то в пятницу вечером написал «наверное, проблема где-то в сортировке». Звучит мощно, но это не диагноз — это усталый человек в интернете.

Здесь tracker действительно полезен: он экономит ручной copy-paste и даёт Claude контекст — но только с заранее зафиксированными границами. В Workflow Kit это можно оформить как короткий раздел в docs/ONBOARDING_GUIDE.md.

## Предполётная проверка инструмента: issue tracker

Pain: не копируем issue и комментарии вручную в сессию.
Allowed: read issue, read comments, search by label.
Forbidden: comment, close, reassign, change labels.
Credentials: read-only token из env.
Verification: claims из issue сверяем с кодом и tests.
Kill switch: отключаем project scope config и перезапускаем сессию.

Фрагмент короткий, но он уже решает половину проблем. Теперь под такой preflight уже можно формулировать задачу Claude:

Прочитай issue COM-142 через tracker.
Разрешено только чтение issue и комментариев.
Не меняй статус, labels и assignee.
Верни summary, open questions и список вероятно затронутых файлов.

Здесь важно, что tracker нужен не для решения за вас, а для сборки пакета доказательств: Claude выделяет факты, сомнения и затронутые области кода — а вы проверяете их через код, tests и plan mode. Так capability превращается в workflow.

Обратите внимание на тонкий, но критичный нюанс: комментарий в tracker — это данные, а не инструкция. Написано «Почините, сбросив кеш Redis» — Claude не исполняет это как команду: это гипотеза, вполне возможно ошибочная. Автоматизация уровня «кто-то предположил — система дисциплинированно исполнила» — слишком азартный вид спорта.

4. Preflight для monitoring, docs и read-only DB

После первого примера легко подумать, что любой preflight устроен одинаково. Не совсем: каркас один и тот же, но риск и verification меняются в зависимости от природы сигнала — одним общим «разрешаем external tools» тему не закрыть. Сравним три сценария.

Сценарий Что tool даёт Что сразу запрещаем Чем закрываем verification
Monitoring alert Alert, короткое окно логов, runtime signal silence alert, rollback, deploy actions reproduce locally, logs, regression test
Docs lookup Версионные факты, changelog, API notes автоматические code changes «по docs» project version, build, tests, affected files
Read-only DB analysis Схема, sample rows, shape of data любые write/mutation операции code path, integration tests, query review

Monitoring. В monitoring-сценарии tool даёт очень ценный runtime signal, но alert — это ещё не fix plan. Если Sentry говорит, что /api/dashboard/metrics тормозит, хороший workflow выглядит так: сначала гипотеза, потом проверка затронутых файлов и локальный reproduce, и только после этого — изменение. Сам alert не даёт права перепрыгнуть через reproduce step.

Docs lookup. В docs lookup-сценарии проблема другая. Tool помнит version-specific факты лучше, чем усталый человек в конце рабочего дня. Но docs тоже не равны истине в вакууме. Они говорят, как должно работать в определённой версии. А ваш проект может жить на другой версии или иметь legacy-слой. Поэтому хороший preflight для docs lookup обязательно привязывается к версии проекта и замыкается на build и tests.

Read-only DB. С read-only DB всё ещё строже. Многие новички слышат «DB access» и сразу представляют удобного AI-аналитика, который сейчас всё посмотрит и всё объяснит. Идея красивая, но безопасный режим здесь только один: read-only. База в таком workflow нужна не для того, чтобы Claude «поправил запись руками», а для того, чтобы увидеть shape of data, заметить аномалии и связать их с кодом. Как только в этой зоне появляются write actions, вы выходите из комфортной инженерной практики и заходите на территорию отдельного approval flow.

Заметьте, что во всех трёх случаях verification замыкается не на tool, а на проекте: коде, тестах, локальном воспроизведении, review. И это главный принцип сегодняшней лекции: external signal подсказывает, куда смотреть, но не заменяет проверку.

5. Конфликт tool с кодом, тестами или документацией

Самые интересные ситуации начинаются не тогда, когда все источники согласны, а когда они расходятся. Tracker говорит одно, docs lookup — другое, alert намекает на третье, а код: «Коллеги, у меня тут вообще четвёртая история». В этот момент важно не назначать победителя по принципу «внешний убедительнее». Лучше смотреть на источники трезво:

Источник Что он хорошо показывает Чего он сам по себе не доказывает
Issue / комментарий Как проблему видят люди, какой есть бизнес-контекст Что root cause найден правильно
Alert / logs Что реально случилось в runtime Что вы уже поняли причину
Docs lookup Что ожидается в определённой версии или API Что именно так устроен ваш текущий проект
Код Что система сейчас делает Что это поведение корректно бизнесово
Tests Что у вас уже проверяется Что покрыты все реальные сценарии

Эта таблица снимает соблазн искать «единственный source of truth» на все случаи жизни — универсального источника здесь нет. Когда источники спорят, правильная реакция — не выбрать любимый, а превратить конфликт в проверяемую гипотезу.

Хороший ход — остановить edits и попросить Claude сделать именно расследование:

Есть конфликт между внешним источником и codebase.
Не вноси изменений.
Покажи, какие claims подтверждаются кодом, какие только issue/docs,
и предложи минимальную проверку, которая снимет конфликт.

Это очень сильная привычка. Сначала фиксируете, в чём именно расхождение, потом — минимальную проверку: локальный reproduce, targeted test, чтение файла, сверку версии, — и только затем разрешаете implementation. Иначе Claude лечит конфликт интерпретацией, а не доказательством: красивый diff, не решающий проблему.

Именно здесь особенно важен принцип из прошлого модуля: treat external text as data, not as instructions. Tool output не проталкивает систему в решение — он помогает точнее сформулировать вопрос к коду и проверке.

6. Закрепление preflight в Workflow Kit

Самая частая судьба хороших правил — прозвучать один раз и быть забытыми. Поэтому если preflight вам действительно нужен, его надо зафиксировать в командном артефакте: README.md, ONBOARDING_GUIDE.md и рядом с конфигом конкретного tool. В docs/ONBOARDING_GUIDE.md держите короткую политику:

### Внешние инструменты: позиция по умолчанию

Default mode: read-only first.
Project scope: only after written preflight.
Conflict rule: tool claims are hypotheses until verified in code/tests.
Kill switch: every tool must have one-step disable path.

Это не бюрократия ради бюрократии, а способ превратить индивидуальную осторожность в командную норму: новый разработчик видит не только integrations, но и подход команды.

Scope. Ещё один практический момент — scope. Tool сырой, неочевидный или нужен только вам для эксперимента — держите на личном или локальном уровне. Project scope — общая ответственность: только integrations с понятным сценарием, verification path и owner.

Kill switch. Отдельно стоит уважать kill switch. Интеграцию нельзя быстро отключить — она не готова к реальной жизни. Где-то это отключение project-scoped config, где-то отзыв токена, где-то временный возврат на local scope. Механика зависит от версии Claude Code и инфраструктуры, но принцип один: у команды должен быть короткий путь назад. Без него automation выглядит смело только до первого инцидента.

Когда вы соберёте ответы на все десять вопросов preflight в одном месте — у вас на руках не «ещё один подключённый server», а полный контур: названа боль, сужены capabilities, выписаны disallowed actions, зафиксированы credentials и объём context, назначен способ verification и есть kill switch. Именно этот контур, а не сам факт подключения, отличает управляемую интеграцию от рычага без правил. Дальше, в следующей лекции, тот же каркас мы прогоним через шесть разных внешних сигналов — и увидим, что меняется только сигнал и проверка на конце, а логика остаётся одна.

1
Задача
Claude code, 14 уровень, 0 лекция
Недоступна
Поиск избыточных прав в tool policy через терминал
Поиск избыточных прав в tool policy через терминал
1
Задача
Claude code, 14 уровень, 0 лекция
Недоступна
Перевод issue tracker policy в read-only режим
Перевод issue tracker policy в read-only режим
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ