cwprep-mcp
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 cwprepRelated 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 |
| Conectar a MySQL/PostgreSQL/SQL Server |
Conexión de archivo |
| Conectar a archivos Excel (.xlsx/.xls) o CSV |
Entrada SQL |
| Entrada de consulta SQL personalizada |
Entrada de tabla |
| Conexión directa a tabla |
Entrada Excel |
| Leer desde hoja de cálculo Excel |
Entrada CSV |
| Leer desde archivo CSV |
Unión de CSV |
| Combinar múltiples archivos CSV |
Unión (Join) |
| Uniones left/right/inner/full (una o varias columnas) |
Unión (Union) |
| Combinar múltiples tablas |
Filtro |
| Filtro basado en expresiones |
Filtro de valor |
| Mantener/excluir por valores |
Mantener solo |
| Seleccionar columnas |
Eliminar columnas |
| Eliminar columnas |
Renombrar |
| Renombrar columnas |
Cálculo |
| Campos de fórmula de Tableau |
Cálculo rápido |
| Limpieza rápida (minúsculas/mayúsculas/recortar/eliminar) |
Cambiar tipo |
| Cambiar tipos de datos de columna |
Duplicar columna |
| Duplicar (copiar) una columna |
Agregación |
| GROUP BY con SUM/AVG/COUNT |
Pivotar |
| Filas a columnas |
Despivotar |
| Columnas a filas |
Salida |
| Publicar en Tableau Server |
Empaquetado TFLX |
| Generar .tflx con archivos de datos incrustados |
Traducción SQL |
| Traducir flujos TFL a SQL ANSI equivalente |
Ejemplos
Consulta el directorio examples/ para ver demostraciones completas:
demo_basic.py- Entrada, Unión, Salidademo_cleaning.py- Filtro, Cálculo, Renombrardemo_field_operations.py- Cálculo rápido, Cambiar tipo, Duplicar columnademo_aggregation.py- Unión, Agregación, Pivotardemo_comprehensive.py- Todas las características combinadasprompts.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 |
| Instalar uv — descarga automáticamente |
| Python ≥ 3.8 + |
Inicio rápido
# Local (stdio)
cwprep-mcp
# Remote (Streamable HTTP)
cwprep-mcp --transport streamable-http --port 8000[!TIP] ¿Actualizando? Si utilizaste
uvxanteriormente 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.jsonmacOS:
~/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-mcpEdita ~/.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-mcpInicia el servidor:
cwprep-mcp --transport streamable-http --port 8000Luego configura tu cliente con el endpoint: http://your-server-ip:8000/mcp
Capacidades MCP disponibles
Tipo | Nombre | Descripción |
🔧 Herramienta |
| Generar archivo .tfl/.tflx a partir de la definición del flujo |
🔧 Herramienta |
| Traducir la definición del flujo o archivo .tfl a SQL ANSI |
🔧 Herramienta |
| Listar todos los tipos de nodos soportados |
🔧 Herramienta |
| Validar la definición del flujo antes de generar |
📖 Recurso |
| Referencia de la API del SDK |
📖 Recurso |
| Sintaxis de cálculo de Tableau Prep |
📖 Recurso |
| Errores comunes y reglas de diseño de flujo |
💬 Prompt |
| Asistente interactivo de diseño de flujo |
💬 Prompt |
| 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 testsConfiguració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: DefaultRegistro de cambios
Consulta changelog.md para ver el historial de versiones.
Licencia
Licencia 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