Глава 13

Prompts публикуют шаблон, а не скрытую власть

MCP-prompt - это discoverable-шаблон сообщений с аргументами. Он помогает host предложить пользователю готовый workflow: "подготовить проверку релиза" одним действием. Но именно из-за удобства важно понимать его границу - prompt не заменяет system policy и не должен незаметно выдавать серверу дополнительные права.

Наш prompt заполняет сообщение с указанием нужного инструмента и требуемого формата ответа.

  server.registerPrompt(
    "prepare-release-review",
    {
      title: "Подготовить проверку релиза",
      description: "Создаёт пользовательское сообщение с указанием нужного tool и требуемого формата ответа.",
      argsSchema: z.object({
        service: z.string().min(2),
        version: z.string().regex(/^\d+\.\d+\.\d+$/u)
      })
    },
    ({ service, version }) => ({
      description: `Проверка ${service}@${version}`,
      messages: [{
        role: "user",
        content: {
          type: "text",
          text: [
            `Проверь готовность ${service}@${version}.`,
            "Используй review_release и политику runbook://release-policy.",
            "Верни решение, непройденные проверки и доказательства."
          ].join(" ")
        }
      }]
    })
  );

Разница между хорошим и плохим применением здесь очень наглядна. Хорошее - это команда в IDE "Подготовить review релиза", которая явно заполняет service и version и показывает получившийся текст до запуска: пользователь видит, что именно уйдёт модели. Плохое - скрытая инструкция игнорировать policy, автоматически вызвать разрушительный инструмент или передать серверу лишние данные. Один и тот же механизм, противоположный уровень доверия.

Ключ - в том, кто чем управляет. Сервер предлагает шаблон. Клиент его запрашивает. Host решает, как показать и вставить сообщения. Пользователь должен видеть важные последствия, а system- и developer-инструкции host остаются выше любого server-provided текста. Если этот порядок нарушить, prompt превращается из удобства в канал скрытой власти.

Инструмент, ресурс или prompt. Если нужен побочный эффект или вычисление - это инструмент. Если нужен адресуемый факт - это ресурс. Если нужен переиспользуемый шаблон взаимодействия - это prompt. Не делайте три поверхности для одной операции без ясной причины.

Три поверхности MCP разобраны. Но всё, что мы писали, живёт по правилам конкретной редакции протокола - а она в 2026 году серьёзно изменилась. Пора понять, чем именно.

Ссылки