Разработка MCP-сервера для сбора данных через парсинг-сервисы
Ключевая задача
Создать сервер на Python, который по протоколу MCP будет предоставлять AI-агенту структурированную информацию о товарах с веб-страниц. Основная особенность - использование внешних сервисов для обхода антипарсинговых защит.
Технический стек
- Python 3.11+
- FastMCP для реализации протокола
- Pydantic для валидации данных
- HTTPX для работы с API
- Docker для контейнеризации
Функциональные требования
Инструмент get_competitor_data
- Принимает URL страницы и список полей
- Отправляет запрос к внешнему API парсинга (например, Firecrawl, ScrapingBee)
- Преобразует полученный контент в структурированный JSON
- Прямой парсинг HTML на стороне сервера не допускается
Обработка и валидация данных
- Извлекаемые поля:
- Наименование товара
- Чистота состава (значение и единица измерения)
- Информация об упаковке (тип и вес)
- Наличие товара
- Цена
- Валидация через Pydantic-модели
Формат ответа
{
"status": "success/error",
"data": {
"name": "Название товара",
"purity": {"value": 99.5, "unit": "%"},
"packaging": {"type": "bag", "weight": 25.0},
"availability": true,
"url": "ссылка"
},
"metrics": {"duration": 0.0, "cost": 0.0}
}
Обработка ошибок
- Блокировки доступа (403)
- Исчерпание лимитов запросов (429)
- Проблемы авторизации в API
Нефункциональные требования
- Модульность: Архитектура должна позволять легко заменять провайдера API парсинга (изменение одного класса)
- Безопасность: API-ключи хранятся исключительно в переменных окружения (.env файл)
- Контейнеризация: Предоставить Dockerfile для запуска в изолированном окружении
- Логирование: Запись всех входящих запросов, их длительности и результатов обработки
Результаты работы
- Исходный код сервера
- Файл .env.example с шаблоном переменных окружения
- Dockerfile для сборки контейнера
- Инструкция по подключению и настройке