Skip to content

Отладка с помощью ИИ через MCP-сервер

aimcpdeep-dive

Отладка — это по сути процесс понимания того, что сделало ваше приложение и почему. Вы собираете данные — логи, запросы, трассировки, исключения — а затем анализируете их для поиска первопричины. Что если ИИ-ассистент мог бы выполнить этот анализ за вас, имея полный доступ к тем же отладочным данным, которые вы видите в панели?

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. Это самая простая настройка — никакой сетевой конфигурации не требуется.

bash
# ИИ-ассистент запускает этот процесс
php vendor/bin/adp mcp:serve --transport=stdio

Этот режим работает с ИИ-инструментами вроде Claude Code, поддерживающими локальные MCP-серверы. Вы добавляете ADP в конфигурацию MCP, и ассистент может сразу начать запрашивать отладочные данные.

Транспорт HTTP

HTTP-транспорт работает как автономный сервер, принимающий MCP-запросы по HTTP. Это полезно, когда ИИ-ассистент работает удалённо или когда вы хотите, чтобы несколько ассистентов имели доступ к одним и тем же отладочным данным.

bash
php vendor/bin/adp mcp:serve --transport=http --port=8050

HTTP-транспорт использует стандартный протокол 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:

php
return [
    'mcp' => [
        'enabled' => true,
        'transport' => 'stdio', // или 'http'
        'tools' => [
            'slow_query_threshold' => 100, // миллисекунды
            'max_entries' => 50,
        ],
    ],
];

Для Claude Code добавьте ADP в файл конфигурации MCP:

json
{
  "mcpServers": {
    "adp": {
      "command": "php",
      "args": ["vendor/bin/adp", "mcp:serve", "--transport=stdio"]
    }
  }
}

Конфиденциальность и безопасность

Отладочные данные могут содержать конфиденциальную информацию — тела запросов, содержимое базы данных, токены аутентификации. MCP-сервер ADP соблюдает те же правила фильтрации данных, что и остальная часть панели. Чувствительные поля редактируются перед передачей через MCP-инструменты. Вы можете настроить дополнительные паттерны редактирования для вашего домена:

php
'mcp' => [
    'redact' => [
        'headers' => ['Authorization', 'Cookie', 'X-API-Key'],
        'body_fields' => ['password', 'credit_card', 'ssn'],
    ],
],

MCP-сервер предназначен только для сред разработки. Он никогда не должен быть доступен в продакшене.

Планы на будущее

Интеграция с MCP открывает возможности за пределами простого извлечения данных. Мы исследуем:

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

Сочетание структурированных отладочных данных и ИИ-рассуждений — это мощный рабочий процесс отладки. MCP-сервер ADP объединяет их стандартным, интероперабельным способом.

Выпущено под лицензией MIT.