Skip to main content
Glama

cwprep - Motor de Texto a PrepFlow

cwprep es un motor basado en Python que permite la generación de Texto a PrepFlow.

Al realizar ingeniería inversa de la estructura JSON de .tfl y proporcionar un servidor MCP (Model Context Protocol) integrado, cwprep actúa como un puente entre los LLM (como Claude, Gemini) y Tableau Prep. ¡Ahora puedes generar, modificar y construir flujos de limpieza de datos simplemente a través de conversaciones en lenguaje natural o scripts de Python, sin abrir nunca la interfaz gráfica!

Autor: Cooper Wenhua imgwho@gmail.com

Instalación

pip install cwprep

Related MCP server: cwtwb

Inicio rápido

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)

De forma predeterminada, tanto el SDK como el MCP solo generan el archivo .tfl/.tflx final. Utiliza save_to_folder() solo cuando desees explícitamente la carpeta descomprimida para su inspección.

Características

Característica

Método

Descripción

Conexión a base de datos

add_connection()

Conectar a MySQL/PostgreSQL/SQL Server

Conexión de archivo

add_file_connection()

Conectar a archivos Excel (.xlsx/.xls) o CSV

Entrada SQL

add_input_sql()

Entrada de consulta SQL personalizada

Entrada de tabla

add_input_table()

Conexión directa a tabla

Entrada Excel

add_input_excel()

Leer desde hoja de cálculo Excel

Entrada CSV

add_input_csv()

Leer desde archivo CSV

Unión de CSV

add_input_csv_union()

Combinar múltiples archivos CSV

Unión (Join)

add_join()

Uniones left/right/inner/full (una o varias columnas)

Unión (Union)

add_union()

Combinar múltiples tablas

Filtro

add_filter()

Filtro basado en expresiones

Filtro de valor

add_value_filter()

Mantener/excluir por valores

Mantener solo

add_keep_only()

Seleccionar columnas

Eliminar columnas

add_remove_columns()

Eliminar columnas

Renombrar

add_rename()

Renombrar columnas

Cálculo

add_calculation()

Campos de fórmula de Tableau

Cálculo rápido

add_quick_calc()

Limpieza rápida (minúsculas/mayúsculas/recortar/eliminar)

Cambiar tipo

add_change_type()

Cambiar tipos de datos de columna

Duplicar columna

add_duplicate_column()

Duplicar (copiar) una columna

Agregación

add_aggregate()

GROUP BY con SUM/AVG/COUNT

Pivotar

add_pivot()

Filas a columnas

Despivotar

add_unpivot()

Columnas a filas

Salida

add_output_server()

Publicar en Tableau Server

Empaquetado TFLX

build(is_packaged=True)

Generar .tflx con archivos de datos incrustados

Traducción SQL

SQLTranslator

Traducir flujos TFL a SQL ANSI equivalente

Ejemplos

Consulta el directorio examples/ para ver demostraciones completas:

  • demo_basic.py - Entrada, Unión, Salida

  • demo_cleaning.py - Filtro, Cálculo, Renombrar

  • demo_field_operations.py - Cálculo rápido, Cambiar tipo, Duplicar columna

  • demo_aggregation.py - Unión, Agregación, Pivotar

  • demo_comprehensive.py - Todas las características combinadas

  • prompts.md - 8 plantillas de prompts MCP listas para usar para la generación de flujos impulsada por IA

Servidor MCP

cwprep incluye un servidor Model Context Protocol integrado, que permite a los clientes de IA (Claude Desktop, Cursor, Gemini CLI, etc.) generar archivos TFL directamente.

Requisitos previos

Método

Requisito

uvx (recomendado)

Instalar uv — descarga automáticamente cwprep en un entorno aislado

pip install

Python ≥ 3.8 + pip install cwprep

Inicio rápido

# Local (stdio)
cwprep-mcp

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

[!TIP] ¿Actualizando? Si utilizaste uvx anteriormente con una versión antigua, limpia la caché para obtener la última versión:

uv cache clean cwprep

Configuración del cliente

Todos los clientes a continuación utilizan el método uvx (recomendado). Reemplaza uvx con cwprep-mcp si prefieres una instalación local con pip.

Edita el archivo de configuración:

  • 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"]
    }
  }
}

Configuración → MCP → Añadir nuevo servidor MCP, o edita ~/.cursor/mcp.json:

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

Crea .vscode/mcp.json en la raíz del proyecto:

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

Edita ~/.codeium/windsurf/mcp_config.json:

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

Edita ~/.gemini/settings.json:

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

Edita ~/.continue/config.yaml:

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

Inicia el servidor:

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

Luego configura tu cliente con el endpoint: http://your-server-ip:8000/mcp

Capacidades MCP disponibles

Tipo

Nombre

Descripción

🔧 Herramienta

generate_tfl

Generar archivo .tfl/.tflx a partir de la definición del flujo

🔧 Herramienta

translate_to_sql

Traducir la definición del flujo o archivo .tfl a SQL ANSI

🔧 Herramienta

list_supported_operations

Listar todos los tipos de nodos soportados

🔧 Herramienta

validate_flow_definition

Validar la definición del flujo antes de generar

📖 Recurso

cwprep://docs/api-reference

Referencia de la API del SDK

📖 Recurso

cwprep://docs/calculation-syntax

Sintaxis de cálculo de Tableau Prep

📖 Recurso

cwprep://docs/best-practices

Errores comunes y reglas de diseño de flujo

💬 Prompt

design_data_flow

Asistente interactivo de diseño de flujo

💬 Prompt

explain_tfl_structure

Explicación de la estructura del archivo TFL

Soporte de habilidades de IA

Este proyecto incluye una habilidad de IA especializada para asistentes como Claude o Gemini para ayudarte a construir flujos.

  • Ubicación: .agents/skills/tfl-generator/

  • Características: Índice del servidor MCP con guía de uso del SDK de respaldo. Las referencias detalladas de API y sintaxis se sirven a través de recursos MCP desde src/cwprep/references/.

Estructura del directorio

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

Configuración

Crea config.yaml para la configuración predeterminada:

# 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

Registro de cambios

Consulta changelog.md para ver el historial de versiones.

Licencia

Licencia AGPL-3.0

Related MCP Connectors

Related MCP Servers