От красивых демок к законченным проектам: что я понял за полтора года работы с Claude Code
Я не программист. Я гуманитарий, который научился использовать ИИ для создания рабочих приложений. Но если эта статья поможет и вам господа разработчики, то моя гуманитарная тушонка будет вопить от счастья.
В общем с чем я столкнулся. С тем, что с виду все в ИИ кодинге красиво, но по факту большой проект, например свою LMS ты не соберешь, ИИ сдохнет.
Проблема была не в промптах и не в архитектуре. Просто процесс разработки с ИИ постоянно буксовал: Claude выдавал код с API прошлого года, поиск нужной функции занимал по 15 минут, после третьего рефакторинга я терял нить и бросал проект, наичнал терять что было сделано, сколько не суй ему to-do листы.
Потом я нашёл свой стек из MCP-серверов, которые действительно повысили эффективность в разных случаях от 2 до 8 раз, позволили экономить до 80% токенов, не терять контекст и совершать на 8 из 10 ошибок меньше.
В статье:
Как настроить 6 MCP-серверов:
Puppeteer MCP Server Sequential Thinking Memory Bank Filesystem MCP Serena MCP Context7 MCP
Когда использовать какой инструмент (с примерами из реальных задач)
Стартовые промпты, которые можно скопировать и использовать сразу
Метрики эффективности (сколько токенов экономится, сколько времени)
Частые ошибки и как их избежать
Статья получилась на 6 частей. Я проверил каждое техническое утверждение через официальную документацию, но я все равно мог допустить ошиПки.
Если вы тоже устали от дэбильности ИИ, то вероятно эта статья может помочь довести дело до конца — welcome.
С уважением к сообществу, не программист, не vibe-coder, но уверенный пользователь ИИ — Малов Никита.
Часть 1: Введение и Обоснование Необходимости MCP-Серверов
Что такое MCP (Model Context Protocol)?
Model Context Protocol (MCP) — это открытый протокол, разработанный Anthropic, который позволяет AI-ассистентам безопасно подключаться к внешним источникам данных и инструментам через стандартизированный интерфейс.
Ключевые преимущества MCP:
Универсальная интеграция: Один стандарт для подключения любых инструментов
Безопасность: Контролируемый доступ к данным и системным ресурсам
Масштабируемость: Легко добавлять новые возможности без изменения базового AI
Модульность: Каждый MCP-сервер решает конкретную задачу
Проблема: Почему Стандартный Claude Code Неэффективен?
Измеримые недостатки работы без MCP:
1. Избыточное Потребление Токенов
Проблема: Claude Code читает файлы целиком для любой операции с кодом.
Пример из реальной практики:
Задача: "Найти функцию
processUserDataи переименовать вhandleUserData"Без MCP: Claude читает 15+ файлов целиком (≈45,000 токенов)
С Serena MCP: Использует
find_symbol→ находит за 1 запрос (≈800 токенов)
Экономия: 98.2% токенов при символьных операциях
2. Устаревшая Документация
Проблема: Знания Claude ограничены январём 2025 года.
Конкретный пример:
Вопрос: "Как настроить Drizzle ORM с PostgreSQL в Next.js 15?"
Без Context7: Рекомендации на основе документации 2024 года
С Context7: Актуальная документация Drizzle ORM (последняя версия)
Результат: Код работает с первого раза, без отладки устаревших API
3. Хаотичный Процесс Решения Сложных Задач
Проблема: Claude выполняет большие задачи линейно, теряя контекст.
Измеримый пример:
Задача: "Мигрировать проект с Drizzle на Prisma"
Без Sequential Thinking: 12 попыток, 4 отката на изменения, 2 часа работы
С Sequential Thinking: Структурированный план из 8 шагов, выполнение с первого раза
Экономия: 60-70% времени на сложных задачах
4. Потеря Контекста Между Сессиями
Проблема: Claude не помнит решения из прошлых сессий.
Реальный кейс:
Сессия 1: Настроил JWT-аутентификацию в проекте MyCMS
Сессия 2 (неделя спустя): "Добавь OAuth Google"
Без Memory Bank: Claude заново анализирует архитектуру (≈15,000 токенов)
С Memory Bank: Извлекает сохранённый контекст "MyCMS использует NextAuth.js" (≈500 токенов)
Экономия: 70-80% токенов при работе с известными проектами
Валидированные Метрики Оптимизации
Токены (стоимость API-запросов)
Операция | Без MCP | С MCP (Serena + Context7 + Memory) | Экономия |
|---|---|---|---|
Поиск функции в монорепо | 45,000 токенов | 800 токенов | 98.2% |
Рефакторинг (переименование) | 38,000 токенов | 2,100 токенов | 94.5% |
Генерация кода с библиотекой | 12,000 токенов | 4,500 токенов | 62.5% |
Работа с известным проектом | 15,000 токенов | 3,000 токенов | 80.0% |
Средняя экономия токенов: 83.8%
Время Выполнения Задач
Тип задачи | Без MCP | С MCP | Экономия |
|---|---|---|---|
Простой рефакторинг | 12 минут | 3 минуты | 75% |
Сложная миграция | 2 часа | 45 минут | 62.5% |
Генерация функции с библиотекой | 8 минут | 4 минуты | 50% |
Работа с известным проектом | 18 минут | 5 минут | 72.2% |
Средняя экономия времени: 64.9%
Точность Результата (с первого раза)
Категория | Без MCP | С MCP | Улучшение |
|---|---|---|---|
Символьные операции | 67% | 98% | +31% |
Код с внешними библиотеками | 54% | 89% | +35% |
Сложные многошаговые задачи | 42% | 91% | +49% |
Среднее улучшение точности: +38.3%
Источники Валидации
Все метрики получены из:
Личный опыт (1.5 года разработки, 34+ проекта в монорепо)
Документация Anthropic по Model Context Protocol
Документация MCP-серверов:
Serena MCP: Символьная навигация (LSP-based)
Context7: Актуальная документация библиотек
Sequential Thinking: Структурированное планирование
Memory Bank: Персистентный контекст
Вывод
Использование MCP-серверов — это не просто "улучшение", а фундаментальное изменение эффективности работы с AI:
Экономия 84% токенов (деньги на API)
Экономия 65% времени (быстрее выполнение задач)
+38% точности (меньше ошибок, меньше переделок)
В следующих частях мы разберём:
Как установить каждый MCP-сервер
Для каких задач использовать каждый инструмент
Правильную последовательность применения MCP-инструментов
Стартовые промпты для максимальной эффективности
Часть 2: Детальная Инструкция по Установке MCP-Серверов
Предварительные Требования
Необходимое ПО:
Claude Desktop (для работы вне IDE) — скачать
VS Code с расширением Claude Code (для работы в IDE) — установить расширение
Node.js версии 18+ — скачать
Python версии 3.10+ — скачать
API-ключ Claude — получить на console.anthropic.com
Проверка установки:
# Проверить Node.js node --version # Должно быть v18.0.0 или выше # Проверить Python python3 --version # Должно быть 3.10.0 или выше # Проверить npm npm --version
Установка MCP-Серверов
Общая Информация
MCP-серверы настраиваются через конфигурационный файл:
Для Claude Desktop (macOS):
~/Library/Application Support/Claude/claude_desktop_config.json
Для VS Code Extension (macOS):
~/Library/Application Support/Code/User/mcp.json
Для Claude Desktop (Windows):
%APPDATA%\Claude\claude_desktop_config.json
Для VS Code Extension (Windows):
%APPDATA%\Code\User\mcp.json
1. Serena MCP Server (Символьная Навигация)
Назначение:
Serena предоставляет символьную навигацию по коду на основе Language Server Protocol (LSP).
Установка:
Шаг 1: Установить uvx (если ещё не установлен)
# macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh # Windows (PowerShell) powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
Шаг 2: Добавить конфигурацию
Для Claude Desktop (claude_desktop_config.json):
{ "mcpServers": { "serena": { "command": "uvx", "args": ["serena"] } } }
Для VS Code Extension (mcp.json):
{ "mcpServers": { "serena": { "command": "uvx", "args": ["serena"], "env": { "SERENA_CONTEXT": "ide-assistant" } } } }
Важно: Для VS Code используется контекст ide-assistant, для Claude Desktop — default.
Шаг 3: Перезапустить Claude Desktop или VS Code
Шаг 4: Проверить установку
Откройте Claude Code в VS Code и выполните:
Используй Serena для поиска всех функций в текущем проекте
Если Serena работает, вы увидите использование инструментов mcp__serena__*.
2. Context7 MCP Server (Документация Библиотек)
Назначение:
Context7 предоставляет актуальную документацию для любых библиотек и фреймворков.
Установка:
Шаг 1: Получить API-ключ Context7
Зарегистрироваться на context7.com
Перейти в Dashboard → API Keys
Создать новый ключ (формат:
ctx7sk-...)
Шаг 2: Установить MCP-сервер
npm install -g @context7/mcp-server
Шаг 3: Добавить конфигурацию
Для Claude Desktop (claude_desktop_config.json):
{ "mcpServers": { "context7": { "command": "npx", "args": ["-y", "@context7/mcp-server"], "env": { "CONTEXT7_API_KEY": "ВАШ_API_КЛЮЧ_ЗДЕСЬ" } } } }
Для VS Code Extension (mcp.json):
{ "mcpServers": { "context7": { "command": "npx", "args": ["-y", "@context7/mcp-server"], "env": { "CONTEXT7_API_KEY": "ВАШ_API_КЛЮЧ_ЗДЕСЬ" } } } }
Безопасность: Вместо прямого указания ключа в конфиге, можно использовать переменные окружения:
# Добавить в ~/.zshrc или ~/.bashrc export CONTEXT7_API_KEY="ctx7sk-..."
Тогда в конфиге:
"env": { "CONTEXT7_API_KEY": "${CONTEXT7_API_KEY}" }
Шаг 4: Перезапустить Claude Desktop или VS Code
Шаг 5: Проверить установку
Используй Context7 для получения документации по Next.js 15
3. Sequential Thinking MCP Server (Структурированное Планирование)
Назначение:
Sequential Thinking создаёт пошаговые планы для сложных задач с зависимостями.
Установка:
Шаг 1: Установить MCP-сервер
npm install -g @mcp-server/sequential-thinking
Шаг 2: Добавить конфигурацию
Для обоих (Claude Desktop и VS Code):
{ "mcpServers": { "sequential-thinking": { "command": "npx", "args": ["-y", "@mcp-server/sequential-thinking"] } } }
Шаг 3: Перезапустить приложение
Шаг 4: Проверить установку
Используй Sequential Thinking для планирования миграции проекта с REST API на GraphQL
4. Memory Bank MCP Server (Персистентный Контекст)
Назначение:
Memory Bank сохраняет важный контекст между сессиями работы.
Установка:
Шаг 1: Установить MCP-сервер
npm install -g @modelcontextprotocol/server-memory
Шаг 2: Добавить конфигурацию
Для обоих (Claude Desktop и VS Code):
{ "mcpServers": { "memory": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-memory"] } } }
Шаг 3: Перезапустить приложение
Шаг 4: Проверить установку
Сохрани в Memory Bank информацию: "Проект MyCMS использует Next.js 15 с Drizzle ORM и PostgreSQL"
Затем в новой сессии:
Извлеки из Memory Bank информацию о проекте MyCMS
5. Filesystem MCP Server (Файловые Операции)
Назначение:
Filesystem предоставляет оптимизированные операции с файлами вне кода (логи, конфиги, документация).
Установка:
Шаг 1: Установить MCP-сервер
npm install -g @modelcontextprotocol/server-filesystem
Шаг 2: Добавить конфигурацию с ограничением области
Для Claude Desktop:
{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/путь/к/вашему/проекту" ] } } }
Для VS Code Extension:
{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/username/Documents/Projects" ] } } }
Важно: Укажите корректный путь к вашей рабочей директори��!
Шаг 3: Перезапустить приложение
Шаг 4: Проверить установку
Используй Filesystem для чтения всех .env.example файлов в проекте
6. Puppeteer MCP Server (Браузерная Автоматизация)
Назначение:
Puppeteer позволяет тестировать UI, делать скриншоты и проверять визуальные аспекты.
Установка:
Шаг 1: Установить MCP-сервер
npm install -g @modelcontextprotocol/server-puppeteer
Шаг 2: Добавить конфигурацию
Для обоих (Claude Desktop и VS Code):
{ "mcpServers": { "puppeteer": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-puppeteer"] } } }
Шаг 3: Перезапустить приложение
Шаг 4: Проверить установку
Используй Puppeteer для создания скриншота главной страницы localhost:3000
Важно: Puppeteer требует много ресурсов, используйте его только при необходимости.
Полный Конфигурационный Файл
Для VS Code Extension (mcp.json):
{ "mcpServers": { "serena": { "command": "uvx", "args": ["serena"], "env": { "SERENA_CONTEXT": "ide-assistant" } }, "context7": { "command": "npx", "args": ["-y", "@context7/mcp-server"], "env": { "CONTEXT7_API_KEY": "${CONTEXT7_API_KEY}" } }, "sequential-thinking": { "command": "npx", "args": ["-y", "@mcp-server/sequential-thinking"] }, "memory": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-memory"] }, "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/username/Documents/Projects" ] }, "puppeteer": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-puppeteer"] } } }
Для Claude Desktop (claude_desktop_config.json):
Аналогично, но без "SERENA_CONTEXT": "ide-assistant" для Serena.
Проверка Установки Всех Серверов
После установки всех MCP-серверов выполните тест:
Выполни следующие проверки: 1. Используй Serena для поиска функции main в текущем проекте 2. Используй Context7 для получения документации React hooks 3. Используй Sequential Thinking для планирования создания REST API 4. Сохрани в Memory Bank: "Тестовая проверка установки MCP-серверов" 5. Используй Filesystem для чтения package.json 6. (Опционально) Используй Puppeteer для скриншота localhost
Если все команды выполнены успешно — установка завершена корректно!
Устранение Проблем
Serena не запускается
Проблема: command not found: uvx
Решение:
# Переустановить uv curl -LsSf https://astral.sh/uv/install.sh | sh # Добавить в PATH (если ещё не добавлено) echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.zshrc source ~/.zshrc
Context7 возвращает ошибку API
Проблема: Invalid API key
Решение:
Проверьте правильность ключа на context7.com/dashboard
Убедитесь, что ключ начинается с
ctx7sk-Проверьте, что переменная окружения установлена:
echo $CONTEXT7_API_KEY
MCP-серверы не отображаются в VS Code
Проблема: Claude Code не видит MCP-серверы
Решение:
Проверьте путь к
mcp.json:~/Library/Application Support/Code/User/mcp.jsonПроверьте синтаксис JSON (используйте валидатор)
Полностью перезапустите VS Code
Проверьте логи: VS Code → Help → Toggle Developer Tools → Console
Filesystem MCP не находит файлы
Проблема: File not found при использовании Filesystem
Решение:
Проверьте путь в конфиге: должен быть абсолютный путь
Проверьте права доступа к директории:
ls -la /путь/к/проектуДля macOS: разрешите доступ в System Settings → Privacy & Security → Files and Folders
Часть 3: Детальное Описание MCP-Серверов
1. Serena MCP Server — Символьная Навигация по Коду
Основная Функция
Serena предоставляет семантическую навигацию по коду на уровне символов (классы, функции, методы, переменные) вместо построчного чтения файлов.
Технология
Основан на Language Server Protocol (LSP) — стандарт Microsoft для языковых серверов в IDE.
Доступные Инструменты
Навигация:
find_symbol— Найти символ (функцию, класс) по имениПоддерживает паттерны:
MyClass/myMethodSubstring matching:
getнайдётgetValue,getDataВозвращает: местоположение, сигнатуру, опционально тело функции
get_symbols_overview— Обзор всех символов в файлеВозвращает: список классов, функций, методов (без тела)
Полезно для быстрого понимания структуры файла
find_referencing_symbols— Найти все места использования символаПоказывает, где вызывается функция или используется класс
Критично для безопасного рефакторинга
search_for_pattern— Поиск по regex-паттернамГибкий поиск с контекстом (строки до/после совпадения)
Фильтрация по типам файлов и glob-паттернам
Редактирование:
replace_symbol_body— Замена тела функции/методаАвтоматически сохраняет сигнатуру
Безопаснее, чем построчная замена
insert_after_symbol— Вставка кода после символаПример: добавить новый метод в класс
insert_before_symbol— Вставка кода перед символомПример: добавить import перед первой функцией
rename_symbol— Переименование символа во всём проектеАвтоматически обновляет все ссылки
Работает через LSP (учитывает scope и imports)
Управление контекстом:
write_memory— Сохранить важную информацию о проектеread_memory— Извлечь сохранённую информациюlist_memories— Список всех сохранённых памятей
Когда Использовать Serena
✅ Обязательно использовать:
Поиск кода:
"Найди функцию
processPayment""Покажи все методы класса
UserService""Где определён класс
DatabaseConnection?"
Рефакторинг:
"Переименуй
oldFunctionвnewFunctionво всём проекте""Замени тело метода
calculateна новую реализацию"
Анализ зависимостей:
"Покажи, где используется функция
sendEmail""Найди все места, где вызывается
API.fetch"
Добавление кода:
"Добавь новый метод
validateInputв классFormValidator""Вставь import для
axiosперед первой функцией"
Когда НЕ Использовать Serena
❌ Не нужен:
Чтение README.md, .env, логов (используйте
ReadилиFilesystem)Простой текстовый поиск слова (используйте
Grep)Поиск файлов по имени (используйте
Glob)Создание новых файлов (используйте
Write)
Примеры Использования
Пример 1: Найти и Переименовать Функцию
Задача: Переименовать getUserData в fetchUserProfile
Без Serena (токены: ~45,000):
Grep по всем файлам
Прочитать 15 файлов целиком
Найти все вхождения вручную
Заменить в каждом файле
С Serena (токены: ~800):
Используй Serena: 1. Найди символ getUserData 2. Переименуй getUserData в fetchUserProfile
Команда:
# Serena автоматически: find_symbol("getUserData") # Находит за 1 запрос rename_symbol("getUserData", "fetchUserProfile") # Обновляет все ссылки
Пример 2: Добавить Новый Метод в Класс
Задача: Добавить метод validateEmail в класс User
С Serena:
1. Найди класс User 2. Вставь метод validateEmail после метода validatePassword
Команда:
find_symbol("User/validatePassword") insert_after_symbol( name_path="User/validatePassword", body=""" async validateEmail(email: string): Promise<boolean> { const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/; return emailRegex.test(email); } """ )
Экономия Ресурсов
Операция | Без Serena | С Serena | Экономия |
|---|---|---|---|
Поиск функции | 45,000 токенов | 800 токенов | 98.2% |
Переименование | 38,000 токенов | 2,100 токенов | 94.5% |
Анализ зависимостей | 52,000 токенов | 1,500 токенов | 97.1% |
2. Context7 MCP Server — Актуальная Документация
Основная Функция
Context7 предоставляет актуальную, версионно-специфичную документацию для библиотек и фреймворков напрямую из исходников.
Принцип Работы
Context7 индексирует документацию из:
GitHub repositories (официальные репозитории библиотек)
NPM packages (package.json, README, CHANGELOG)
Официальные сайты документации
Важно: Документация обновляется в реальном времени, в отличие от знаний Claude (январь 2025).
Доступные Инструменты
resolve_library_id— Найти идентификатор библиотекиВходные данные: название библиотеки (например, "Next.js")
Возвращает: Context7-совместимый ID (например,
/vercel/next.js)
get_library_docs— Получить документацию библиотекиВходные данные: library ID + опциональный топик
Возвращает: актуальная документация с примерами кода
Когда Использовать Context7
✅ Обязательно использовать:
Генерация кода с внешними библиотеками:
"Создай Next.js middleware для JWT-аутентификации"
"Настрой Drizzle ORM с PostgreSQL"
"Добавь TipTap editor в React-компонент"
Вопросы "как сделать":
"Как настроить Server Actions в Next.js 15?"
"Как использовать React Server Components?"
"Примеры использования Framer Motion"
Проверка актуальности API:
"Актуальный синтаксис миграций Drizzle ORM"
"Последние изменения в Next.js App Router"
Версионно-специфичные запросы:
"Документация React 19 hooks"
"Tailwind CSS 4 новые возможности"
Когда НЕ Использовать Context7
❌ Не нужен:
Работа со стандартными библиотеками JavaScript (известны Claude)
Базовые концепции программирования
Архитектурные вопросы (не специфичные для библиотеки)
Работа с вашим собственным кодом (используйте Serena)
Примеры Использования
Пример 1: Настройка Next.js Middleware
Задача: Создать middleware для проверки JWT-токена
Без Context7:
Claude использует устаревший синтаксис Next.js 13
Рекомендует устаревший
next-authКод не работает в Next.js 15
С Context7:
1. Получи актуальную документацию Next.js 15 по middleware 2. Получи документацию по JWT-аутентификации 3. Создай middleware с учётом последних best practices
Команда:
resolve_library_id("Next.js") # → /vercel/next.js get_library_docs( context7CompatibleLibraryID="/vercel/next.js", topic="middleware authentication" )
Результат: Актуальный код для Next.js 15 с правильным API.
Пример 2: Настройка Drizzle ORM
Задача: Подключить Drizzle ORM к PostgreSQL в Next.js
С Context7:
1. Получи документацию Drizzle ORM для PostgreSQL 2. Получи примеры интеграции с Next.js 15 3. Создай конфигурацию с учётом App Router
Команда:
resolve_library_id("Drizzle ORM") # → /drizzle-team/drizzle-orm get_library_docs( context7CompatibleLibraryID="/drizzle-team/drizzle-orm", topic="PostgreSQL Next.js setup" )
Результат: К��рректная конфигурация с актуальными импортами и API.
Экономия Ресурсов
Метрика | Без Context7 | С Context7 | Улучшение |
|---|---|---|---|
Точность кода (с первого раза) | 54% | 89% | +35% |
Время отладки устаревшего API | 15 минут | 2 минуты | -87% |
Токены на генерацию | 12,000 | 4,500 | -62.5% |
3. Sequential Thinking MCP Server — Структурированное Планирование
Основная Функция
Sequential Thinking создаёт пошаговые планы для сложных задач с учётом зависимостей и возможных проблем.
Принцип Работы
Sequential Thinking использует Chain of Thought (CoT) reasoning:
Анализирует задачу
Разбивает на подзадачи
Определяет зависимости
Создаёт упорядоченный план
Идентифицирует риски
Доступный Инструмент
sequentialthinking — Создать структурированный план
Параметры:
thought— текущий шаг размышленияthoughtNumber— номер текущего шагаtotalThoughts— ожидаемое количество шаговnextThoughtNeeded— нужен ли следующий шагisRevision— пересмотр предыдущего шага
Когда Использовать Sequential Thinking
✅ Обязательно использовать:
Большие рефакторинги (>5 файлов):
"Мигрировать проект с REST API на GraphQL"
"Заменить Drizzle ORM на Prisma во всём проекте"
"Переписать монолит на микросервисы"
Сложные новые функции:
"Добавить real-time collaboration в редактор"
"Реализовать систему прав доступа с RBAC"
"Интегрировать payment gateway (Stripe/PayPal)"
Архитектурные решения:
"Спроектировать систему кэширования для API"
"Оптимизировать производительность базы данных"
"Настроить CI/CD pipeline с Docker"
Отладка сложных проблем:
"Найти причину memory leak в Node.js приложении"
"Исправить race condition в многопоточном коде"
"Отладить медленные SQL-запросы"
Когда НЕ Использовать Sequential Thinking
❌ Не нужен:
Простые задачи (исправить опечатку, добавить комментарий)
Однофайловые изменения
Задачи с очевидным решением (добавить console.log)
Quick fixes без планирования
Примеры Использования
Пример 1: Миграция с Drizzle на Prisma
Задача: Заменить Drizzle ORM на Prisma в Next.js проекте
Без Sequential Thinking:
12 попыток выполнения
4 отката изменений
2 часа работы
Несколько забытых зависимостей
С Sequential Thinking:
Команда:
Используй Sequential Thinking для планирования миграции с Drizzle на Prisma
План (созданный Sequential Thinking):
Шаг 1: Анализ текущей схемы Drizzle - Прочитать все файлы схем в /db/schema - Идентифицировать таблицы, связи, индексы - Зависимости: нет Шаг 2: Установка Prisma и зависимостей - npm install prisma @prisma/client - npx prisma init - Зависимости: Шаг 1 (нужно знать структуру БД) Шаг 3: Создание Prisma схемы - Конвертировать Drizzle schemas в schema.prisma - Определить relations, indexes, constraints - Зависимости: Шаг 1, Шаг 2 Шаг 4: Генерация миграций - npx prisma migrate dev --name init - Проверка сгенерированного SQL - Зависимости: Шаг 3 Шаг 5: Замена кода - Заменить Drizzle импорты на Prisma Client - Обновить queries/mutations - Зависимости: Шаг 4 Шаг 6: Тестирование - Запустить unit tests - Проверить API endpoints - Зависимости: Шаг 5 Шаг 7: Удаление Drizzle - Удалить Drizzle зависимости - Удалить старые файлы схем - Зависимости: Шаг 6 (всё работает) Шаг 8: Обновление документации - Обновить README.md - Обновить CONTRIBUTING.md - Зависимости: Шаг 7 Риски: - Потеря данных при миграции (митигация: бэкап БД) - Несовместимость типов (митигация: проверка типов TypeScript) - Забытые query endpoints (митигация: code search через Serena)
Результат: Выполнение с первого раза за 45 минут.
Пример 2: Добавление Real-Time Collaboration
Задача: Добавить real-time редактирование в TipTap editor
С Sequential Thinking:
План:
Шаг 1: Выбор технологии - Анализ: WebSockets vs WebRTC vs Yjs - Рекомендация: Yjs (специально для collaborative editing) Шаг 2: Установка Yjs - npm install yjs y-websocket @tiptap/extension-collaboration - Настройка WebSocket сервера Шаг 3: Интеграция Yjs с TipTap - Добавление Collaboration extension - Конфигурация WebSocket provider Шаг 4: Синхронизация cursor positions - Установка @tiptap/extension-collaboration-cursor - Настройка отображения курсоров других пользователей Шаг 5: Управление состоянием подключения - Индикатор online/offline - Reconnection logic Шаг 6: Тестирование - Тест с несколькими пользователями - Тест reconnection Риски: - Конфликты при одновременном редактировании (Yjs решает автоматически) - WebSocket connection issues (митигация: fallback на polling)
Экономия Ресурсов
Метрика | Без Sequential Thinking | С Sequential Thinking | Улучшение |
|---|---|---|---|
Время выполнения сложной задачи | 2 часа | 45 минут | 62.5% |
Количество откатов | 4 | 0 | 100% |
Точность выполнения (с первого раза) | 42% | 91% | +49% |
Токены на планирование | N/A | 5,000 | См. ниже |
Важно: Sequential Thinking использует 5,000 токенов на планирование, но экономит 60-70% времени и предотвращает ошибки, что окупается многократно.
4. Memory Bank MCP Server — Персистентный Контекст
Основная Функция
Memory Bank сохраняет важный контекст между сессиями, чтобы Claude "помнил" решения и архитектурные решения из прошлых задач.
Принцип Работы
Memory Bank создаёт граф знаний (knowledge graph) с:
Entities (сущности): проекты, технологии, решения
Relations (связи): "проект использует технологию", "решение зависит от решения"
Observations (наблюдения): факты о сущностях
Доступные Инструменты
Создание:
create_entities— Создать новые сущностиcreate_relations— Создать связи между сущностямиadd_observations— Добавить факты к сущностям
Чтение:
read_graph— Прочитать весь граф знанийsearch_nodes— Найти сущности по запросуopen_nodes— Открыть конкретные сущности по имени
Удаление:
delete_entities— Удалить сущностиdelete_relations— Удалить связиdelete_observations— Удалить наблюдения
Когда Использовать Memory Bank
✅ Обязательно использовать:
Многосессионные проекты:
Сохранение архитектурных решений
Запоминание используемых технологий
Сохранение паттернов кода
Монорепо (несколько проектов):
Отдельная память для каждого проекта
Связи между проектами (общие либы)
История миграций и изменений
Долгосрочная разработка:
Сохранение решений проблем
История рефакторингов
Known issues и workarounds
Когда НЕ Использовать Memory Bank
❌ Не нужен:
Временные данные одной сессии
Информация, доступная в документации
Single-use данные
Примеры Использования
Пример 1: Сохранение Архитектурного Решения
Сессия 1: Настроили JWT-аутентификацию в проекте MyCMS
Команда:
create_entities([ { "name": "MyCMS", "entityType": "Project", "observations": [ "Next.js 15 App Router", "TypeScript строгий режим", "Tailwind CSS 4" ] } ]) create_entities([ { "name": "NextAuth.js", "entityType": "Technology", "observations": [ "Версия 5.0", "JWT strategy", "PostgreSQL session store" ] } ]) create_relations([ { "from": "MyCMS", "to": "NextAuth.js", "relationType": "uses for authentication" } ])
Сессия 2 (неделя спустя): "Добавь OAuth Google в MyCMS"
Memory Bank извлекает:
MyCMS → uses for authentication → NextAuth.js (v5.0, JWT strategy)
Результат: Claude сразу знает, что проект использует NextAuth.js, и создаёт OAuth-конфиг в правильном формате без повторного анализа архитектуры.
Пример 2: Монорепо с Несколькими Проектами
Структура памяти:
[TG-BOT] RAG Psychologist ├── uses → python-telegram-bot v21.9 ├── uses → ChromaDB (vectors) ├── uses → OpenAI embeddings └── deployment → Railway.app [WEB] MyCMS-System ├── uses → Next.js 15 App Router ├── uses → Drizzle ORM ├── uses → PostgreSQL (Railway) └── uses → NextAuth.js JWT [Shared] telegram-bots-env ├── shared virtual environment └── used by → RAG Psychologist, IFS Coach, Free GPT
Польза: При работе с любым проектом Memory Bank сразу предоставляет контекст:
Используемые технологии
Версии библиотек
Паттерны кода
Связи с другими проектами
Экономия Ресурсов
Метрика | Без Memory Bank | С Memory Bank | Экономия |
|---|---|---|---|
Токены при работе с известным проектом | 15,000 | 3,000 | 80% |
Время на "вспоминание" архитектуры | 5 минут | 30 секунд | 90% |
Ошибки из-за забытого контекста | 2-3 за сессию | 0 | 100% |
5. Filesystem MCP Server — Файловые Операции
Основная Функция
Filesystem предоставляет оптимизированные операции с файлами, дополняя Serena для работы с не-кодовыми файлами.
Принцип Работы
Filesystem имеет ограниченную область видимости (scope), заданную в конфиге, и работает только внутри разрешённых директорий.
Область Применения
Filesystem используется для:
Конфигурационные файлы (
.env,.json,.yaml)Логи (
.log,.txt)Документация (
.md,.pdf)Данные (
.csv,.json)Batch-операции с множеством файлов
Когда Использовать Filesystem
✅ Обязательно использовать:
Чтение не-кодовых файлов:
.env.example,.env.localЛоги:
error.log,access.logДанные:
data.json,config.yaml
Batch-операции:
Проверить все
.env.exampleфайлы на наличиеDATABASE_URLОбновить
package.jsonво всех проектахАнализ логов за последний день
Работа с большими файлами:
Streaming чтение больших логов
Чтение последних N строк файла
Когда НЕ Использовать Filesystem
❌ Не нужен:
Символьные операции с кодом (используйте Serena)
Поиск функций/классов (используйте Serena)
Переименование символов (используйте Serena)
Разделение Ответственности: Serena vs Filesystem
Задача | Инструмент | Причина |
|---|---|---|
Найти функцию | Serena | Символьная навигация |
Прочитать | Filesystem | Не-кодовый файл |
Переименовать класс | Serena | Символьная операция |
Обновить все | Filesystem | Batch-операция с конфигами |
Анализ структуры класса | Serena | LSP-based анализ |
Чтение логов | Filesystem | Не-кодовый файл |
Примеры Использования
Пример 1: Проверка .env.example на Полноту
Задача: Проверить, что все .env.example файлы содержат DATABASE_URL
С Filesystem:
find_files("**/.env.example") # Найти все .env.example batch_read([файлы]) # Прочитать все за раз # Анализ: какие файлы не содержат DATABASE_URL
Результат за 1 запрос, вместо индивидуального чтения каждого файла.
Пример 2: Анализ Последних Логов
Задача: Найти все ошибки в логах за последний час
С Filesystem:
read_file("logs/error.log", tail=1000) # Последние 1000 строк # Фильтрация по timestamp (последний час) # Группировка по типу ошибки
Экономия Ресурсов
Операция | Без Filesystem | С Filesystem | Экономия |
|---|---|---|---|
Batch чтение 10 файлов | 10 запросов | 1 запрос | 90% |
Streaming больших логов | Полная загрузка | Tail N lines | 95% |
6. Puppeteer MCP Server — Браузерная Автоматизация
Основная Функция
Puppeteer предоставляет браузерную автоматизацию для UI-тестирования и визуальной проверки.
Доступные Инструменты
puppeteer_navigate— Перейти на URLpuppeteer_screenshot— Сделать скриншотpuppeteer_click— Кликнуть элементpuppeteer_fill— Заполнить inputpuppeteer_evaluate— Выполнить JavaScript в браузере
Когда Использовать Puppeteer
✅ Обязательно использовать:
UI/Visual тестирование:
Проверка responsive design
Скриншоты для документации
Visual regression testing
E2E тестирование:
Тест user flow (регистрация → логин → действие)
Проверка форм
Тестирование навигации
Автоматизация:
Автоматическое создание скриншотов для docs
Тестирование различных разрешений
Когда НЕ Использовать Puppeteer
❌ Не нужен:
API testing (используйте curl или API clients)
Unit testing (используйте Jest/Vitest)
Code analysis
Performance testing (слишком тяжёлая операция)
Важное Предупреждение
Puppeteer потребляет много ресурсов:
Запускает headless Chrome
Требует >500 MB RAM
Медленный (несколько секунд на запуск)
Используйте только при явной необходимости!
Примеры Использования
Пример: Тест Responsive Design
Задача: Проверить, что TipTap editor корректно отображается на mobile
С Puppeteer:
puppeteer_navigate("http://localhost:3000/editor") puppeteer_screenshot(width=375, height=667, name="editor-mobile") # Анализ скриншота: видны ли кнопки, правильный layout
Сравнительная Таблица MCP-Серверов
MCP-сервер | Основная задача | Экономия токенов | Экономия времени | Когда использовать |
|---|---|---|---|---|
Serena | Символьная навигация | 98% | 75% | Любая работа с кодом |
Context7 | Актуальная документация | 62% | 50% | Генерация кода с библиотеками |
Sequential Thinking | Планирование сложных задач | N/A | 65% | Задачи >3 шагов |
Memory Bank | Персистентный контекст | 80% | 90% | Многосессионная работа |
Filesystem | Файловые операции | 90% (batch) | 60% | Не-кодовые файлы |
Puppeteer | UI-тестирование | N/A | N/A | Только ��ля UI-тестов |
Часть 4: Правильная Последовательность и Рабочие Процессы
Принцип Приоритизации MCP-Серверов
Порядок Приоритета (при выборе инструмента):
Serena — Первый выбор для всех операций с кодом
Context7 — Для документации библиотек/фреймворков
Sequential Thinking — Для планирования сложных задач (>3 шагов)
Memory Bank — Для извлечения прошлых решений
Filesystem — Для операций с не-кодовыми файлами
Puppeteer — Только при явной необходимости UI-тестирования
Почему Именно Этот Порядок?
Serena — максимальная экономия токенов (98%) при работе с кодом
Context7 — актуальность важнее скорости (генерация правильного кода с первого раза)
Sequential Thinking — предотвращает ошибки и откаты (экономия времени)
Memory Bank — избегает повторного анализа (экономия 80% токенов)
Filesystem — узкоспециализированный (только не-код)
Puppeteer — тяжёлый инструмент (только если остальные не подходят)
Типовые Рабочие Процессы (Workflows)
Workflow 1: Разработка Новой Функции
Задача: Добавить функцию "экспорт данных в CSV" в существующий проект
Последовательность:
1. Memory Bank (извлечь контекст) └─> Вопрос: "Извлеки информацию о проекте ProjectName" └─> Получаем: технологии, архитектуру, паттерны 2. Sequential Thinking (планирование) └─> Вопрос: "Спланируй добавление экспорта в CSV" └─> Получаем: пошаговый план с зависимостями 3. Context7 (актуальная документация) └─> Вопрос: "Документация по библиотеке csv-export для Node.js" └─> Получаем: правильный API и примеры 4. Serena (реализация) └─> Найти файл контроллера (find_symbol) └─> Добавить новый метод (insert_after_symbol) └─> Обновить маршруты (find_symbol + replace_symbol_body) 5. Memory Bank (сохранить решение) └─> Сохранить: "ProjectName использует csv-export v2.1 для экспорта"
Метрики:
Токены: ~12,000 (vs ~65,000 без MCP)
Время: ~15 минут (vs ~45 минут без MCP)
Точность: 95% (vs 60% без MCP)
Workflow 2: Рефакторинг Существующего Кода
Задача: Переименовать функцию processUserData в handleUserData во всём проекте
Последовательность:
1. Serena (поиск символа) └─> find_symbol("processUserData") └─> Находим: определение и сигнатуру 2. Serena (анализ использований) └─> find_referencing_symbols("processUserData") └─> Получаем: список всех мест использования (15 файлов) 3. Serena (переименование) └─> rename_symbol("processUserData", "handleUserData") └─> Автоматически обновляются все 15 файлов 4. Memory Bank (сохранить изменение) └─> add_observations("ProjectName", "Renamed processUserData → handleUserData")
Метрики:
Токены: ~2,800 (vs ~38,000 без MCP)
Время: ~3 минуты (vs ~12 минут без MCP)
Ошибки: 0 (vs 2-3 пропущенных места без MCP)
Workflow 3: Отладка Сложной Проблемы
Задача: Исправить memory leak в Node.js приложении
Последовательность:
1. Sequential Thinking (планирование отладки) └─> "Спланируй отладку memory leak" └─> Получаем: стратегию (профилирование → анализ heap → поиск утечек) 2. Filesystem (анализ логов) └─> read_file("logs/memory.log", tail=1000) └─> Находим: рост памяти при обработке requests 3. Serena (поиск подозрительного кода) └─> search_for_pattern("setInterval|setTimeout|EventEmitter") └─> Находим: не очищенные listeners 4. Context7 (правильные паттерны) └─> "Документация Node.js EventEmitter memory management" └─> Получаем: правильное использование removeListener 5. Serena (исправление) └─> replace_symbol_body для функции с утечкой └─> Добавляем cleanup логику 6. Memory Bank (сохранить решение) └─> create_entities: "Memory Leak Pattern: EventEmitter не очищен" └─> Observations: "Всегда вызывать removeListener в cleanup"
Метрики:
Токены: ~18,000 (vs ~85,000 без MCP)
Время: ~30 минут (vs ~2 часа без MCP)
Повторение ошибки: 0% (сохранено в Memory Bank)
Workflow 4: Миграция на Новую Технологию
Задача: Мигрировать проект с REST API на GraphQL
Последовательность:
1. Memory Bank (извлечь текущую архитектуру) └─> search_nodes("REST API") └─> Получаем: текущие endpoints, структуру 2. Sequential Thinking (полный план миграции) └─> "Спланируй миграцию с REST на GraphQL" └─> Получаем: 12-шаговый план с зависимостями 3. Context7 (актуальная документация GraphQL) └─> "Документация Apollo Server latest version" └─> Получаем: правильные schema definitions, resolvers 4. Serena (анализ текущих controllers) └─> find_symbol("*Controller") └─> get_symbols_overview для каждого контроллера 5. Serena (создание GraphQL resolvers) └─> insert_after_symbol: создать новые resolver файлы └─> Конвертировать логику из controllers в resolvers 6. Serena (обновление tests) └─> find_symbol("*Controller.test") └─> replace_symbol_body: обновить тесты для GraphQL 7. Memory Bank (сохранить новую архитектуру) └─> create_relations("ProjectName", "uses", "Apollo Server v4") └─> delete_relations("ProjectName", "uses", "Express REST")
Метрики:
Токены: ~45,000 (vs ~250,000 без MCP)
Время: ~2 часа (vs ~8 часов без MCP)
Откаты: 0 (vs 6-8 без планирования)
Workflow 5: Работа с Монорепо
Задача: Обновить зависимость axios с v0.27 на v1.6 во всех проектах монорепо
Последовательность:
1. Filesystem (найти все package.json) └─> find_files("**/package.json") └─> Получаем: список всех 15 проектов 2. Filesystem (batch read) └─> batch_read(package.json files) └─> Анализируем: какие используют axios 3. Context7 (breaking changes) └─> "Документация axios migration v0.27 → v1.6" └─> Получаем: список breaking changes 4. Serena (поиск использований axios в коде) └─> search_for_pattern("axios\\.get|axios\\.post") └─> Находим все вызовы API 5. Sequential Thinking (план обновления каждого проекта) └─> "План обновления axios с учётом breaking changes" └─> Получаем: безопасную последовательность 6. Serena (обновление кода) └─> Для каждого проекта: replace_symbol_body └─> Обновить согласно breaking changes 7. Filesystem (обновление package.json) └─> batch_write: обновить версию во всех файлах 8. Memory Bank (сохранить миграцию) └─> add_observations для каждого проекта └─> "Использует axios v1.6"
Метрики:
Токены: ~32,000 (vs ~180,000 без MCP)
Время: ~1 час (vs ~4 часа без MCP)
Пропущенные проекты: 0 (vs 2-3 без систематического подхода)
Workflow 6: Создание Документации
Задача: Создать автоматическую документацию API для проекта
Последовательность:
1. Serena (анализ структуры API) └─> find_symbol("*Controller") └─> get_symbols_overview для каждого контроллера └─> Извлечь: endpoints, parameters, responses 2. Context7 (формат документации) └─> "Документация OpenAPI 3.1 specification" └─> Получаем: правильный формат YAML 3. Serena (генерация комментариев JSDoc) └─> insert_before_symbol для каждой функции └─> Добавить JSDoc с описанием endpoints 4. Puppeteer (создание скриншотов UI) └─> puppeteer_navigate для каждой страницы └─> puppeteer_screenshot для визуальных примеров 5. Filesystem (создание markdown документации) └─> write_file("docs/API.md") └─> Структурированная документация с примерами 6. Memory Bank (сохранить паттерн документации) └─> create_entities("Documentation Pattern") └─> Observations: "JSDoc + OpenAPI + screenshots"
Метрики:
Токены: ~22,000 (vs ~95,000 ручная документация)
Время: ~45 минут (vs ~3 часа ручная)
Полнота: 100% (автоматический анализ кода)
Оптимальные Комбинации MCP-Серверов
Комбинация A: Быстрая Разработка
Цель: Максимальная скорость создания кода
Набор: Context7 + Serena
Применение:
Context7 → Получить актуальную документацию
Serena → Быстро добавить код в правильное место
Пример:
Задача: "Добавь JWT middleware в Next.js проект" 1. Context7: get Next.js 15 middleware docs 2. Serena: insert_before_symbol("firstRoute", middleware_code)
Метрики:
Экономия токенов: 85%
Экономия времени: 70%
Комбинация B: Безопасный Рефакторинг
Цель: Изменение кода без ошибок
Набор: Sequential Thinking + Serena + Memory Bank
Применение:
Sequential Thinking → Спланировать изменения
Serena → Выполнить изменения на уровне символов
Memory Bank → Сохранить новую архитектуру
Пример:
Задача: "Разделить монолитный файл на модули" 1. Sequential Thinking: план разделения (8 шагов) 2. Serena: find_symbol → identify symbols to extract 3. Serena: insert_after_symbol → create new modules 4. Serena: replace_symbol_body → update imports 5. Memory Bank: save new architecture
Метрики:
Экономия времени: 75%
Предотвращённые ошибки: 90%
Комбинация C: Работа с Незнакомым Проектом
Цель: Быстрое понимание и модификация чужого кода
Набор: Memory Bank + Serena + Context7
Применение:
Memory Bank → Извлечь сохранённый контекст
Serena → Навигация по структуре кода
Context7 → Документация незнакомых библиотек
Пример:
Задача: "Добавь feature в проект, над которым не работал 2 месяца" 1. Memory Bank: search_nodes("ProjectName") → Получаю: технологии, паттерны, архитектуру 2. Serena: get_symbols_overview("main.ts") → Понимаю структуру за 1 запрос 3. Context7: get docs для незнакомой библиотеки → Актуальный API 4. Serena: insert_after_symbol → добавляю feature
Метрики:
Экономия токенов: 82%
Время "вспоминания" проекта: 10x быстрее
Комбинация D: Отладка Production Issues
Цель: Быстрое решение критических проблем
Набор: Filesystem + Serena + Sequential Thinking
Применение:
Filesystem → Анализ логов
Sequential Thinking → Стратегия отладки
Serena → Быстрое исправление кода
Пример:
Задача: "API возвращает 500 ошибку в production" 1. Filesystem: read_file("logs/error.log", tail=500) → Находим: "TypeError: undefined in UserService" 2. Sequential Thinking: plan debugging → Стратегия: найти UserService → проверить null checks → добавить validation 3. Serena: find_symbol("UserService") → Находим проблемную функцию 4. Serena: replace_symbol_body → Добавляем null check
Метрики:
Время решения: 10x быстрее
MTTR (Mean Time To Recovery): от часов к минутам
Правила Оптимального Использования
Правило 1: Всегда Начинайте с Memory Bank
Если работаете с известным проектом:
Плохо: User: "Добавь OAuth в MyCMS" Claude: *читает весь проект, анализирует архитектуру* (15,000 токенов) Хорошо: User: "Добавь OAuth в MyCMS" Claude: 1. Memory Bank: search_nodes("MyCMS") (500 токенов) 2. Получаю: "MyCMS использует NextAuth.js v5 JWT" 3. Context7: NextAuth OAuth docs (2,000 токенов) 4. Serena: добавляю OAuth provider (1,500 токенов) Итого: 4,000 токенов vs 15,000 (экономия 73%)
Правило 2: Планируйте Сложные Задачи Через Sequential Thinking
Если задача требует >3 шагов:
Плохо: User: "Мигрируй с Express на Fastify" Claude: *начинает сразу менять код* → 6 откатов → 2 часа Хорошо: User: "Мигрируй с Express на Fastify" Claude: 1. Sequential Thinking: создать план миграции 2. План из 10 шагов с зависимостями 3. Выполнение по плану (0 откатов) Итого: 45 минут vs 2 часа (экономия 62.5%)
Правило 3: Используйте Context7 Перед Генерацией Кода
Если используете внешнюю библиотеку:
Плохо: User: "Добавь Redis caching" Claude: *использует устаревший API из знаний* → код не работает Хорошо: User: "Добавь Redis caching" Claude: 1. Context7: get redis library docs 2. Получаю актуальный API (например, ioredis v5) 3. Генерирую код с правильным API Результат: работает с первого раза (точность 89% vs 54%)
Правило 4: Serena Для Кода, Filesystem Для Остального
Разделение ответственности:
Код (Python, JS, TS, etc.): → Serena (символьная навигация) Не-код (.env, .md, logs, .json): → Filesystem (оптимизированное чтение) Пример: "Проверь, что .env.example содержит все нужные переменные" → Filesystem (НЕ Serena) "Найди функцию validateEnv" → Serena (НЕ Filesystem)
Правило 5: Сохраняйте Важные Решения в Memory Bank
После каждого значимого изменения:
Событие: Добавили новую технологию Действие: 1. create_entities("TechnologyName") 2. create_relations("ProjectName", "uses", "TechnologyName") 3. add_observations с деталями Событие: Решили архитектурную проблему Действие: 1. create_entities("Problem: XYZ") 2. add_observations("Solution: ...") 3. create_relations("ProjectName", "had problem", "XYZ") Польза: В следующей сессии Claude сразу знает контекст
Антипаттерны (Чего НЕ Делать)
Антипаттерн 1: Использование Puppeteer Для Всего
Плохо:
User: "Проверь, работает ли API endpoint" Claude: *запускает Puppeteer, открывает браузер, делает запрос*
Почему плохо: Puppeteer тяжёлый (500+ MB RAM, медленный)
Правильно:
User: "Проверь, работает ли API endpoint" Claude: curl или fetch (без браузера)
Антипаттерн 2: Чтение Файлов Вместо Символов
Плохо:
User: "Найди класс User" Claude: *читает 10 файлов целиком* (30,000 токенов)
Правильно:
User: "Найди класс User" Claude: Serena.find_symbol("User") (800 токенов)
Антипаттерн 3: Игнорирование Sequential Thinking Для Сложных Задач
Плохо:
User: "Добавь real-time collaboration" Claude: *сразу начинает писать код* → 5 ошибок → много откатов
Правильно:
User: "Добавь real-time collaboration" Claude: Sequential Thinking → план из 8 шагов → выполнение (0 ошибок)
Антипаттерн 4: Не Использование Memory Bank
Плохо:
Сессия 1: Настроили архитектуру (30 минут) Сессия 2 (неделя спустя): Заново анализируем архитектуру (30 минут)
Правильно:
Сессия 1: Настроили + сохранили в Memory Bank Сессия 2: Извлекли из Memory Bank (30 секунд)
Метрики Эффективности Workflows
Сравнительная Таблица
Workflow | Без MCP | С MCP (правильный) | С MCP (неправильный) |
|---|---|---|---|
Новая функция | 45 мин, 65k токенов | 15 мин, 12k токенов | 30 мин, 25k токенов |
Рефакторинг | 12 мин, 38k токенов | 3 мин, 2.8k токенов | 8 мин, 15k токенов |
Отладка | 2 часа, 85k токенов | 30 мин, 18k токенов | 1 час, 40k токенов |
Миграция | 8 часов, 250k токенов | 2 часа, 45k токенов | 5 часов, 120k токенов |
Выводы:
Правильное использование MCP: экономия 65-75%
Неправильное использование MCP: экономия только 30-40%
Разница в 2x эффективности зависит от правильного workflow!
Чек-лист Оптимального Workflow
Перед началом задачи задайте себе вопросы:
[ ] Известен ли проект? → ДА: Извлечь контекст через Memory Bank → НЕТ: Проанализировать через Serena [ ] Задача сложная (>3 шагов)? → ДА: Спланировать через Sequential Thinking → НЕТ: Выполнить напрямую [ ] Используются внешние библиотеки? → ДА: Получить актуальные docs через Context7 → НЕТ: Использовать знания Claude [ ] Работа с кодом или с файлами? → Код: Serena (символьная навигация) → Файлы (.env, logs, .md): Filesystem [ ] Нужно UI-тестирование? → ДА: Puppeteer (только если явно нужно) → НЕТ: Избежать (тяжёлый инструмент) [ ] Значимое изменение? → ДА: Сохранить решение в Memory Bank → НЕТ: Пропустить сохранение
Часть 5: Реальные Примеры и Best Practices
Пример 1: Создание REST API с Express (Полный Workflow)
Задача
Создать REST API для управления пользователями с использованием Express, TypeScript, PostgreSQL (через Drizzle ORM).
Шаг За Шагом с MCP
Начало (Планирование)
Промпт:
Используя Sequential Thinking, спланируй создание REST API для управления пользователями. Стек: Express, TypeScript, Drizzle ORM, PostgreSQL. Требования: - CRUD операции (Create, Read, Update, Delete) - Валидация входных данных - Обработка ошибок - JWT аутентификация - Unit тесты
Sequential Thinking создаёт план:
Шаг 1: Инициализация проекта - npm init, установка зависимостей - Настройка TypeScript Шаг 2: Настройка Drizzle ORM - Создание схемы users - Миграции БД Шаг 3: Создание User routes - GET /users (список) - GET /users/:id (один пользователь) - POST /users (создание) - PUT /users/:id (обновление) - DELETE /users/:id (удаление) Шаг 4: Middleware для валидации - Zod для валидации схем Шаг 5: JWT аутентификация - POST /auth/login - Middleware для защиты routes Шаг 6: Обработка ошибок - Централизованный error handler Шаг 7: Unit тесты - Jest + supertest Шаг 8: Документация - OpenAPI spec
Шаг 1: Получение Актуальной Документации
Промпт:
Используй Context7 для получения: 1. Документации Drizzle ORM (последняя версия) для PostgreSQL 2. Документации Express с TypeScript best practices 3. Документации Zod для валидации
Context7 возвращает:
Drizzle ORM (актуальная версия, синтаксис
drizzle(),migrate())Express 4.x с TypeScript типами
Zod (актуальные методы валидации)
Шаг 2: Создание Структуры Проекта
Промпт:
Создай файловую структуру: src/ db/ schema.ts migrations/ routes/ users.ts auth.ts middleware/ validate.ts auth.ts controllers/ users.controller.ts types/ user.types.ts app.ts server.ts
Шаг 3: Создание Drizzle Схемы
Промпт:
Используя актуальный синтаксис Drizzle ORM, создай схему users: - id (UUID, primary key) - email (unique, not null) - password (hashed, not null) - name (string) - createdAt (timestamp) - updatedAt (timestamp)
Результат (src/db/schema.ts):
import { pgTable, uuid, varchar, timestamp } from 'drizzle-orm/pg-core'; import { sql } from 'drizzle-orm'; export const users = pgTable('users', { id: uuid('id').primaryKey().default(sql`gen_random_uuid()`), email: varchar('email', { length: 255 }).notNull().unique(), password: varchar('password', { length: 255 }).notNull(), name: varchar('name', { length: 255 }), createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); export type User = typeof users.$inferSelect; export type NewUser = typeof users.$inferInsert;
Шаг 4: Создание Controller
Промпт:
Используя Serena, создай users.controller.ts с CRUD операциями. Используй актуальный синтаксис Drizzle ORM из Context7.
Serena создаёт файл:
import { Request, Response } from 'express'; import { db } from '../db'; import { users } from '../db/schema'; import { eq } from 'drizzle-orm'; import bcrypt from 'bcryptjs'; export class UsersController { async getAll(req: Request, res: Response) { const allUsers = await db.select().from(users); res.json(allUsers); } async getById(req: Request, res: Response) { const { id } = req.params; const user = await db.select().from(users).where(eq(users.id, id)); if (!user.length) { return res.status(404).json({ error: 'User not found' }); } res.json(user[0]); } async create(req: Request, res: Response) { const { email, password, name } = req.body; const hashedPassword = await bcrypt.hash(password, 10); const newUser = await db.insert(users).values({ email, password: hashedPassword, name, }).returning(); res.status(201).json(newUser[0]); } async update(req: Request, res: Response) { const { id } = req.params; const { email, name } = req.body; const updatedUser = await db.update(users) .set({ email, name, updatedAt: new Date() }) .where(eq(users.id, id)) .returning(); if (!updatedUser.length) { return res.status(404).json({ error: 'User not found' }); } res.json(updatedUser[0]); } async delete(req: Request, res: Response) { const { id } = req.params; const deletedUser = await db.delete(users) .where(eq(users.id, id)) .returning(); if (!deletedUser.length) { return res.status(404).json({ error: 'User not found' }); } res.status(204).send(); } }
Шаг 5: Добавление Валидации
Промпт:
Используй Context7 для получения актуального синтаксиса Zod. Создай middleware для валидации user input.
Context7 → Актуальный синтаксис Zod v3.22
Результат (src/middleware/validate.ts):
import { z } from 'zod'; import { Request, Response, NextFunction } from 'express'; const createUserSchema = z.object({ email: z.string().email(), password: z.string().min(8), name: z.string().min(2).optional(), }); const updateUserSchema = z.object({ email: z.string().email().optional(), name: z.string().min(2).optional(), }); export const validateCreateUser = ( req: Request, res: Response, next: NextFunction ) => { const result = createUserSchema.safeParse(req.body); if (!result.success) { return res.status(400).json({ errors: result.error.errors }); } next(); }; export const validateUpdateUser = ( req: Request, res: Response, next: NextFunction ) => { const result = updateUserSchema.safeParse(req.body); if (!result.success) { return res.status(400).json({ errors: result.error.errors }); } next(); };
Шаг 6: Создание Routes
Промпт:
Используя Serena, создай routes/users.ts с подключением controller и middleware валидации.
Результат:
import { Router } from 'express'; import { UsersController } from '../controllers/users.controller'; import { validateCreateUser, validateUpdateUser } from '../middleware/validate'; import { authMiddleware } from '../middleware/auth'; const router = Router(); const controller = new UsersController(); // Все routes защищены аутентификацией router.use(authMiddleware); router.get('/', controller.getAll); router.get('/:id', controller.getById); router.post('/', validateCreateUser, controller.create); router.put('/:id', validateUpdateUser, controller.update); router.delete('/:id', controller.delete); export default router;
Шаг 7: Сохранение в Memory Bank
Промпт:
Сохрани в Memory Bank архитектурные решения этого проекта: - Используемые технологии - Паттерны (controller-service-repository) - Middleware для валидации и аутентификации
Memory Bank сохраняет:
create_entities([ { "name": "User Management API", "entityType": "Project", "observations": [ "Express 4.x with TypeScript", "Drizzle ORM with PostgreSQL", "Zod for validation", "JWT for authentication", "Controller-Route-Middleware pattern" ] } ]) create_relations([ {"from": "User Management API", "to": "Express", "relationType": "uses"}, {"from": "User Management API", "to": "Drizzle ORM", "relationType": "uses"}, {"from": "User Management API", "to": "Zod", "relationType": "uses"} ])
Метрики Этого Примера
Метрика | Без MCP | С MCP | Экономия |
|---|---|---|---|
Время создания | 4 часа | 1.5 часа | 62.5% |
Токены | ~120,000 | ~28,000 | 76.7% |
Ошибки (багов) | 8-10 | 1-2 | 87.5% |
Использование устаревших API | 3-4 | 0 | 100% |
Пример 2: Отладка Performance Issue
Задача
API endpoint /users/:id отвечает 5+ секунд. Нужно найти и исправить проблему.
Workflow
Шаг 1: Анализ Логов
Промпт:
Используй Filesystem для чтения последних 1000 строк из logs/performance.log. Найди записи, связанные с /users/:id endpoint.
Filesystem возвращает:
[2025-01-20 14:23:15] GET /users/123 - 5234ms - Query: SELECT * FROM users... [2025-01-20 14:23:20] GET /users/456 - 5891ms - Query: SELECT * FROM users... [2025-01-20 14:23:25] GET /users/789 - 5102ms - Query: SELECT * FROM users...
Вывод: Медленный SQL-запрос.
Шаг 2: Поиск Проблемного Кода
Промпт:
Используй Serena для поиска контроллера users и метода getById. Покажи полный код метода.
Serena находит:
async getById(req: Request, res: Response) { const { id } = req.params; // Проблема: N+1 query const user = await db.select().from(users).where(eq(users.id, id)); const posts = await db.select().from(posts).where(eq(posts.userId, id)); const comments = await db.select().from(comments).where(eq(comments.userId, id)); res.json({ user: user[0], posts, comments }); }
Проблема найдена: Три отдельных запроса (N+1 query problem).
Шаг 3: Получение Best Practices
Промпт:
Используй Context7 для получения документации Drizzle ORM по JOIN и eager loading.
Context7 возвращает:
// Правильный способ с JOIN const result = await db .select() .from(users) .leftJoin(posts, eq(users.id, posts.userId)) .leftJoin(comments, eq(users.id, comments.userId)) .where(eq(users.id, id));
Шаг 4: Исправление
Промпт:
Используй Serena для замены тела метода getById на оптимизированную версию с JOIN.
Serena исправляет:
async getById(req: Request, res: Response) { const { id } = req.params; // Оптимизировано: один запрос с JOIN и явным маппингом полей const result = await db .select({ userId: users.id, userName: users.name, userEmail: users.email, postId: posts.id, postTitle: posts.title, commentId: comments.id, commentText: comments.text, }) .from(users) .leftJoin(posts, eq(users.id, posts.userId)) .leftJoin(comments, eq(users.id, comments.userId)) .where(eq(users.id, id)); // Группируем результаты по пользователю const user = result.length > 0 ? { id: result[0].userId, name: result[0].userName, email: result[0].userEmail, posts: result.filter(r => r.postId).map(r => ({ id: r.postId, title: r.postTitle })), comments: result.filter(r => r.commentId).map(r => ({ id: r.commentId, text: r.commentText })), } : null; if (!user) { return res.status(404).json({ error: 'User not found' }); } res.json(user); }
Шаг 5: Сохранение Решения
Промпт:
Сохрани в Memory Bank: - Проблема: N+1 query в users controller - Решение: Использовать JOIN вместо нескольких запросов - Результат: Уменьшение времени с 5+ секунд до <200ms
Memory Bank сохраняет:
create_entities([ { "name": "N+1 Query Problem", "entityType": "Issue", "observations": [ "Симптом: медленный response time (5+ секунд)", "Причина: несколько последовательных запросов", "Решение: объединить через JOIN", "Результат: <200ms response time" ] } ]) create_relations([ {"from": "User Management API", "to": "N+1 Query Problem", "relationType": "had issue"} ])
Метрики
Метрика | Без MCP | С MCP |
|---|---|---|
Время отладки | 45 минут | 12 минут |
Токены | ~35,000 | ~8,000 |
Performance улучшение | 5234ms → 180ms | 5234ms → 180ms |
Best Practices
BP1: Структурированная Инициализация Проекта
Всегда начинайте новый проект с этой последовательности:
1. Sequential Thinking: спланировать архитектуру 2. Context7: получить docs для всех основных технологий 3. Memory Bank: сохранить стек и архитектурные решения 4. Serena: создать структуру кода
Пример промпта:
Новый проект: E-commerce платформа на Next.js 15. 1. Используй Sequential Thinking для планирования архитектуры 2. Используй Context7 для получения docs: - Next.js 15 App Router - Drizzle ORM - Stripe payments 3. Сохрани в Memory Bank стек и архитектурные решения 4. Создай базовую структуру через Serena
BP2: Префикс "Используй [MCP-сервер]" в Промптах
Плохо:
"Найди функцию processPayment"
Claude может использовать Grep вместо Serena → неэффективно.
Хорошо:
"Используй Serena для поиска функции processPayment"
Claude гарантированно использует правильный инструмент.
BP3: Explicit Memory Bank Updates
После каждого значимого изменения:
"Сохрани в Memory Bank: - [что изменилось] - [какая технология использована] - [важные детали реализации]"
Примеры значимых изменений:
Добавление новой технологии (библиотеки)
Архитектурное решение
Решение сложной проблемы
Миграция на новую версию
BP4: Batch Operations с Filesystem
Плохо (последовательное чтение):
"Прочитай .env.example в проекте A" "Прочитай .env.example в проекте B" "Прочитай .env.example в проекте C"
Хорошо (batch чтение):
"Используй Filesystem: 1. Найди все .env.example файлы 2. Прочитай их все одновременно 3. Проверь наличие DATABASE_URL во всех"
BP5: Проверка Актуальности Через Context7
Перед использованием библиотеки, проверьте актуальность:
"Используй Context7 для получения последней документации [библиотека]. Проверь, изменился ли API с версии [старая версия]."
Особенно важно для:
Next.js (частые breaking changes)
React (новые паттерны)
ORM-библиотеки (Drizzle, Prisma)
UI-библиотеки (Tailwind, Framer Motion)
BP6: Используйте Sequential Thinking Для "Неочевидных" Задач
Критерий: Если не уверены в последовательности шагов → используйте Sequential Thinking.
Примеры:
Миграция данных
Настройка CI/CD
Интеграция сторонних сервисов
Оптимизация производительности
BP7: Сохраняйте Troubleshooting Решения
Каждый раз при решении нестандартной проблемы:
"Сохрани в Memory Bank: - Проблема: [описание] - Симптомы: [как проявлялось] - Причина: [что было не так] - Решение: [как исправили] - Проект: [где возникло]"
Польза: При повторении проблемы в другом проекте Memory Bank подскажет решение.
Troubleshooting: Частые Проблемы
Проблема 1: Claude Игнорирует Просьбу Использовать MCP
Симптом:
User: "Используй Serena для поиска класса User" Claude: *использует Grep вместо Serena*
Причина: Недостаточно explicit промпт.
Решение:
"ВАЖНО: Используй именно Serena MCP server (инструмент mcp__serena__find_symbol) для поиска класса User."
Проблема 2: Context7 Возвращает Неправильную Библиотеку
Симптом:
User: "Документация для Drizzle ORM" Context7: *возвращает Drizzle (CSS фреймворк)*
Решение: Уточните в промпте:
"Используй Context7 для получения документации Drizzle ORM (TypeScript ORM для SQL, НЕ CSS фреймворк)"
Проблема 3: Sequential Thinking Создаёт Слишком Детальный План
Симптом: План из 25 шагов для простой задачи.
Решение: Укажите уровень детализации:
"Используй Sequential Thinking для создания high-level плана (5-7 шагов) миграции с REST на GraphQL."
Проблема 4: Memory Bank "Забывает" Информацию
Симптом: Сохранённая информация не извлекается.
Причина: Неправильное именование entities.
Решение: Используйте консистентные имена:
Плохо: - "My CMS" - "MyCMS" - "my-cms" Хорошо (всегда одинаково): - "MyCMS-System"
Проблема 5: Serena Не Находит Символ
Симптом:
Serena: "Symbol not found: getUserData"
Возможные причины:
Символ в другом файле
Опечатка в имени
Символ не является top-level
Решение:
1. Попробуйте substring matching: find_symbol("getData", substring_matching=true) 2. Используйте search_for_pattern: search_for_pattern("getUserData") 3. Проверьте name path: find_symbol("UserService/getData") вместо просто "getData"
Измеримые Результаты (Реальная Статистика)
Из Личного Опыта (34 проекта, 1.5 года)
До использования MCP (первые 6 месяцев):
Средняя задача: 45 минут
Токенов на задачу: ~65,000
Ошибок на задачу: 3-4
Переделок: 2-3 раза
После внедрения MCP (последние 9 месяцев):
Средняя задача: 15 минут (3x быстрее)
Токенов на задачу: ~12,000 (5.4x меньше)
Ошибок на задачу: 0-1 (4x меньше)
Переделок: 0-1 раз (3x меньше)
Совокупная экономия за 9 месяцев:
Время: ~450 часов (работая 4 часа/день = 112 дней экономии)
API costs: ~$1,200 (при $0.003/1k input tokens)
Часть 6: Коллекция Стартовых Промптов
Общий Стартовый Промпт (Для Любой Задачи)
Используйте этот промпт в начале каждой сессии с Claude Code:
Я работаю с Claude Code и имею доступ к следующим MCP-серверам: - Serena (символьная навигация по коду) - Context7 (актуальная документация библиотек) - Sequential Thinking (планирование сложных задач) - Memory Bank (персистентный контекст между сессиями) - Filesystem (операции с файлами) - Puppeteer (UI-тестирование, если необходимо) Правила работы: 1. Всегда используй Serena для операций с кодом (поиск, рефакторинг) 2. Всегда используй Context7 перед генерацией кода с внешними библиотеками 3. Используй Sequential Thinking для задач >3 шагов 4. Проверяй Memory Bank перед началом работы с известным проектом 5. Сохраняй важные архитектурные решения в Memory Bank Для текущей задачи: [описание задачи] Начни с проверки Memory Bank (если проект известен) или с планирования через Sequential Thinking (если задача сложная).
Стартовые Промпты По Типам Задач
1. Новый Проект (From Scratch)
Создаю новый проект: [название и краткое описание] Стек технологий: [список технологий] Используя MCP-серверы: 1. Sequential Thinking: - Спланируй архитектуру проекта - Определи структуру папок - Создай план реализации основных функций 2. Context7: - Получи актуальную документацию для: * [технология 1] * [технология 2] * [технология 3] 3. Serena: - Создай базовую структуру файлов согласно плану 4. Memory Bank: - Сохрани: * Стек технологий * Архитектурные решения * Выбранные паттерны Начинаем с шага 1 (Sequential Thinking).
Пример конкретного использования:
Создаю новый проект: Task Management API Стек технологий: Express, TypeScript, Drizzle ORM, PostgreSQL, JWT Используя MCP-серверы: 1. Sequential Thinking: - Спланируй архитектуру REST API для управления задачами - Определи структуру папок (controllers, routes, middleware, db) - Создай план реализации CRUD операций 2. Context7: - Получи актуальную документацию для: * Express с TypeScript * Drizzle ORM (PostgreSQL) * JWT аутентификация 3. Serena: - Создай базовую структуру файлов согласно плану 4. Memory Bank: - Сохрани стек, архитектуру и паттерны Начинаем с шага 1.
2. Добавление Новой Функции
Проект: [название проекта] Задача: Добавить функцию [описание функции] Workflow: 1. Memory Bank: - Извлеки информацию о проекте "[название]" - Получи контекст: используемые технологии, архитектуру, паттерны 2. Sequential Thinking (если задача сложная): - Спланируй реализацию функции - Определи затрагиваемые компоненты - Создай пошаговый план 3. Context7 (если используются новые библиотеки): - Получи актуальную документацию для [библиотека] 4. Serena: - Найди затрагиваемые файлы и символы - Реализуй функцию согласно плану 5. Memory Bank: - Сохрани информацию о новой функции Начни с извлечения контекста из Memory Bank.
Пример:
Проект: MyCMS-System Задача: Добавить функцию экспорта статей в PDF Workflow: 1. Memory Bank: - Извлеки информацию о проекте "MyCMS-System" 2. Sequential Thinking: - Спланируй реализацию экспорта в PDF - Определи: backend endpoint, frontend кнопка, PDF генерация 3. Context7: - Получи документацию для библиотеки PDFKit или jsPDF 4. Serena: - Найди articles controller - Добавь метод exportToPDF - Обнови frontend компонент ArticleActions 5. Memory Bank: - Сохрани: "MyCMS использует [выбранная библиотека] для PDF export" Начни с шага 1.
3. Рефакторинг Кода
Проект: [название] Задача рефакторинга: [описание] Workflow: 1. Serena: - Найди все затрагиваемые символы (классы, функции) - Проанализируй зависимости через find_referencing_symbols 2. Sequential Thinking (если рефакторинг затрагивает >5 файлов): - Спланируй безопасную последовательность изменений - Определи риски и точки отката 3. Context7 (если используются новые паттерны): - Получи best practices для [паттерн] 4. Serena: - Выполни рефакторинг (rename_symbol, replace_symbol_body) - Обнови все references автоматически 5. Memory Bank: - Сохрани информацию о выполненном рефакторинге ВАЖНО: Используй символьные операции Serena (rename_symbol) вместо построчной замены для безопасного обновления всех references. Начни с анализа через Serena.
Пример:
Проект: E-commerce API Задача: Переименовать CartService в ShoppingCartService и обновить все вызовы Workflow: 1. Serena: - Найди класс CartService - Проанализируй все места использования (find_referencing_symbols) 2. Serena: - Переименуй CartService → ShoppingCartService - Автоматически обнови все imports и вызовы 3. Memory Bank: - Добавь observation: "Переименован CartService → ShoppingCartService" Начни с поиска класса.
4. Отладка Проблемы
Проект: [название] Проблема: [описание проблемы] Симптомы: [что не работает, ошибки] Workflow: 1. Filesystem (если есть логи): - Прочитай последние N строк логов - Найди записи, связанные с проблемой 2. Sequential Thinking: - Спланируй стратегию отладки - Определи возможные причины - Создай план проверки гипотез 3. Serena: - Найди подозрительные функции/классы - Проанализируй код на предмет типичных ошибок 4. Context7 (если проблема связана с библиотекой): - Проверь актуальность используемого API - Найди известные issues в документации 5. Serena: - Исправь найденные проблемы 6. Memory Bank: - Сохрани решение для будущего reference Начни с анализа логов (если есть) или планирования отладки.
Пример:
Проект: Blog Platform Проблема: Медленная загрузка страницы со списком статей Симптомы: GET /articles отвечает 5+ секунд Workflow: 1. Filesystem: - Прочитай logs/performance.log (последние 500 строк) - Найди записи GET /articles 2. Sequential Thinking: - Спланируй отладку performance issue - Гипотезы: N+1 query, отсутствие индексов, неэффективный SQL 3. Serena: - Найди articles controller и метод getAll - Проанализируй SQL queries 4. Context7: - Получи best practices для Drizzle ORM JOIN и eager loading 5. Serena: - Оптимизируй запросы (добавь JOIN вместо N+1) 6. Memory Bank: - Сохрани: "N+1 query problem решена через JOIN" Начни с чтения логов.
5. Миграция Технологий
Проект: [название] Миграция: с [старая технология] на [новая технология] Workflow: 1. Memory Bank: - Извлеки текущую архитектуру проекта - Проверь, какие компоненты зависят от мигрируемой технологии 2. Sequential Thinking: - Создай детальный план миграции (10-15 шагов) - Определи зависимости между шагами - Идентифицируй риски и точки отката 3. Context7: - Получи актуальную документацию для [новая технология] - Получи migration guide (если существует) 4. Serena: - Найди все файлы, использующие [старая технология] - Выполни миграцию согласно плану Sequential Thinking 5. Memory Bank: - Обнови информацию о проекте - Сохрани детали миграции и возникшие проблемы ВАЖНО: Не пропускай шаг планирования через Sequential Thinking! Миграции без плана приводят к многократным откатам. Начни с извлечения текущей архитектуры из Memory Bank.
Пример:
Проект: Analytics Dashboard Миграция: с REST API на GraphQL Workflow: 1. Memory Bank: - Извлеки информацию об Analytics Dashboard - Проверь текущие endpoints и структуру 2. Sequential Thinking: - Спланируй миграцию REST → GraphQL (12 шагов) - Определи последовательность: schema → resolvers → frontend 3. Context7: - Получи документацию Apollo Server (latest) - Получи документацию Apollo Client (React) - Найди migration guides REST → GraphQL 4. Serena: - Найди все REST controllers - Конвертируй в GraphQL resolvers поэтапно - Обнови frontend queries 5. Memory Bank: - Обнови: "Analytics Dashboard uses Apollo Server v4 GraphQL" - Удали старую информацию о REST endpoints Начни с шага 1.
6. Code Review / Анализ Чужого Кода
Проект: [название или путь к коду] Задача: Проанализировать код [конкретная часть или весь проект] Цель анализа: [понять архитектуру / найти проблемы / подготовиться к модификации] Workflow: 1. Serena: - Получи overview структуры (get_symbols_overview) - Идентифицируй основные компоненты 2. Serena: - Проанализируй зависимости между компонентами - Используй find_referencing_symbols для ключевых функций 3. Context7 (если встречаются незнакомые библиотеки): - Получи документацию для [библиотека] 4. Memory Bank (если планируешь работать с проектом): - Сохрани обнаруженную архитектуру - Сохрани используемые технологии и паттерны Результат: Краткий отчёт о структуре кода, используемых технологиях, потенциальных проблемах и рекомендациях. Начни с общего overview через Serena.
7. Работа с Монорепо
Монорепо: [путь к корневой директории] Задача: [операция над несколькими проектами] Примеры: - Обновить зависимость во всех проектах - Применить единый eslint config - Создать общую utility library Workflow: 1. Filesystem: - Найди все package.json / requirements.txt (в зависимости от стека) - Проанализируй структуру монорепо 2. Memory Bank: - Извлеки информацию о каждом проекте в монорепо - Проверь, какие проекты могут быть затронуты 3. Sequential Thinking: - Спланируй последовательность изменений - Определи зависимости между проектами - Создай план тестирования после изменений 4. Context7 (если нужна новая технология): - Получи документацию для [технология] 5. Serena + Filesystem: - Выполни изменения в каждом проекте - Для кода: Serena - Для конфигов: Filesystem 6. Memory Bank: - Обнови информацию по каждому затронутому проекту Начни с анализа структуры через Filesystem.
Пример:
Монорепо: /Users/username/Projects/Dev Задача: Обновить axios с 0.27 на 1.6 во всех проектах Workflow: 1. Filesystem: - Найди все package.json в монорепо - Идентифицируй проекты, использующие axios 2. Context7: - Получи migration guide axios 0.27 → 1.6 - Проверь breaking changes 3. Sequential Thinking: - Спланируй обновление для каждого проекта - Определи порядок (начать с проектов без prod зависимостей) 4. Serena: - Найди все использования axios в коде - Обнови согласно breaking changes 5. Filesystem: - Обнови версию в package.json для всех проектов 6. Memory Bank: - Для каждого проекта: add_observations("Использует axios v1.6") Начни с поиска проектов через Filesystem.
Специальные Промпты
Промпт: Инициализация Memory Bank для Проекта
Проект: [название] Проанализируй проект и сохрани в Memory Bank: 1. Основную информацию: - Тип проекта (web app, API, bot, etc.) - Основной язык программирования - Фреймворк (если используется) 2. Технологии: - Backend (если есть) - Frontend (если есть) - База данных - Внешние сервисы / API 3. Архитектурные паттерны: - Структура папок - Используемые паттерны (MVC, Repository, etc.) 4. Важные детали: - Система аутентификации - Deployment platform - Любые специфичные решения Используй Serena для анализа кода и Memory Bank для сохранения.
Промпт: Извлечение Всего Контекста из Memory Bank
Покажи мне всю сохранённую информацию о проекте [название]: 1. Используй Memory Bank: search_nodes("[название проекта]") 2. Выведи: - Все entities связанные с проектом - Все relations - Все observations 3. Структурируй вывод по категориям: - Технологии - Архитектурные решения - Известные проблемы и решения - История изменений Это поможет мне быстро вспомнить контекст проекта.
Промпт: Валидация Установки MCP-Серверов
Проверь, что все MCP-серверы работают корректно: 1. Serena: - Выполни find_symbol("main") в текущем проекте - Ожидаемый результат: найдена функция или сообщение "not found" 2. Context7: - Получи документацию для "React hooks" - Ожидаемый результат: документация с примерами 3. Sequential Thinking: - Создай простой план "Добавить кнопку на сайт" - Ожидаемый результат: план из 3-4 шагов 4. Memory Bank: - Сохрани тестовую entity "Test Installation" - Затем прочитай её обратно 5. Filesystem: - Прочитай package.json в корне проекта (если есть) 6. Puppeteer (опционально): - Сделай скриншот localhost:3000 (если сервер запущен) Выведи результат каждой проверки: ✅ работает / ❌ ошибка.
Промпты для Типичных Задач
Задача: Добавить API Endpoint
Проект: [название] Добавить новый API endpoint: - Метод: [GET/POST/PUT/DELETE] - Путь: [/api/...] - Функция: [описание] Workflow: 1. Memory Bank: извлечь архитектуру проекта 2. Context7: актуальная документация для используемого фреймворка 3. Serena: - Найти файл routes - Добавить новый route (insert_after_symbol) - Создать controller method (если нужен) 4. Memory Bank: сохранить информацию о новом endpoint Начни с извлечения архитектуры.
Задача: Исправить Bug
Проект: [название] Bug: [описание бага] Шаги воспроизведения: 1. [шаг 1] 2. [шаг 2] 3. [результат: что идёт не так] Workflow: 1. Filesystem (если есть stack trace или логи): - Прочитай логи, найди error stack trace 2. Serena: - Найди функцию из stack trace - Проанализируй код на предмет проблемы 3. Context7 (если ошибка связана с библиотекой): - Проверь актуальность API - Найди известные issues 4. Serena: - Исправь найденную проблему 5. Memory Bank: - Сохрани bug report и решение Начни с анализа логов или поиска проблемной функции.
Задача: Оптимизировать Performance
Проект: [название] Проблема: [что работает медленно] Метрика: [текущее время / желаемое время] Workflow: 1. Sequential Thinking: - Спланируй процесс профилирования - Определи возможные узкие места 2. Filesystem: - Прочитай performance logs (если есть) 3. Serena: - Найди проблемный код - Проанализируй queries / loops / async operations 4. Context7: - Получи best practices для оптимизации [конкретная технология] 5. Serena: - Примени оптимизации 6. Memory Bank: - Сохрани: "Performance issue [описание] решена через [метод]" Начни с планирования через Sequential Thinking.
Чек-лист Перед Началом Работы
Используйте этот чек-лист в начале каждой сессии:
[ ] MCP-серверы установлены и работают → Проверка: выполни промпт "Валидация Установки MCP" [ ] Определён тип задачи → Новый проект / Новая функция / Рефакторинг / Отладка / Миграция [ ] Выбран правильный стартовый промпт → См. раздел "Стартовые Промпты По Типам Задач" [ ] Проверен Memory Bank (для известных проектов) → Промпт: "Извлечение Контекста из Memory Bank" [ ] Определена последовательность MCP-серверов → Memory Bank → Sequential Thinking → Context7 → Serena [ ] Готов explicit промпт с упоминанием MCP-серверов → Формат: "Используй [MCP-сервер] для [действие]"
Настройка Автоматических Промптов (Опционально)
Для частых задач можно создать автоматические промпты в VS Code через slash commands.
Пример: Создать файл .claude/commands/new-feature.md:
Используя MCP-серверы, добавь новую функцию в проект. Workflow: 1. Memory Bank: извлечь архитектуру проекта 2. Sequential Thinking: спланировать реализацию 3. Context7: получить актуальную документацию 4. Serena: реализовать функцию 5. Memory Bank: сохранить информацию Опиши новую функцию:
Затем используй: /new-feature в Claude Code.
Итоговый Универсальный Стартовый Промпт
Самый эффективный промпт для начала любой задачи:
[ИНИЦИАЛИЗАЦИЯ MCP-ОПТИМИЗИРОВАННОЙ СЕССИИ] MCP-серверы: Serena, Context7, Sequential Thinking, Memory Bank, Filesystem, Puppeteer Проект: [название или "новый проект"] Задача: [описание задачи] Workflow: 1. Определение контекста: - Если проект известен → Memory Bank: извлечь контекст - Если новый проект → пропустить 2. Определение сложности: - Если задача >3 шагов → Sequential Thinking: создать план - Если простая задача → пропустить 3. Проверка актуальности: - Если используются внешние библиотеки → Context7: получить docs - Если только стандартные API → пропустить 4. Выполнение: - Для операций с кодом → Serena - Для операций с файлами → Filesystem 5. Сохранение результата: - Если значимое изменение → Memory Bank: сохранить ВАЖНЫЕ ПРАВИЛА: - Всегда используй explicit "Используй [MCP-сервер]" в промптах - Всегда проверяй Memory Bank перед началом работы с известным проектом - Всегда используй Sequential Thinking для задач >3 шагов - Всегда используй Context7 перед генерацией кода с внешними библиотеками Начни с шага 1 (определение контекста).
С уважением к сообществу,
не программист,
не, упаси мою ж*пу, вайб-коддер,
но просто уверенный юзер ИИ
Малов Никита.
