Почему Claude Code раздражает и почему это ваш лучший помощник
Claude Code выглядит как очередной AI-ассистент. Открываете окно, пишете "сделай мне REST API", получаете код. Скучно. Пока не понимаете, что это не просто генератор кода - это система, которая заставляет вас думать иначе о разработке.
Проблема не в том, что Claude Code плохо генерирует код. Проблема в том, что 95% разработчиков используют его как ChatGPT с подсветкой синтаксиса. Они пишут "напиши функцию login", получают код, копируют. Через час забывают, что именно генерировали и почему. Через день не могут повторить результат.
Если ваш промпт к Claude Code начинается со слов "напиши код для...", вы теряете 80% потенциала системы. Вы превращаете ИИ в дорогой copy-paste инструмент.
MCP: секретное оружие, которое меняет всё
Model Context Protocol - это не "еще один API". Это способ сказать Claude: "Вот весь мой мир. Базы данных, CI/CD, мониторинг, даже кофеварка в офисе. Используй всё".
Без MCP Claude Code работает в вакууме. Он видит только файлы в проекте. С MCP он видит:
- Состояние PostgreSQL в реальном времени
- Результаты последнего прогона Playwright тестов
- Логи из Kibana за последний час
- Список открытых PR в GitHub
- Метрики из Prometheus
Разница как между слепым и зрячим разработчиком. В статье про MCP Tool Registry я показывал, как автоматизировать RAG-системы. Здесь мы пойдем дальше.
1Настройка MCP для реальной разработки
Не начинайте с десятка серверов. Начните с трех, которые дают максимальный эффект:
// ~/.config/claude/desktop-config.json
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["@modelcontextprotocol/server-postgres"],
"env": {
"POSTGRES_URL": "postgresql://user:pass@localhost:5432/mydb"
}
},
"filesystem": {
"command": "npx",
"args": ["@modelcontextprotocol/server-filesystem"],
"env": {
"MCP_SERVER_FILESYSTEM_ROOT": "/Users/you/projects"
}
},
"playwright": {
"command": "python",
"args": ["-m", "mcp_playwright_server"],
"env": {
"BROWSER_PATH": "/usr/bin/chromium"
}
}
}
}Промпты, которые работают (а не просто запросы)
Вот как НЕ надо писать промпты:
# ПЛОХО
Напиши middleware для Express.js который проверяет JWT токенВот почему это плохо: Claude сделает рабочую версию. Но она не будет связана с вашей конкретной базой пользователей, не будет логировать в ваш Sentry, не будет учитывать rate limiting вашего API.
Вот как надо:
# ХОРОШО
Система: Ты - senior backend разработчик в команде SaaS-продукта.
Контекст:
1. У нас PostgreSQL с таблицами users (id, email, hashed_password, role) и sessions (id, user_id, token, expires_at)
2. Используем Express.js 4.x с TypeScript
3. Вся аутентификация через JWT с секретом из process.env.JWT_SECRET
4. Нужно логировать попытки неавторизованного доступа в Sentry
5. Rate limiting: максимум 5 failed attempts per minute per IP
Задача: Создай middleware auth.js который:
- Проверяет Authorization: Bearer
- Валидирует JWT, проверяет expiry
- Проверяет наличие сессии в БД (таблица sessions)
- Добавляет user object в req.user
- Логирует failed attempts с IP, user_id (если есть), endpoint
- Отправляет в Sentry при подозрительной активности (5+ failed attempts)
- Возвращает 401 при invalid token, 403 при expired session
Требования к коду:
- Используй async/await
- Добавь JSDoc комментарии
- Добавь unit test с mock БД
- Создай отдельный файл config/auth.config.js с настройками Разница в деталях. Во втором случае Claude понимает архитектуру, ограничения, бизнес-логику. Он генерирует код, который почти готов к продакшену.
2Автоматизация тестирования с Playwright
Самая большая ошибка - считать, что AI только пишет код. Нет, он должен его тестировать. И не просто unit тесты, а end-to-end.
Установите MCP сервер для Playwright (его нет в официальных, но есть community версии):
pip install mcp-playwright-server
# Или через npm
npm install -g mcp-playwright-serverТеперь ваш промпт может выглядеть так:
Создай форму регистрации с полями:
- Email (валидация формата)
- Password (мин. 8 символов, буквы и цифры)
- Confirm password
И сразу создай Playwright тест который:
1. Открывает страницу /register
2. Заполняет форму валидными данными
3. Проверяет успешную отправку
4. Проверяет редирект на /dashboard
5. Проверяет наличие welcome message
6. Проверяет invalid cases (короткий пароль, несовпадение паролей)
Запусти тест через MCP и покажи результат.Claude сгенерирует код формы И тест. Через MCP он запустит тест в реальном браузере. Вы получите не только код, но и гарантию, что он работает.
Используйте MCP Chat Studio v2 для отладки сложных MCP взаимодействий. Особенно полезно при работе с несколькими серверами одновременно.
Конвейер данных: от прототипа к продакшену
Вот конкретный кейс. Нужно обрабатывать CSV файлы с данными пользователей, валидировать, чистить, загружать в БД.
Плохой подход: попросить Claude "напиши скрипт для обработки CSV". Получите generic решение.
Хороший подход:
Задача: Конвейер обработки user_data.csv для загрузки в PostgreSQL.
Этапы:
1. Чтение CSV (используем pandas для скорости)
2. Валидация:
- Email: формат, уникальность в БД
- Phone: формат +7 XXX XXX-XX-XX
- Age: 18-100
- Country: должна быть в справочнике countries
3. Очистка:
- Приведение phone к единому формату
- Заполнение missing country по phone code
- Удаление дубликатов по email
4. Загрузка в БД batch по 1000 записей
5. Логирование статистики (processed, valid, invalid, errors)
6. Отправка уведомления в Slack при ошибках
Технические требования:
- Используй нашу БД PostgreSQL (таблица users)
- Конфигурация через .env файл
- Логи в JSON формате для ELK
- Retry логика при network errors
- Memory efficient (файлы до 1GB)
Создай:
1. Основной скрипт pipeline.py
2. Конфиг config/pipeline_config.py
3. Dockerfile с Python 3.11
4. docker-compose.yml с PostgreSQL и тестовыми данными
5. Набор тестов с pytest
6. Makefile с командами run, test, deployClaude сгенерирует не просто скрипт, а готовый микросервис. С Docker, тестами, конфигами. Потому что он видит через MCP структуру вашего проекта, знает про вашу БД, понимает требования к продакшену.
Хуки безопасности: автоматический аудит кода
Самое опасное в AI-генерации кода - безопасность. Claude не знает про ваши внутренние политики, про compliance требования, про уязвимости в конкретных версиях библиотек.
Решение: хуки, которые проверяют сгенерированный код перед коммитом.
#!/usr/bin/env python3
# pre-commit-hook.py
import subprocess
import sys
import json
from pathlib import Path
# Проверяем, был ли файл сгенерирован Claude Code
def is_claude_generated(filepath):
content = Path(filepath).read_text()
# Claude часто добавляет комментарии с метаданными
return "Generated by Claude" in content or "AI-assisted" in content
def check_security_issues(content):
issues = []
# Проверка hardcoded секретов
if "password =" in content and "env" not in content:
issues.append("Hardcoded password")
# Проверка SQL injection
if "f'SELECT" in content or ".format(SELECT" in content:
issues.append("Potential SQL injection")
# Проверка eval()
if "eval(" in content:
issues.append("Dangerous eval() usage")
return issues
# Основная логика
changed_files = sys.argv[1:]
for file in changed_files:
if is_claude_generated(file):
print(f"\n🔍 Checking AI-generated file: {file}")
content = Path(file).read_text()
issues = check_security_issues(content)
if issues:
print(f"❌ Security issues found in {file}:")
for issue in issues:
print(f" - {issue}")
print("\nPlease review manually before committing.")
sys.exit(1) # Блокируем коммит
else:
print(f"✅ {file} passed security checks")
sys.exit(0)Настройте этот хук в .git/hooks/pre-commit. Теперь любой код, сгенерированный Claude, автоматически проверяется на типичные уязвимости.
От локального к продакшену: полный пайплайн
Вот как выглядит полный цикл от идеи до продакшена с Claude Code:
| Этап | Инструменты | Что делает Claude |
|---|---|---|
| Прототип | Claude Code + MCP (filesystem) | Генерирует код с учетом структуры проекта |
| Тестирование | MCP (Playwright) + локальная БД | Создает и запускает тесты, исправляет баги |
| Интеграция | MCP (PostgreSQL) + существующие сервисы | Адаптирует код под реальную инфраструктуру |
| Безопасность | Git hooks + security scanners | Проверяет на уязвимости, предлагает фиксы |
| Деплой | Docker + CI/CD конфиги | Генерирует deployment артефакты |
| Мониторинг | MCP (logs, metrics) | Создает дашборды, алерты, логирование |
Когда всё ломается: отладка MCP соединений
MCP серверы падают. Конфиги устаревают. Порт занят. Вот чеклист:
- Проверьте, что сервер запущен:
ps aux | grep mcp - Проверьте логи Claude Desktop:
~/Library/Logs/Claude/ - Запустите сервер вручную:
npx @modelcontextprotocol/server-postgres - Используйте MCP Doctor для автоматической диагностики
- Проверьте версии: некоторые серверы несовместимы между версиями
Если Claude не видит MCP инструменты, перезапустите Claude Desktop полностью. Иногда помогает удалить ~/.config/claude/claude_desktop_config.json и начать заново.
TL;DR для нетерпеливых
- Claude Code без MCP = 20% потенциала. С MCP = 100%.
- Начните с трех MCP серверов: PostgreSQL, filesystem, Playwright
- Пишите промпты с контекстом: архитектура, БД, лимиты, бизнес-правила
- Автоматизируйте тестирование через MCP - не доверяйте слепо сгенерированному коду
- Добавьте security hooks для проверки AI-генерированного кода
- Используйте Claude Code 2.0 для сложных архитектурных задач
- При высокой нагрузке на Claude переходите на локальные модели с MCP
Самый важный совет: не используйте Claude Code для замены мышления. Используйте его для усиления. Вы проектируете, он кодирует. Вы ставите задачи, он тестирует. Вы думаете о масштабировании, он генерирует Dockerfile и helm charts.
И последнее: сохраняйте промпты. Каждый удачный промпт - это шаблон для будущих задач. Через месяц у вас будет библиотека из 50 промптов, которые решают 80% ваших рабочих задач. Это и есть настоящая автоматизация.