cwprep-mcp
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 cwprepRelated 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(), только если вам явно нужна распакованная папка для проверки.
Функции
Функция | Метод | Описание |
Подключение к БД |
| Подключение к MySQL/PostgreSQL/SQL Server |
Подключение файла |
| Подключение к файлам Excel (.xlsx/.xls) или CSV |
SQL-ввод |
| Ввод через пользовательский SQL-запрос |
Ввод таблицы |
| Прямое подключение к таблице |
Ввод Excel |
| Чтение из листа Excel |
Ввод CSV |
| Чтение из CSV-файла |
Объединение CSV |
| Объединение нескольких CSV-файлов |
Соединение (Join) |
| Левое/правое/внутреннее/полное соединение (по одному или нескольким столбцам) |
Объединение (Union) |
| Объединение нескольких таблиц |
Фильтр |
| Фильтр на основе выражений |
Фильтр значений |
| Оставить/исключить по значениям |
Оставить только |
| Выбор столбцов |
Удаление столбцов |
| Удаление столбцов |
Переименование |
| Переименование столбцов |
Вычисление |
| Поля с формулами Tableau |
Быстрый расчет |
| Быстрая очистка (нижний/верхний регистр/обрезка/удаление) |
Изменение типа |
| Изменение типов данных столбцов |
Дублирование столбца |
| Дублирование (копирование) столбца |
Агрегация |
| GROUP BY с SUM/AVG/COUNT |
Сводная таблица (Pivot) |
| Строки в столбцы |
Отмена сводной таблицы |
| Столбцы в строки |
Вывод |
| Публикация на Tableau Server |
Упаковка TFLX |
| Генерация .tflx со встроенными файлами данных |
SQL-трансляция |
| Перевод потоков 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 напрямую.
Предварительные требования
Метод | Требование |
| Установите uv — он автоматически загружает |
| Python ≥ 3.8 + |
Быстрый старт
# 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.jsonmacOS:
~/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
Тип | Имя | Описание |
🔧 Инструмент |
| Генерация файла .tfl/.tflx из определения потока |
🔧 Инструмент |
| Перевод определения потока или файла .tfl в ANSI SQL |
🔧 Инструмент |
| Список всех поддерживаемых типов узлов |
🔧 Инструмент |
| Проверка определения потока перед генерацией |
📖 Ресурс |
| Справочник API SDK |
📖 Ресурс |
| Синтаксис вычислений Tableau Prep |
📖 Ресурс |
| Распространенные ошибки и правила проектирования потоков |
💬 Промпт |
| Интерактивный помощник по проектированию потоков |
💬 Промпт |
| Объяснение структуры файла 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
This server cannot be deployed
Maintenance
Related MCP Connectors
Generate Tableau .twb/.twbx workbooks: 47 tools for charts, dashboards, rules, CSV pipelines.
Automate production-ready PDF, Word, Excel and PowerPoint documents from templates and JSON data
Postgres + Kafka Stack Generator
Debug, build, and manage Power Automate cloud flows with AI agents
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables discovery, querying, and exporting of Tableau Cloud dashboards and data sources. Supports searching workbooks, filtering data, and exporting views as PDF, PNG, PowerPoint, CSV, or JSON.-
- AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to programmatically read, modify, and query Tableau workbook files (.twb and .twbx) on the local filesystem via 80 tools.9MIT
- AlicenseNot gradedqualityCmaintenanceA local MCP server that allows LLMs to inspect and safely edit Tableau Desktop workbooks (.twb) via XML, including creating native calculated fields using Tableau formula syntax.MIT