mcpField
C
Cwprep

Cwprep

本地服务
github.com/imgwho数据与分析515 周前更新

关于 Cwprep

cwprep 是用于生成和验证 Tableau Prep 流程的 Python 工具包及 MCP 服务,面向数据工程和 Agent 工作流。它通过声明式流程定义生成打包文件,并支持 SQL 转换。

主要功能

  1. 01生成 .tfl 和 .tflx 流程
  2. 02验证流程定义
  3. 03将流程转换为 ANSI SQL CTE
  4. 04基于数据输入和 Prep 操作构建流程
  5. 05打包并嵌入数据文件
  6. 06查看支持的操作和指南

适用场景

  1. 01根据规范生成 Tableau Prep 流程
  2. 02写入归档文件前验证流程
  3. 03将流程逻辑转换为 SQL 以辅助迁移评估

MCP 相关

MCP 服务提供流程验证、生成和 SQL 转换工具,并附带 Tableau Prep 指南资源。MCP 客户端可借此构建可检查、可重复的流程。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cwprep": {
"command": "uvx",
"args": [
"cwprep"
]
}
}
}
启动命令uvx cwprep

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypicwprep

工具

4

收录的工具列表 · 更新于 2 周前

参数类型必填说明
nodesarray是
flow_namestring是
connectionobject是
data_filesany否
output_pathstring是

详细介绍

cwprep

Datacooper 标志

Tableau Prep 流程工程,用于以可复现的方式生成和验证 .tfl / .tflx,以及将其转换为 SQL。

cwprep 主图

cwprep 是一款 Python 工具包和模型上下文协议(MCP)服务,可通过代码或 Agent 工具调用来构建 Tableau Prep 流程。

它旨在充当 PrepFlow 工程层,而非通用对话式分析 Agent。其重点是在本地工作流、脚本和 AI 客户端中实现可复现、可检查和安全的自动化。

cwprep 中的 cw 源自 Cooper Wenhua。

作者: Cooper Wenhua <[email protected]>

网站 · 源码 · 更新日志

PyPI 下载量 网站 源码 许可证 Python

Star 历史图表

试用示例工作流 · 阅读指南

快速开始

安装
pip install cwprep
作为 MCP 服务运行
uvx cwprep

上面的简写仍是最简单的 MCP 客户端选项,也是本仓库中展示的默认配置。用户在交互式终端中直接运行 cwprep 时,它会打印 CLI 帮助信息,而不会启动 stdio MCP。

使用相同的命令将服务添加到 MCP 客户端。例如:

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

对于 Claude Code:

claude mcp add cwprep -- uvx cwprep

对于 VSCode,将 cwprep 添加到工作区或用户的 mcp.json,并将 uvx cwprep 用作命令。

如果你更喜欢显式指定脚本名称,也可以使用以下等效的启动方式:

cwprep mcp
uvx --from cwprep cwprep-mcp
cwprep-mcp
python -m cwprep.mcp_server

有关特定客户端的详细信息和完整参考,请参阅 https://github.com/aidatacooper/cwprep/blob/main/docs/guide.md。

使用 CLI
cwprep --help
cwprep doctor
cwprep status
cwprep capabilities
cwprep validate examples/basic_flow.yaml
cwprep run examples/basic_flow.yaml --out demo_output/cli_basic_flow.tfl
cwprep translate examples/basic_flow.yaml --out demo_output/cli_basic_flow.sql

cwprep run 使用与 MCP 工具相同的声明式流程结构,因此无需转换即可在本地终端、CI 作业和 Agent 之间迁移规范。

亮点

领域功能
流程编写通过 Python 或声明式 MCP 定义生成 Tableau Prep .tfl / .tflx 流程
数据输入连接 MySQL、PostgreSQL、SQL Server、Alibaba AnalyticDB for MySQL、CSV、Excel、自定义 SQL 和表输入
Prep 操作构建联接、联合、筛选、值筛选、保留/移除列、重命名、计算、快速清理步骤、类型更改、聚合、透视和逆透视
打包保存最终的 .tfl 存档或内嵌数据文件的打包 .tflx 文件
SQL 转换将生成的或现有的 .tfl 流程转换为易读的 ANSI SQL CTE
CLI 工作流在终端或 CI 中验证规范、生成流程、检查功能并转换 SQL
MCP 支持通过 Claude、Cursor、VSCode、Gemini CLI、Continue 或其他 MCP 客户端驱动流程生成

