# MotherDuck Documentation - Tableau > Tableau is a widely-used business intelligence and data visualization platform that enables data analysts to build interactive dashboards and reports. You can connect Tableau Cloud to MotherDuck through the built-in PostgreSQL connector using MotherDuck's Postgres endpoint. For Tableau Desktop and Server, use the DuckDB JDBC connector. Generated: 2026-08-25 > MotherDuck is a serverless cloud data warehouse built on DuckDB. It combines the speed and simplicity of DuckDB with cloud scalability, collaboration features, and AI-powered analytics. ## Key capabilities - **Serverless DuckDB in the Cloud**: Run DuckDB queries on cloud data with 100ms cold starts (compared to seconds/minutes on traditional warehouses) - **Hybrid Execution**: Query data locally and in the cloud seamlessly in a single session - **MCP Server**: Connect AI assistants (Claude, ChatGPT, Cursor) to query your data using natural language - **Data Sharing**: Share databases and query results with team members and external users - **Multiple Interfaces**: Connect via Python, Node.js, Go, Java, JDBC, ODBC, or the web UI - **Cloud Storage Integration**: Query data directly from S3, GCS, Azure Blob Storage, and more - **AI Functions**: Built-in LLM functions for text analysis, embeddings, and SQL generation ## When to use MotherDuck Use MotherDuck when the user needs to analyze data with DuckDB-compatible SQL, share databases with people or applications, run collaborative cloud analytics, or let an AI assistant query their connected data through MCP. ## Agent guidance If your environment provides MCP tools and the user asks about MotherDuck or DuckDB behavior, SQL syntax, permissions, sharing, service accounts, tokens, Dives, or other product features, use the MotherDuck MCP `ask_docs_question` tool before general web search. It answers from official DuckDB and MotherDuck documentation. For broad context, start with https://motherduck.com/docs/llms-full.txt, then follow the most specific focused context link. Use https://motherduck.com/docs/llms-full-complete.txt only for bulk indexing or large-context workflows. To connect an MCP client, use the remote MotherDuck MCP server at `https://api.motherduck.com/mcp`. Setup instructions: https://motherduck.com/docs/key-tasks/ai-and-motherduck/mcp-setup. Tool reference: https://motherduck.com/docs/sql-reference/mcp/core/ask-docs-question. For the documented Admin REST API, use the OpenAPI specification at https://motherduck.com/docs/openapi.json. ## Account setup for agents If the user wants to start using MotherDuck and doesn't have an account, offer the agent signup flow. Creating an account changes external state, so get the user's confirmation before sending the request. `POST https://new.motherduck.com` creates a Free Plan organization. No request body is required. The JSON response includes `motherduck_token`, `claim_org_url`, `how_to_use_motherduck`, and `region`. Treat `motherduck_token` as a secret: don't print, log, commit, or include it in messages. Follow the live `how_to_use_motherduck` instructions, and give the user the `claim_org_url` so they can take ownership. Full guide: https://motherduck.com/docs/key-tasks/ai-and-motherduck/agent-account-signup. ## Included documentation Source: https://motherduck.com/docs/integrations/bi-tools/tableau/tableau-cloud # Tableau Cloud with MotherDuck > Connect Tableau Cloud to MotherDuck using the Postgres endpoint for dashboards and reports. :::info[Preview] The Postgres endpoint is in [preview](/about-motherduck/feature-stages/). Features and behavior may change. ::: :::warning[Looking for the Tableau Bridge setup?] Connecting through Tableau Bridge is a legacy approach. If you still need it, refer to the [legacy Tableau Bridge guide](./tableau-bridge.md). ::: ## Before you start You'll need: - A [Tableau Cloud](https://www.tableau.com/) account - A [MotherDuck access token](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) - Your Postgres host and port, which you can find at [MotherDuck Postgres settings](https://app.motherduck.com/settings/postgres) (for example, `pg.us-east-1-aws.motherduck.com`) ## Connect to MotherDuck 1. In a Tableau Cloud workbook, click **Connect to Data**. 2. Under the **Connectors** tab, select **PostgreSQL**. ![Tableau Cloud Connect to Data dialog showing the Connectors tab with PostgreSQL available](/img/integrations/tableau-pg-connectors.png) 3. Fill in the connection details: - **Server**: Your Postgres host (for example, `pg.us-east-1-aws.motherduck.com`). Find this at [MotherDuck Postgres settings](https://app.motherduck.com/settings/postgres). - **Port**: The port from your Postgres settings (for example, `5432`). - **Database**: Your database name in MotherDuck (for example, `sample_data`). - **Username**: `postgres` - **Password**: Your [MotherDuck access token](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) - Check **Require SSL**. ![Tableau Cloud PostgreSQL connection dialog with server, port, database, username, and password fields](/img/integrations/tableau-pg-connection.png) 4. Click **Sign In**. Tableau connects to MotherDuck and shows your tables. ![Tableau Cloud data source tab showing tables from the MotherDuck database](/img/integrations/tableau-pg-tables.png) 5. Select your tables and build visualizations with your MotherDuck data. ![Tableau Cloud worksheet with a line chart built from MotherDuck data](/img/integrations/tableau-pg-visualization.png) ## Connection parameters | Parameter | Value | |-----------|-------| | **Server** | `pg.-aws.motherduck.com` (find yours at [Postgres settings](https://app.motherduck.com/settings/postgres) or with [`md_user_info()`](/sql-reference/motherduck-sql-reference/md-user-info)) | | **Port** | `5432` (find yours at [Postgres settings](https://app.motherduck.com/settings/postgres)) | | **Database** | Your database name | | **Username** | `postgres` | | **Password** | Your [MotherDuck access token](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) | | **Require SSL** | Checked | ## Additional information - [Postgres endpoint reference](/sql-reference/postgres-endpoint) for connection parameters, SSL options, and limitations - [Connect through the Postgres endpoint](/key-tasks/authenticating-and-connecting-to-motherduck/postgres-endpoint) for a general how-to guide - [Tableau documentation](https://help.tableau.com/current/online/en-us/to_connect_live_sql.htm) --- Source: https://motherduck.com/docs/integrations/bi-tools/tableau/tableau-desktop # Tableau Desktop and Server with MotherDuck > Connect Tableau Desktop or Server to MotherDuck using the DuckDB JDBC driver and Tableau connector. ## Tableau Desktop setup for DuckDB and MotherDuck 1. Download a [recent version of the DuckDB JDBC driver](https://repo1.maven.org/maven2/org/duckdb/duckdb_jdbc/) and copy it into the Tableau Drivers directory: * MacOS: `~/Library/Tableau/Drivers/` * Windows: `C:\Program Files\Tableau\Drivers` * Linux: `/opt/tableau/tableau_driver/jdbc` 2. Download the signed tableau connector (aka "Taco file") file from the [latest available release](https://github.com/MotherDuck-Open-Source/duckdb-tableau-connector/releases) and copy it into the Connectors directory: * Desktop Windows: `C:\Users\[YourUser]\Documents\My Tableau Repository\Connectors` * Desktop MacOS: `/Users/[YourUser]/Documents/My Tableau Repository/Connectors` * Server Windows: `C:\ProgramData\Tableau\Tableau Server\data\tabsvc\vizqlserver\Connectors` * Server Linux: `[Your Tableau Server Install Directory]/data/tabsvc/vizqlserver/Connectors` ## Connecting Once the Taco is installed, and you have launched Tableau, you can create a new connection by choosing "DuckDB by MotherDuck": ![Tableau connector list](../../img/tableau-connector-list.png) ### Local DuckDB database If you wish to connect to a local DuckDB database, select "Local file" as DuckDB Server option, and use the file picker: ![DuckDB Server dropdown](../../img/tableau-connect-options-local-file.png) ![Connection Dialogue](../../img/tableau-connect-local-file.png) ### In-memory database The driver can be used with an in-memory database by selecting the `In-memory database` DuckDB Server option. ![DuckDB Server dropdown](../../img/tableau-connect-options-in-memory.png) The data will then need to be provided by an Initial SQL string, for example: ```sql CREATE VIEW my_parquet AS SELECT * FROM read_parquet('/path/to/file/my_file.parquet'); ``` You can then access it by using the Tableau Data Source editing controls. ### MotherDuck To connect to MotherDuck, you have two authentication options: * Token -- provide the value that you [get from MotherDuck UI](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck/#creating-an-access-token). * No Authentication -- unless `motherduck_token` environment variable is available to Tableau at startup, you will then be prompted to authenticate when at connection time. To work with a MotherDuck database in Tableau, you have to provide the database to use when issuing queries. In `MotherDuck Database` field, provide the name of your database. You don't have to prefix it with `md:`: ![DuckDB Server dropdown](../../img/tableau-connect-options-md.png) ![Connection Dialogue](../../img/tableau-connect-motherduck.png) ## Additional information * [Tableau Documentation](https://help.tableau.com/current/pro/desktop/en-us/gettingstarted_overview.htm) * [Tableau Exchange Connector DuckDB/MotherDuck](https://exchange.tableau.com/en-gb/products/1021) * [DuckDB Tableau Connector](https://github.com/MotherDuck-Open-Source/duckdb-tableau-connector/) --- Source: https://motherduck.com/docs/integrations/bi-tools/tableau/tableau-bridge # Tableau Bridge (legacy) > Connect Tableau Cloud to MotherDuck using Tableau Bridge and the DuckDB JDBC connector. :::warning[Deprecated] Connecting through Tableau Bridge is a legacy approach. Use the [Postgres endpoint setup](./tableau-cloud.mdx) instead for a simpler connection that doesn't require Bridge infrastructure. ::: ## How to use Tableau Cloud with MotherDuck through Tableau Bridge ### Setup This guide assumes you have: - a [Tableau account](https://www.tableau.com/) - a Tableau Cloud Site - a Tableau Desktop installation (with the same version as the Tableau Cloud Server Version) set up with the DuckDB JDBC Driver and Tableau Connector. If you don't, sign up or ask your organization to purchase a plan, or sign up for a free trial. ### Obtain a PAT token Follow [Tableau's instructions on creating a PAT token.](https://help.tableau.com/current/server/en-us/security_personal_access_tokens.htm) This token must belong to a site admin. ### Set up Bridge client Use the [Tableau Bridge client setup instructions](https://help.tableau.com/current/online/en-us/to_bridge_client.htm) to install and set up Bridge client. 1. Make sure the machine where the Bridge client is installed has access to the Database used in the above steps. Important notes: > Network access - Because Bridge facilitates connections between your private network data and Tableau Cloud, it requires the ability to make outbound connections through the internet. After the initial outbound connection, communication is bidirectional. > Required ports - Tableau Bridge uses port 443 to make outbound internet requests to Tableau Cloud and port 80 for certificate validation. 2. Install Bridge client and make sure the Bridge client is signed in to the Tableau Cloud site. You can download the installer from the [Tableau Bridge releases page](https://www.tableau.com/support/releases/bridge). 3. Install the driver and taco files as outlined in the [Tableau connector setup guide](https://help.tableau.com/current/online/en-us/to_sync_local_data.htm#connectors-and-data-types). - [Windows Server] The driver also needs to be installed here: `C:\Program Files\Tableau\Tableau Bridge\Drivers` - [Windows Server] The connector also needs to be installed here: `C:\Program Files\Tableau\Connectors` > Note: Tableau Bridge can be deployed on both Windows or Linux. ### Running Bridge on Linux using Docker (advanced) If you want to run Bridge centrally on a Linux host, the official guidance recommends running it inside a Docker container, as described in Tableau's documentation on [installing Bridge for Linux in containers](https://help.tableau.com/current/online/en-us/to_bridge_linux_install.htm). Below is an **example Dockerfile** you can use as a starting point—this includes where to add JDBC drivers and the **DuckDB/MotherDuck** `.taco` file. It's provided for inspiration and may require updates to match your environment or newer versions of the software.
Example Dockerfile ```dockerfile FROM registry.access.redhat.com/ubi8/ubi:latest RUN yum update -y RUN yum install -y glibc-langpack-en # This is the latest version of Tableau Bridge that is known working with the MotherDuck connector RUN curl -o /tmp/TableauBridge.rpm -L \ https://downloads.tableau.com/tssoftware/TableauBridge-20243.25.0114.1153.x86_64.rpm && \ ACCEPT_EULA=y yum install -y /tmp/TableauBridge.rpm && \ rm /tmp/TableauBridge.rpm # Drivers RUN mkdir -p /opt/tableau/tableau_driver/jdbc # Connectors (tacos) RUN mkdir -p /root/Documents/My_Tableau_Bridge_Repository/Connectors # Download DuckDB JDBC driver and signed taco RUN curl -o /opt/tableau/tableau_driver/jdbc/duckdb_jdbc-1.3.0.0.jar \ -L https://repo1.maven.org/maven2/org/duckdb/duckdb_jdbc/1.3.0.0/duckdb_jdbc-1.3.0.0.jar && \ curl -o /root/Documents/My_Tableau_Bridge_Repository/Connectors/duckdb_jdbc-v1.1.1-signed.taco \ -L https://github.com/motherduckdb/duckdb-tableau-connector/releases/download/v1.1.1/duckdb_jdbc-v1.1.1-signed.taco ENV TZ=Europe/Berlin ENV LC_ALL=en_US.UTF-8 # ----- user specific settings ----- ENV USER_EMAIL="" ENV PAT_ID=BridgeToken ENV CLIENT_NAME="" ENV SITE_NAME="" ENV POOL_ID="" # ----------------------------------- CMD /opt/tableau/tableau_bridge/bin/run-bridge.sh -e \ --patTokenId=$PAT_ID \ --userEmail=$USER_EMAIL \ --client=$CLIENT_NAME \ --site=$SITE_NAME \ --patTokenFile="/home/documents/token.txt" \ --poolId=$POOL_ID ```
Key points: * Build an image that **installs the Bridge RPM** and then copies the DuckDB JDBC driver to `/opt/tableau/tableau_bridge/Drivers` and the connector to `/root/Documents/My_Tableau_Bridge_Repository/Connectors`. * Start the bridge by calling `run-bridge.sh` and pass the following flags: * `--patTokenFile /run/secrets/pat.json` * `--patTokenId ` * `--site ` * `--poolId ` (optional – see note on pools below) * **PAT naming rule** – the *name* you give the Personal-Access-Token in Tableau **must** be a valid JSON key and must be used **verbatim** 1. as the key in `pat.json` → `{"": ""}` 2. in the `--patTokenId` flag. A mismatch will result in a silent authentication failure. * The latest Bridge **2025.1** builds contain a regression that prevents the MotherDuck connector (and several others) from loading. Until Tableau fixes this, pin the image to the **20243.25.0114.1153** release (see discussion in [GitHub issue #22](https://github.com/MotherDuck-Open-Source/duckdb-tableau-connector/issues/22)). * Bridge listens only on outbound **443/tcp**, so you do **not** need to publish any container ports. If you run a host firewall (for example, `ufw`) remember that Docker bypasses it [[Docker docs](https://docs.docker.com/engine/network/packet-filtering-firewalls/#docker-and-ufw)]. Restrict egress traffic to Tableau Cloud CIDR blocks if your security policy requires it. * Logs written to `stdout` are useful, but the *detailed* logs live in `/root/Documents/My_Tableau_Bridge_Repository/Log`. Mount this path as a volume or use a side-car to ship the logs to your observability stack. ### Tableau Cloud Bridge pool setup By default, Tableau places the Bridge in the default pool. 1. In Settings → Bridge page, make sure the Bridge client is connected in the connection Status. 2. In the "Private Network Allowlist" add the domain of the database and select the pool. ![Tableau Bridge Pooling](useBaseUrl('/img/integrations/tableau-bridge-pooling.png')) > **Pool Gotcha**: Some users report that a Linux containerised Bridge never shows up under a custom site pool. If that happens, leave `POOL_ID` blank when starting the client – it will join the legacy **Default** pool and still work with live connections. ### Create embedded data source (live) and workbook 1. Open Tableau desktop and sign in to a Tableau Cloud site. > Note: Make sure the Tableau Desktop and [Tableau Cloud version](https://help.tableau.com/current/server/en-us/version_server_view.htm) match. 2. Create new Workbook and select the database connector. 3. Connect to the database. ![Tableau Cloud DuckDB connector dialog](useBaseUrl('/img/integrations/tableau-cloud-connect-motherduck.png')) 4. Set up Datasource to use live connectivity. 5. Create a worksheet with the data. ![Tableau worksheet with MotherDuck data](useBaseUrl('/img/integrations/tableau-create-worksheet.png')) ### Publish the workbook to Tableau Cloud 1. Click on "Server > Publish Workbook". ![Tableau publish workbook menu](useBaseUrl('/img/integrations/tableau-publish-workbook.png')) 2. Select "Publish Separately" under Publish Type and "Embedded password" under Authentication. Select "Maintain connection to a live data source". ![Tableau publish separately dialog](useBaseUrl('/img/integrations/tableau-publish-separately.png')) ![Tableau publish workbook and data source dialog](useBaseUrl('/img/integrations/tableau-publish-workbook-and-data-source.png')) 3. Click "Publish Workbook & 1 Data Source". ![Tableau publishing complete confirmation](useBaseUrl('/img/integrations/tableau-publishing-complete.png')) ### (Important step!) update Tableau Bridge client in data source 1. Navigate to the newly published data source in Tableau Cloud (in your browser) and click on the "i" icon to open Data Source Details. ![Tableau data source info icon](useBaseUrl('/img/integrations/tableau-data-source-i.png')) 2. Click on "Change Bridge Client..." ![Tableau data source details dialog](useBaseUrl('/img/integrations/tableau-data-source-details.png')) 3. Change the bridge client from "Site client pool" to your bridge client (the one you set up in the previous section). Click "Save" and close the dialog. ![Tableau change bridge client dialog](useBaseUrl('/img/integrations/tableau-change-bridge-client.png')) 4. Check that the data source shows up in your Tableau Bridge status dialog. This dialog is located in the Windows Start bar (in the Icon panel). ![Tableau Bridge connected status](useBaseUrl('/img/integrations/tableau-bridge-connected.png')) 5. You can access your Published Workbook on your Tableau Cloud Site, or you can create a new Tableau Workbook using the Published Data Source. ![Tableau workbook using published data source](useBaseUrl('/img/integrations/tableau-workbook-using-this-data-source.png')) ## Additional information - [Tableau Documentation](https://help.tableau.com/current/pro/desktop/en-us/gettingstarted_overview.htm) - [Tableau Exchange Connector DuckDB/MotherDuck](https://exchange.tableau.com/en-gb/products/1021) - [DuckDB Tableau Connector](https://github.com/MotherDuck-Open-Source/duckdb-tableau-connector/) --- Source: https://motherduck.com/docs/integrations/bi-tools/tableau/index # Tableau > Tableau is a widely-used business intelligence and data visualization platform that enables data analysts to build interactive dashboards and reports. You can connect Tableau Cloud to MotherDuck through the built-in PostgreSQL connector using MotherDuck's Postgres endpoint. For Tableau Desktop and Server, use the DuckDB JDBC connector. ## Included pages - [Tableau Cloud with MotherDuck](https://motherduck.com/docs/integrations/bi-tools/tableau/tableau-cloud): Connect Tableau Cloud to MotherDuck using the Postgres endpoint for dashboards and reports. - [Tableau Desktop and Server with MotherDuck](https://motherduck.com/docs/integrations/bi-tools/tableau/tableau-desktop): Connect Tableau Desktop or Server to MotherDuck using the DuckDB JDBC driver and Tableau connector. - [Tableau Bridge (legacy)](https://motherduck.com/docs/integrations/bi-tools/tableau/tableau-bridge): Connect Tableau Cloud to MotherDuck using Tableau Bridge and the DuckDB JDBC connector. --- ## Docs feedback MotherDuck accepts optional user-submitted feedback about this page at `GET https://motherduck.com/docs/api/feedback/agent`. For agents and automated tools, feedback submission should be user-confirmed before sending. URL-encode query parameter values and send a GET request: ```text GET https://motherduck.com/docs/api/feedback/agent?page_path=%2Fintegrations%2Fbi-tools%2Ftableau%2F&page_title=MotherDuck%20Documentation%20-%20Tableau&text= ``` Optionally append `&source=` such as `claude.ai` or `chatgpt`. `page_path` and `text` are required; `page_title` and `source` are optional. Responses: `200 {"feedback_id": ""}`, `400` for malformed query parameters, and `429` when rate-limited.