Skip to main content

Tableau Workbook (.twb) Generation MCP Server

Project description

cwtwb

Tableau Workbook (.twb) Generation MCP Server
Programmatically create Tableau workbooks with calculated fields, multiple chart types, and dashboard layouts.

Overview

cwtwb is a Model Context Protocol (MCP) server that generates Tableau Desktop workbook files (.twb) from AI-driven tool calls. It provides atomic operations for building visualizations step by step:

  1. Load a TWB template with data connections
  2. Add calculated fields
  3. Create worksheets with various chart types
  4. Assemble dashboards with flexible layouts
  5. Save valid .twb files that open directly in Tableau Desktop

Installation

pip install -e .

Requirements

  • Python ≥ 3.10
  • lxml ≥ 5.0
  • mcp ≥ 1.0

Quick Start

As MCP Server

Add to your MCP client configuration:

{
  "mcpServers": {
    "cwtwb": {
      "command": "cwtwb",
      "args": []
    }
  }
}

Or run directly:

cwtwb

As Python Library

from cwtwb.twb_editor import TWBEditor

editor = TWBEditor("templates/superstore.twb")
editor.clear_worksheets()

# Add a calculated field
editor.add_calculated_field("Profit Ratio", "SUM([Profit])/SUM([Sales])")

# Create a bar chart
editor.add_worksheet("Sales by Category")
editor.configure_chart(
    worksheet_name="Sales by Category",
    mark_type="Bar",
    rows=["Category"],
    columns=["SUM(Sales)"],
)

# Create a pie chart
editor.add_worksheet("Segment Pie")
editor.configure_chart(
    worksheet_name="Segment Pie",
    mark_type="Pie",
    color="Segment",
    wedge_size="SUM(Sales)",
)

# Build a dashboard
editor.add_dashboard(
    dashboard_name="Overview",
    worksheet_names=["Sales by Category", "Segment Pie"],
    layout="horizontal",
)

editor.save("output/my_workbook.twb")

MCP Tools

Tool Description
create_workbook Load a TWB template and initialize the workspace
list_fields List all available dimensions and measures
add_calculated_field Add a calculated field with Tableau formula
remove_calculated_field Remove a previously added calculated field
add_worksheet Add a new blank worksheet
configure_chart Configure chart type and field mappings
add_dashboard Create a dashboard combining worksheets
save_workbook Save the final TWB file

Supported Chart Types

  • Bar — horizontal/vertical bar charts
  • Line — line charts and trends
  • Pie — pie charts with color and wedge-size encodings
  • Area — area charts
  • Circle / Square — shape marks
  • Text — text tables
  • Automatic — Tableau's automatic mark type

Dashboard Layouts

Layout Description
vertical Stack worksheets top to bottom
horizontal Place worksheets side by side
grid-2x2 2×2 grid layout (up to 4 worksheets)

Custom layouts can be built programmatically using the TWBEditor API with direct zone manipulation (see tests/test_c2_replica.py for a complete example replicating a production dashboard layout).

Project Structure

cwtwb/
├── src/cwtwb/
│   ├── __init__.py          # Package init
│   ├── field_registry.py    # Field name ↔ TWB reference mapping
│   ├── twb_editor.py        # Core TWB XML editor (lxml)
│   └── server.py            # MCP server with FastMCP
├── tests/
│   ├── test_debug.py        # Step-by-step debug tests
│   ├── test_e2e.py          # End-to-end integration test
│   └── test_c2_replica.py   # Full dashboard layout replica
├── templates/
│   └── superstore.twb       # Base TWB template with data connection
├── docs/                    # Design documents
├── vizs/                    # Reference visualizations and sample data
├── layout/                  # Reference dashboard layouts
├── pyproject.toml           # Package configuration
└── README.md

Development

# Install in editable mode
pip install -e .

# Run tests
python tests/test_e2e.py
python tests/test_c2_replica.py

# Start MCP server
cwtwb

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cwtwb-0.1.1.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cwtwb-0.1.1-py3-none-any.whl (34.8 kB view details)

Uploaded Python 3

File details

Details for the file cwtwb-0.1.1.tar.gz.

File metadata

  • Download URL: cwtwb-0.1.1.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for cwtwb-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b8214d2e11987fa6e945eb552b5a09080cdec655d8185b9e5630b1f67b340a29
MD5 f24496155dbff5dd2cb259cda1c0f533
BLAKE2b-256 2b26a489cce7d261c48a5d1ecd0eb7458cacbedc5bfab6d31c2a5e6636fbed71

See more details on using hashes here.

File details

Details for the file cwtwb-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: cwtwb-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 34.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for cwtwb-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 09fd3b2f785ecd3a20ca1523eb334f4d109b5558c0214541d63cf6deb839f761
MD5 a3cdaa894cd2d09d3a4c76e867691616
BLAKE2b-256 117cdcf0ab73159bbc079de4b845886b335f50b780a2c127fa8b6458ce1b0c8e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page