Skip to main content
Glama

cwprep — движок Text-to-PrepFlow

cwprep — это Python-движок, который позволяет генерировать потоки данных с помощью технологии Text-to-PrepFlow.

Благодаря обратному проектированию структуры JSON файлов .tfl и встроенному серверу MCP (Model Context Protocol), cwprep выступает в роли моста между LLM (такими как Claude, Gemini) и Tableau Prep. Теперь вы можете создавать, изменять и строить потоки очистки данных просто с помощью общения на естественном языке или Python-скриптов, не открывая графический интерфейс!

Автор: Cooper Wenhua imgwho@gmail.com

Установка

pip install cwprep

Related MCP server: cwtwb

Быстрый старт

from cwprep import TFLBuilder, TFLPackager

# Create builder
builder = TFLBuilder(flow_name="My Flow")

# Add database connection
conn_id = builder.add_connection(
    host="localhost",
    username="root",
    dbname="mydb"
)

# Add input tables
orders = builder.add_input_table("orders", "orders", conn_id)
customers = builder.add_input_table("customers", "customers", conn_id)

# Join tables
joined = builder.add_join(
    name="Orders + Customers",
    left_id=orders,
    right_id=customers,
    left_col="customer_id",
    right_col="customer_id",
    join_type="left"
)

# Add output
builder.add_output_server("Output", joined, "My_Datasource")

# Build and save
flow, display, meta = builder.build()
TFLPackager.save_tfl("./my_flow.tfl", flow, display, meta)

По умолчанию как SDK, так и MCP выводят только итоговый архив .tfl/.tflx. Используйте save_to_folder(), только если вам явно нужна распакованная папка для проверки.

Функции

Функция

Метод

Описание

Подключение к БД

add_connection()

Подключение к MySQL/PostgreSQL/SQL Server

Подключение файла

add_file_connection()

Подключение к файлам Excel (.xlsx/.xls) или CSV

SQL-ввод

add_input_sql()

Ввод через пользовательский SQL-запрос

Ввод таблицы

add_input_table()

Прямое подключение к таблице

Ввод Excel

add_input_excel()

Чтение из листа Excel

Ввод CSV

add_input_csv()

Чтение из CSV-файла

Объединение CSV

add_input_csv_union()

Объединение нескольких CSV-файлов

Соединение (Join)

add_join()

Левое/правое/внутреннее/полное соединение (по одному или нескольким столбцам)

Объединение (Union)

add_union()

Объединение нескольких таблиц

Фильтр

add_filter()

Фильтр на основе выражений

Фильтр значений

add_value_filter()

Оставить/исключить по значениям

Оставить только

add_keep_only()

Выбор столбцов

Удаление столбцов

add_remove_columns()

Удаление столбцов

Переименование

add_rename()

Переименование столбцов

Вычисление

add_calculation()

Поля с формулами Tableau

Быстрый расчет

add_quick_calc()

Быстрая очистка (нижний/верхний регистр/обрезка/удаление)

Изменение типа

add_change_type()

Изменение типов данных столбцов

Дублирование столбца

add_duplicate_column()

Дублирование (копирование) столбца

Агрегация

add_aggregate()

GROUP BY с SUM/AVG/COUNT

Сводная таблица (Pivot)

add_pivot()

Строки в столбцы

Отмена сводной таблицы

add_unpivot()

Столбцы в строки

Вывод

add_output_server()

Публикация на Tableau Server

Упаковка TFLX

build(is_packaged=True)

Генерация .tflx со встроенными файлами данных

SQL-трансляция

SQLTranslator

Перевод потоков TFL в эквивалентный ANSI SQL

Примеры

Смотрите каталог examples/ для получения полных демо-версий:

  • demo_basic.py — Ввод, Соединение, Вывод

  • demo_cleaning.py — Фильтр, Вычисление, Переименование

  • demo_field_operations.py — Быстрый расчет, Изменение типа, Дублирование столбца

  • demo_aggregation.py — Объединение, Агрегация, Сводная таблица

  • demo_comprehensive.py — Все функции вместе

  • prompts.md — 8 готовых шаблонов промптов MCP для генерации потоков с помощью ИИ

MCP-сервер

cwprep включает встроенный сервер Model Context Protocol, позволяющий ИИ-клиентам (Claude Desktop, Cursor, Gemini CLI и др.) генерировать файлы TFL напрямую.

Предварительные требования

Метод

Требование

uvx (рекомендуется)

Установите uv — он автоматически загружает cwprep в изолированной среде

pip install

Python ≥ 3.8 + pip install cwprep

Быстрый старт

