Отладка с помощью ИИ через MCP-сервер
Отладка — это по сути процесс понимания того, что сделало ваше приложение и почему. Вы собираете данные — логи, запросы, трассировки, исключения — а затем анализируете их для поиска первопричины. Что если ИИ-ассистент мог бы выполнить этот анализ за вас, имея полный доступ к тем же отладочным данным, которые вы видите в панели?
MCP-сервер ADP делает это возможным. Он предоставляет отладочные данные ИИ-ассистентам через Model Context Protocol, позволяя им запрашивать, анализировать и рассуждать о поведении вашего приложения во время выполнения.
Что такое MCP?
Model Context Protocol (MCP) — это открытый стандарт для подключения ИИ-ассистентов к внешним источникам данных и инструментам. Вместо копирования отладочного вывода в окно чата, MCP позволяет ИИ-ассистенту подключиться напрямую к ADP и извлечь нужные данные.
MCP определяет три основных концепции:
- Tools (инструменты) — Функции, которые ИИ может вызывать (например, «список последних отладочных записей», «детали исключения»)
- Resources (ресурсы) — Данные, которые ИИ может читать (например, «полные данные коллектора для записи X»)
- Prompts (промпты) — Предопределённые шаблоны для типичных задач анализа
ADP реализует все три, предоставляя ИИ-ассистентам глубокий доступ к отладочным данным.
Как это работает
MCP-сервер ADP поддерживает два режима транспорта:
Транспорт Stdio
Stdio-транспорт запускается как подпроцесс ИИ-ассистента. Ассистент запускает MCP-сервер, отправляет JSON-RPC сообщения через stdin и читает ответы из stdout. Это самая простая настройка — никакой сетевой конфигурации не требуется.
# ИИ-ассистент запускает этот процесс
php vendor/bin/adp mcp:serve --transport=stdioЭтот режим работает с ИИ-инструментами вроде Claude Code, поддерживающими локальные MCP-серверы. Вы добавляете ADP в конфигурацию MCP, и ассистент может сразу начать запрашивать отладочные данные.
Транспорт HTTP
HTTP-транспорт работает как автономный сервер, принимающий MCP-запросы по HTTP. Это полезно, когда ИИ-ассистент работает удалённо или когда вы хотите, чтобы несколько ассистентов имели доступ к одним и тем же отладочным данным.
php vendor/bin/adp mcp:serve --transport=http --port=8050HTTP-транспорт использует стандартный протокол MCP Streamable HTTP, что обеспечивает совместимость с любым MCP-клиентом.
Доступные инструменты
ADP предоставляет богатый набор инструментов, которые ИИ-ассистенты могут использовать для исследования отладочных данных:
Просмотр и фильтрация
list_debug_entries— Возвращает последние отладочные записи с метаданными (URL, метод, статус, временная метка). Поддерживает фильтрацию по временному диапазону, коду статуса и приложению.search_entries— Полнотекстовый поиск по всем собранным данным. Находит записи, содержащие конкретные сообщения об ошибках, SQL-запросы или паттерны логов.
Глубокая инспекция
get_entry_detail— Возвращает полные данные коллекторов для конкретной отладочной записи, включая все логи, запросы, события и детали HTTP.get_exceptions— Извлекает данные об исключениях со стеками вызовов, сгруппированные по типу и частоте.get_slow_queries— Выводит запросы к базе данных, превышающие настраиваемый порог, с SQL, привязками и временем выполнения.
Анализ
compare_entries— Сравнивает две отладочные записи бок о бок, выделяя различия в тайминге, запросах и логах. Полезно для отладки регрессий.get_timeline— Возвращает хронологическое представление всех событий в рамках запроса, показывая поток выполнения через middleware, сервисы и вызовы БД.
Использование на практике
Вот как выглядит работа с MCP-интеграцией ADP на практике.
Сценарий: Отладка медленного эндпоинта
Вы замечаете, что /api/orders отвечает 3 секунды. Вместо ручного поиска по панели отладки вы спрашиваете ИИ-ассистента:
«Эндпоинт /api/orders работает медленно. Посмотри последние отладочные записи и скажи, в чём причина.»
Ассистент вызывает list_debug_entries с фильтром по URL, находит медленные записи, вызывает get_entry_detail для самой проблемной и анализирует данные. Он может ответить:
«Эндпоинт /api/orders выполнил 47 запросов к базе данных в последнем запросе с паттерном N+1 на связи OrderItem. Метод
findAllWithItemsвыполняет по одному запросу на каждый заказ вместо жадной загрузки. Общее время запросов составило 2.8 секунды из 3.1 секунды времени ответа.»
Сценарий: Повторяющиеся исключения
Вы получаете периодические ошибки 500 в продакшене. Вы спрашиваете:
«Покажи исключения за последний час и определи закономерности.»
Ассистент вызывает get_exceptions, группирует их по типу и сообщению и отвечает:
«За последний час произошло 12 исключений, все —
ConnectionTimeoutExceptionот Redis-клиента. Они кластеризуются около 14:32 и 14:47, что указывает на периодические проблемы с подключением к Redis, а не на ошибку в коде. Затронутые эндпоинты — /api/sessions и /api/cart, оба используют сессионный кеш.»
Конфигурация
Для включения MCP-сервера дополнительные пакеты не нужны — он входит в основную установку ADP. Настройте его в параметрах ADP:
return [
'mcp' => [
'enabled' => true,
'transport' => 'stdio', // или 'http'
'tools' => [
'slow_query_threshold' => 100, // миллисекунды
'max_entries' => 50,
],
],
];Для Claude Code добавьте ADP в файл конфигурации MCP:
{
"mcpServers": {
"adp": {
"command": "php",
"args": ["vendor/bin/adp", "mcp:serve", "--transport=stdio"]
}
}
}Конфиденциальность и безопасность
Отладочные данные могут содержать конфиденциальную информацию — тела запросов, содержимое базы данных, токены аутентификации. MCP-сервер ADP соблюдает те же правила фильтрации данных, что и остальная часть панели. Чувствительные поля редактируются перед передачей через MCP-инструменты. Вы можете настроить дополнительные паттерны редактирования для вашего домена:
'mcp' => [
'redact' => [
'headers' => ['Authorization', 'Cookie', 'X-API-Key'],
'body_fields' => ['password', 'credit_card', 'ssn'],
],
],MCP-сервер предназначен только для сред разработки. Он никогда не должен быть доступен в продакшене.
Планы на будущее
Интеграция с MCP открывает возможности за пределами простого извлечения данных. Мы исследуем:
- Автоматический анализ первопричин — Предустановленные промпты, которые проводят ИИ через систематические рабочие процессы отладки
- Обнаружение регрессий производительности — Сравнение отладочных записей между деплоями для выявления замедлений
- Предложения по исправлению кода — Использование отладочных данных в сочетании с контекстом исходного кода для предложения целевых исправлений
Сочетание структурированных отладочных данных и ИИ-рассуждений — это мощный рабочий процесс отладки. MCP-сервер ADP объединяет их стандартным, интероперабельным способом.