实际演示

此 GIF 展示了设计并生成 Tableau Prep 流的 MCP 工具工作流。

cwprep 演示 GIF

架构

                            Interfaces
  +---------------------------------------------------------------+
  |  +--------------------------+  +---------------------------+  |
  |  |        MCP Server        |  |      Python Library       |  |
  |  |  generate_tfl            |  |  from cwprep import       |  |
  |  |  validate_flow_definition|  |  TFLBuilder, TFLPackager |  |
  |  |  translate_to_sql        |  |                           |  |
  |  |                          |  |  builder.add_...()       |  |
  |  |                          |  |  builder.build()         |  |
  |  |  (Claude / Cursor /      |  |  TFLPackager.save_tfl()  |  |
  |  |   VSCode / Gemini)       |  |                           |  |
  |  +------------+-------------+  +-------------+-------------+  |
  |               +-----------------------------+                 |
  +---------------------------------------------|-----------------+
                                                v
  +---------------------------------------------------------------+
  |                    Packaged References                        |
  |    api_reference.md  calculation_syntax.md  best_practices.md |
  |    served as cwprep://docs/... MCP resources                  |
  +----------------------------+----------------------------------+
                               v
  +---------------------------------------------------------------+
  |                         TFLBuilder                            |
  |       connections  inputs  joins  unions  cleaning            |
  |       calculations  aggregates  pivots  outputs               |
  +-------------+-------------------+-----------------------------+
                |                   |
                v                   v
  +--------------------------+  +-------------------------------+
  |       TFLPackager        |  |        SQLTranslator          |
  |  flow/display/meta JSON  |  |  .tfl or flow JSON -> SQL    |
  |  archive/tflx packaging  |  |  CTEs + step comments        |
  +------------+-------------+  +---------------+---------------+
               |                                |
               v                                v
       output.tfl / output.tflx          translated.sql
               |
               v
  +---------------------------------------------------------------+
  |                      Tableau Prep Builder                     |
  |          Open, inspect, run, publish, or continue editing      |
  +---------------------------------------------------------------+

Mermaid 视图:

flowchart TD
    subgraph Interfaces
        MCP["MCP Server<br/>generate_tfl<br/>validate_flow_definition<br/>translate_to_sql"]
        PY["Python Library<br/>TFLBuilder · TFLPackager<br/>SQLTranslator"]
    end

    subgraph References["Packaged References"]
        REFS["api_reference.md<br/>calculation_syntax.md<br/>best_practices.md<br/>served as cwprep://docs/..."]
    end

    subgraph Engine["Flow Engine"]
        BUILDER["TFLBuilder<br/>connections · inputs · joins · unions<br/>cleaning · calculations · pivots · outputs"]
    end

    subgraph Artifacts["Packaging & Translation"]
        PACKAGER["TFLPackager<br/>flow/display/meta JSON<br/>archive/tflx packaging"]
        SQL["SQLTranslator<br/>.tfl or flow JSON → SQL<br/>CTEs + step comments"]
    end

    subgraph Outputs
        TFL["output.tfl / output.tflx"]
        SQL_OUT["translated.sql"]
        PREP["Tableau Prep Builder<br/>open · inspect · run · publish"]
    end

    MCP --> BUILDER
    PY --> BUILDER
    REFS --> MCP
    REFS --> BUILDER
    REFS --> SQL
    BUILDER --> PACKAGER
    BUILDER --> SQL
    PACKAGER --> TFL
    SQL --> SQL_OUT
    TFL --> PREP

参考层与库打包在一起,因此 Agent 和脚本可以依据经过验证的 API 指南开始操作,解析 Tableau Prep 计算语法,并避免常见的流程设计问题,而无需依赖已检出的代码仓库。

Agent 架构