# Local (stdio)
cwprep-mcp

# Remote (Streamable HTTP)
cwprep-mcp --transport streamable-http --port 8000

[!TIP] Обновляетесь? Если вы ранее использовали uvx со старой версией, очистите кэш, чтобы получить последний релиз:

uv cache clean cwprep

Конфигурация клиента

Все клиенты ниже используют метод uvx (рекомендуется). Замените uvx на cwprep-mcp, если предпочитаете локальную установку через pip.

Отредактируйте файл конфигурации:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "cwprep": {
      "command": "uvx",
      "args": ["--from", "cwprep", "cwprep-mcp"]
    }
  }
}

Настройки → MCP → Добавить новый MCP-сервер или отредактируйте ~/.cursor/mcp.json:

{
  "mcpServers": {
    "cwprep": {
      "command": "uvx",
      "args": ["--from", "cwprep", "cwprep-mcp"]
    }
  }
}

Создайте .vscode/mcp.json в корне проекта:

{
  "servers": {
    "cwprep": {
      "command": "uvx",
      "args": ["--from", "cwprep", "cwprep-mcp"]
    }
  }
}

Отредактируйте ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "cwprep": {
      "command": "uvx",
      "args": ["--from", "cwprep", "cwprep-mcp"]
    }
  }
}
claude mcp add cwprep -- uvx --from "cwprep" cwprep-mcp

Отредактируйте ~/.gemini/settings.json:

{
  "mcpServers": {
    "cwprep": {
      "command": "uvx",
      "args": ["--from", "cwprep", "cwprep-mcp"]
    }
  }
}

Отредактируйте ~/.continue/config.yaml:

mcpServers:
  - name: cwprep
    command: uvx
    args:
      - --from
      - cwprep
      - cwprep-mcp

Запустите сервер:

cwprep-mcp --transport streamable-http --port 8000

Затем настройте свой клиент с конечной точкой: http://your-server-ip:8000/mcp

Доступные возможности MCP

Тип

Имя

Описание

🔧 Инструмент

generate_tfl

Генерация файла .tfl/.tflx из определения потока

🔧 Инструмент

translate_to_sql

Перевод определения потока или файла .tfl в ANSI SQL

🔧 Инструмент

list_supported_operations

Список всех поддерживаемых типов узлов

🔧 Инструмент

validate_flow_definition

Проверка определения потока перед генерацией

📖 Ресурс

cwprep://docs/api-reference

Справочник API SDK

📖 Ресурс

cwprep://docs/calculation-syntax

Синтаксис вычислений Tableau Prep

📖 Ресурс

cwprep://docs/best-practices

Распространенные ошибки и правила проектирования потоков

💬 Промпт

design_data_flow

Интерактивный помощник по проектированию потоков

💬 Промпт

explain_tfl_structure

Объяснение структуры файла TFL

Поддержка навыков ИИ

Этот проект включает специализированный навык ИИ для помощников, таких как Claude или Gemini, чтобы помочь вам создавать потоки.

  • Расположение: .agents/skills/tfl-generator/

  • Функции: Индекс MCP-сервера с руководством по использованию резервного SDK. Подробные справочники по API и синтаксису предоставляются через ресурсы MCP из src/cwprep/references/.

Структура каталогов

cwprep/
├── .agents/skills/      # AI Agent skills (MCP index)
├── src/cwprep/          # SDK source code
│   ├── builder.py       # TFLBuilder class
│   ├── packager.py      # TFLPackager class
│   ├── translator.py    # SQLTranslator class
│   ├── expression_translator.py  # ExpressionTranslator class
│   ├── config.py        # Configuration utilities
│   ├── mcp_server.py    # MCP Server (Tools, Resources, Prompts)
│   └── references/      # MCP Resource documents (.md)
├── examples/            # Demo scripts
├── docs/                # Documentation
└── tests/               # Unit tests

Конфигурация

Создайте config.yaml для настроек по умолчанию:

# MySQL (default)
database:
  host: localhost
  port: 3306
  dbname: mydb
  type: mysql

# SQL Server (Windows Authentication)
# database:
#   host: localhost
#   type: sqlserver
#   authentication: sspi
#   schema: dbo

# PostgreSQL
# database:
#   host: localhost
#   port: 5432
#   dbname: mydb
#   type: postgres

tableau_server:
  url: http://your-server
  default_project: Default

Журнал изменений

Смотрите changelog.md для истории версий.

Лицензия

Лицензия AGPL-3.0

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aidatacooper/cwprep'

If you have feedback or need assistance with the MCP directory API, please join our Discord server