
pyspark-mcp
AnnasMazharMIT
Сервер переносит SQL-запросы в PySpark и автоматизирует работу с AWS Glue. Разработчики данных применяют его при миграции на Spark, создании ETL-пайплайнов и рефакторинге кода.
В основе сервера — библиотека SQLGlot. Она распознаёт диалект исходного запроса и конвертирует его в Spark SQL или DataFrame API. Если точное преобразование невозможно, сервер выдаёт эквивалент на Spark SQL и рекомендации по доработке.
Установка
uvx pyspark-toolsХарактеристики
Общее
- СтатусСообщество
- РазработчикAnnasMazhar
- ЛицензияMIT
Технологии
- ЯзыкиPython
- Транспортstdio
Описание
Возможности
- Конвертирует SQL в PySpark DataFrame API с автоматическим определением исходного диалекта
- Переносит код между PostgreSQL, Oracle, Redshift, MySQL, Snowflake и Spark SQL
- Создаёт готовые скрипты для AWS Glue с настройками S3 и Data Catalog
- Преобразует DataFrame в DynamicFrame и обратно для Glue ETL
- Генерирует описания таблиц для AWS Glue Data Catalog
- Строит задания для инкрементальной загрузки (CDC)
- Анализирует S3-корзины и советует схему партиционирования
- Проверяет PySpark-код на узкие места, дублирование и неоптимальные операции
- Рекомендует broadcast или shuffle join для конкретных данных
- Конвертирует сотни SQL-файлов одной командой через пакетную обработку
Как подключить
1. Установите сервер
Самый простой способ — запустить сервер через uvx: uvx pyspark-tools.
Также можно установить из репозитория: склонируйте проект и выполните pip install -e ., после чего запустите командой pyspark-mcp.
2. Настройте клиент
Для Claude Desktop добавьте в конфигурационный файл:
{ "mcpServers": { "pyspark": { "command": "uvx", "args": ["pyspark-tools"] } } }Для Hermes Agent пропишите аналогичный блок в ~/.hermes/config.yaml.
3. Перезапустите клиент
После сохранения конфигурации закройте и откройте клиент заново. Инструменты сервера появятся в списке доступных.
Примеры запросов
- «Сконвертируй этот SQL-запрос с оконными функциями и MERGE из Oracle в PySpark DataFrame API. Если полная конвертация невозможна, дай эквивалент на Spark SQL с пояснениями.»
- «Проанализируй PySpark-код из файла etl.py. Найди узкие места и операции, которые можно оптимизировать с помощью broadcast join.»
- «Создай шаблон AWS Glue job для чтения CSV-файлов из S3, очистки данных и записи в Parquet в Data Catalog.»
- «У меня сто SQL-файлов для Redshift. Запусти пакетную конвертацию в Spark SQL и сохрани результаты в папку /output.»
- «Как лучше партиционировать таблицу размером 1 ТБ по дате? Посоветуй количество партиций и формат хранения.»
Технические детали
- Язык: Python (3.11+)
- Транспорт: stdio
- Лицензия: MIT
- Совместимые клиенты: Claude Desktop, Hermes Agent, любой MCP-клиент с поддержкой stdio
- Ключевая зависимость: SQLGlot (для разбора и транспиляции SQL)