cwprep 专为使用工具的 Agent 设计,而不仅仅是直接调用 Python。MCP 服务为 Agent 提供精简的流程生成接口;资源文档则在生成前提供针对各阶段的 Tableau Prep 指南。

Human or agent prompt
        |
        v
MCP server instructions
        |
        v
Resource documents
api-reference -> calculation-syntax -> best-practices
        |
        v
Flow tools
validate_flow_definition -> generate_tfl / translate_to_sql
        |
        v
.tfl / .tflx artifact + optional SQL representation

提示词说明要构建什么。资源说明如何正确构建。工具让生成的流程可检查且可重复。

能力边界

cwprep 有意将其公共接口保持精简:

级别含义
Core用于常规 SDK 文档、示例和 MCP 工作流的稳定原语
Advanced受支持的组合形式,例如打包的 .tflx、文件联合、多列联接和 SQL 转换
Inspectable可使用展开的流程文件夹和内部 JSON 进行调试,但默认输出为最终存档

当 Agent 需要确认某项请求的 Prep 操作是否属于稳定接口时,请使用 list_supported_operations。

设计决策

  • MCP 工作流以定义为先:设计流程、验证 JSON 合约,然后生成存档。
  • 资源文档是针对各阶段的操作指南,而非通用的提示词填充内容。
  • SDK 和 MCP 默认只输出最终的 .tfl / .tflx 存档。仅当你明确需要展开的文件夹以供检查时,才使用 save_to_folder()。
  • Tableau Prep 计算语法不是 SQL 语法。创建公式前,Agent 应先阅读 cwprep://docs/calculation-syntax。
  • SQL 转换用于提升可读性和辅助迁移,并非 Tableau Prep 执行的替代方案。
  • 文件替换采用防护措施:生成过程会先写入临时文件,再备份现有输出,然后进行替换。

验证

cwprep 提供四个级别的流程验证和审查:

级别描述要求
1. 定义验证生成文件前验证声明式 MCP 流程定义无
2. 存档生成安全性写入临时文件、备份现有输出,并生成最终 .tfl / .tflx 存档无
3. SQL 转换审查将受支持的流程逻辑转换为 ANSI SQL CTE,以供检查和制定迁移计划无
4. Tableau Prep 可打开性在 Tableau Prep Builder 中打开生成的存档,以进行最终产品验证Tableau Prep Builder
from cwprep import TFLBuilder, TFLPackager

builder = TFLBuilder(flow_name="Customer Orders")
# ... add connections, inputs, transforms, and outputs ...
flow, display, meta = builder.build()
TFLPackager.save_tfl("./customer_orders.tfl", flow, display, meta)
# MCP tools
validate_flow_definition(flow_definition={...})
generate_tfl(flow_definition={...}, output_path="customer_orders.tfl")
translate_to_sql(tfl_path="customer_orders.tfl")

常见问题

.tfl 和 .tflx 有什么区别?

.tfl 是 Tableau Prep 流存档。.tflx 是打包版本,可包含流程使用的本地数据文件。

cwprep 会打开或运行 Tableau Prep Builder 吗?

不会。cwprep 会生成可由 Tableau Prep Builder 打开的文件,但不会自动操作 Tableau Prep 桌面 GUI。

validate_flow_definition 会保存文件吗?

不会。validate_flow_definition 会在生成前检查请求的流程定义。generate_tfl 是用于写入最终 .tfl 或 .tflx 存档的 MCP 工具。

cwprep 可以将流程转换为 SQL 吗?

可以。SQLTranslator 和 MCP 工具 translate_to_sql 可以将受支持的 .tfl 流程逻辑转换为 ANSI SQL 风格的 CTE。

什么时候应该使用 uvx cwprep,什么时候应该使用 python -m cwprep.mcp_server?

常规 MCP 工作流请使用 uvx cwprep。如需在本地明确测试 MCP,而不依赖智能入口点检测,请使用 cwprep mcp 或 python -m cwprep.mcp_server。

为保持向后兼容,uvx --from cwprep cwprep-mcp 和 cwprep-mcp 仍可使用。

完整指南在哪里?

请参阅在线指南。

文档

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。