Workify logo Единственный бизнес-инструмент, который вам нужен Workify
Menu

MCP с минимальными привилегиями: проектирование безопасных процессов записи для команд

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

Принцип минимальных привилегий

Принцип минимальных привилегий гласит, что пользователи (и AI-ассистенты) должны иметь только минимальные права, необходимые для выполнения своих задач. Для MCP-интеграций это означает:

  • Сначала чтение: всегда читайте текущее состояние перед внесением изменений
  • Подтверждение перед записью: требуйте явного одобрения для любой операции записи
  • Предпросмотр изменений: показывайте, что изменится, перед выполнением
  • Аудит всего: логируйте все действия с контекстом
  • Ограничение области: обращайтесь только к тому, что необходимо для задачи

Паттерн 1: сначала чтение

Всегда читайте текущее состояние перед внесением любых изменений. Это гарантирует работу с актуальными данными и позволяет обнаружить конфликты.

Как это работает

  1. AI сначала вызывает инструмент чтения (например, get_task, list_tasks)
  2. AI анализирует текущее состояние
  3. AI предлагает изменения на основе фактических данных
  4. Пользователь просматривает предложение
  5. Только затем AI вызывает инструменты записи (если одобрено)

Пример: обновление статуса задачи

❌ Небезопасный запрос:

«Отметь задачу по функции входа как выполненную»

✅ Безопасный запрос (сначала чтение):

«Покажи мне задачу по функции входа, затем обнови её статус на "выполнено", если я подтвержу»

Что происходит:

  1. AI вызывает list_tasks, чтобы найти задачу
  2. AI вызывает get_task, чтобы прочитать текущий статус
  3. AI показывает: «Текущий статус: В работе → Новый статус: Выполнено»
  4. AI запрашивает подтверждение
  5. Вызывает update_task только после одобрения

Паттерн 2: подтверждение перед записью

Никогда не позволяйте AI вносить изменения без явного подтверждения. Используйте токены подтверждения или явные запросы на одобрение.

Паттерн токена подтверждения

Требуйте определённое слово или фразу перед выполнением:

  • «Введите CONFIRM для продолжения»
  • «Ответьте YES для создания»
  • «Скажите "create task" для продолжения»

Шаблон запроса: создание задачи с подтверждением

Шаблон для копирования:

"Я хочу создать задачу: [описание задачи].
Покажи мне точно, какую задачу ты создашь (заголовок, описание, проект, срок)
и подожди, пока я введу CONFIRM, прежде чем создавать её.
Если я не введу CONFIRM, ничего не создавай."

Шаблон запроса: обновление задачи с подтверждением

Шаблон для копирования:

"Я хочу обновить задачу [название задачи]: [изменения].
Сначала покажи мне текущие детали задачи, затем покажи, что изменится.
Обнови только если я введу CONFIRM.
Если я не подтвержу, не вноси никаких изменений."

Паттерн 3: предпросмотр в режиме dry-run

Показывайте, что произойдёт, без фактического внесения изменений. Это позволяет пользователям проверить логику перед выполнением.

Паттерн dry-run

  1. AI анализирует запрос
  2. AI определяет, какие инструменты будут вызваны
  3. AI показывает предпросмотр: «Я бы создал/обновил/удалил...»
  4. AI объясняет обоснование
  5. Пользователь просматривает и одобряет или изменяет
  6. Только затем AI выполняет

Пример: пакетное создание задач

Запрос:

«У меня есть эти пункты действий со встречи: [список]. Создай задачи для каждого, но сначала покажи мне все задачи, которые ты создашь. Ничего не создавай, пока я не одобрю список.»

Ответ AI (dry-run):

Я бы создал эти 5 задач:

  1. Связаться с Acme Corp (Срок: на следующей неделе)
  2. Проверить документ по дизайну API (Срок: завтра)
  3. Обновить график проекта (Срок: пятница)
  4. Запланировать встречу команды (Срок: на этой неделе)
  5. Подготовить демо-презентацию (Срок: следующий понедельник)

Введите APPROVE, чтобы создать эти задачи, или скажите, что изменить.

Паттерн 4: комментарии для аудита

При внесении изменений всегда добавляйте комментарии, объясняющие, почему изменение было сделано. Это создаёт журнал аудита.

Формат комментария

Включайте контекст в комментарии:

  • Источник: «Создано через MCP: рабочий процесс еженедельного планирования»
  • Причина: «Обновлено AI-ассистентом: изменение статуса запрошено пользователем»
  • Контекст: «Обновление MCP: пользователь запросил изменение приоритета во время стендапа»

Шаблон запроса: запись с комментарием для аудита

Шаблон для копирования:

"Когда ты создаёшь/обновляешь/удаляешь задачи, всегда добавляй комментарий,
объясняющий почему. Формат: 'MCP: [причина] - [контекст]'.
Например: 'MCP: Создано через рабочий процесс еженедельного планирования - Пользователь запросил задачу для последующих действий'."

Полные шаблоны запросов

Вот готовые к использованию шаблоны запросов для распространённых операций записи:

Шаблон: безопасное создание задачи

"Я хочу создать задачу: [описание].

Правила:
1. Покажи мне точно, что ты создашь (заголовок, описание, проект, срок, исполнитель)
2. Подожди, пока я введу CONFIRM, прежде чем вызывать create_task
3. Если я не введу CONFIRM, ничего не создавай
4. После создания добавь комментарий: 'MCP: Создано через [название рабочего процесса]'"

Пример использования:
"Я хочу создать задачу: Связаться с Acme Corp по поводу предложения, срок — следующая неделя.
[Следуй правилам выше]"

Шаблон: безопасное обновление задачи

"Я хочу обновить задачу [название задачи]: [изменения].

Правила:
1. Сначала вызови get_task, чтобы прочитать текущую задачу
2. Покажи мне: Текущее значение → Новое значение для каждого поля
3. Подожди, пока я введу CONFIRM, прежде чем вызывать update_task
4. Если я не введу CONFIRM, ничего не обновляй
5. После обновления добавь комментарий, объясняющий изменение"

Пример использования:
"Я хочу обновить задачу по функции входа: изменить статус на "выполнено" и добавить заметки о завершении.
[Следуй правилам выше]"

Шаблон: безопасное удаление задачи

"Я хочу удалить задачу [название задачи].

Правила:
1. Сначала вызови get_task, чтобы показать мне детали задачи
2. Предупреди меня, что удаление необратимо
3. Подожди, пока я введу DELETE CONFIRM (оба слова), прежде чем вызывать delete_task
4. Если я не введу DELETE CONFIRM, ничего не удаляй"

Пример использования:
"Я хочу удалить дубликат задачи 'Test login'.
[Следуй правилам выше]"

Шаблон: безопасные пакетные операции

"Я хочу [операция] несколько задач: [список/описание].

Правила:
1. Сначала вызови list_tasks, чтобы найти подходящие задачи
2. Покажи мне список задач, которые будут затронуты
3. Покажи мне, какие изменения ты внесёшь в каждую
4. Подожди, пока я введу CONFIRM ALL, прежде чем вносить любые изменения
5. Если я не введу CONFIRM ALL, не вноси никаких изменений"

Пример использования:
"Я хочу обновить все задачи в проекте Q1: отметить просроченные задачи как заблокированные.
[Следуй правилам выше]"

Примеры для каждой операции записи

Пример create_task

Безопасный запрос:

«Создай задачу проверить документ по дизайну API на следующей неделе. Сначала покажи мне, что ты создашь, затем создай её только если я введу CONFIRM.»

Поведение AI:

  1. Показывает предпросмотр: «Я создам: Заголовок: Проверить документ по дизайну API, Срок: [следующая неделя], Проект: [предложенный]»
  2. Ждёт «CONFIRM»
  3. Вызывает create_task только после подтверждения
  4. Добавляет комментарий для аудита: «MCP: Создано по запросу пользователя»

Пример update_task

Безопасный запрос:

«Обнови статус задачи по дашборду на "в работе". Сначала покажи мне текущую задачу, затем покажи, что изменится, потом подожди CONFIRM.»

Поведение AI:

  1. Вызывает get_task, чтобы прочитать текущее состояние
  2. Показывает: «Текущее: Статус = Открыто, Новое: Статус = В работе»
  3. Ждёт «CONFIRM»
  4. Вызывает update_task только после подтверждения
  5. Добавляет комментарий для аудита: «MCP: Статус обновлён на "В работе"»

Пример delete_task

Безопасный запрос:

«Удали дубликат задачи 'Test login'. Сначала покажи мне задачу, предупреди, что это необратимо, затем подожди DELETE CONFIRM.»

Поведение AI:

  1. Вызывает get_task, чтобы показать детали задачи
  2. Предупреждает: «⚠️ Это навсегда удалит задачу. Это нельзя отменить.»
  3. Ждёт «DELETE CONFIRM» (требуются оба слова)
  4. Вызывает delete_task только после точного подтверждения

Сводка лучших практик

Чек-лист безопасного процесса записи

  • ✅ Всегда читайте перед записью (get_task перед update_task)
  • ✅ Требуйте явного подтверждения (токен CONFIRM)
  • ✅ Показывайте предпросмотры перед выполнением (режим dry-run)
  • ✅ Добавляйте комментарии для аудита, объясняющие изменения
  • ✅ Используйте более строгое подтверждение для деструктивных операций (DELETE CONFIRM)
  • ✅ Никогда не выполняйте пакетные операции записи, не показав сначала полный список
  • ✅ Предупреждайте пользователей о необратимых действиях (удалениях)
  • ✅ Давайте чёткие инструкции в своих запросах

Дополнительные ресурсы

Проектируйте безопасные MCP-процессы

Используйте эти паттерны, чтобы снизить риск и предотвратить случайные изменения

Банковская карта не требуется

Continue Reading

API-ключи для MCP

Практическое руководство по управлению API-ключами, используемыми клиентами MCP. Включает отдельный ключ для каждой маши...