Tableau MCP Server (tableau-mcp-navi)
A Model Context Protocol (MCP) server for Tableau Server. Enables AI assistants (like Claude, Cursor) to interact with Tableau workbooks, views, datasources, and metadata.
Features
- 27 Tools for comprehensive Tableau Server interaction
- Custom SQL from URL or Name: Give a Tableau URL or workbook name, get the SQL instantly (no file download!)
- Fuzzy Workbook Matching: Works with CamelCase slugs like
InhouseKYCFunnelViewor exact names - Find Datasource Usage: Discover which dashboards use a specific published datasource
- Publishing: Upload workbooks and datasources to Tableau Server
- Two Authentication Methods: Personal Access Token (PAT) or Username/Password
- Metadata API: Extract refresh info, data lineage, upstream tables
- Zero Install: Run directly with
uvx- no local installation needed - Auto Updates: Users always get the latest version
Quick Start
1. Install uv (if not installed)
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
2. Configure Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"tableau": {
"command": "uvx",
"args": ["tableau-mcp-navi"],
"env": {
"TABLEAU_SERVER_URL": "https://your-tableau-server.com",
"TABLEAU_TOKEN_NAME": "your_token_name",
"TABLEAU_TOKEN_SECRET": "your_token_secret",
"TABLEAU_VERIFY_SSL": "false"
}
}
}
}
3. Restart Cursor
The MCP server will be available immediately!
Available Tools (27 total)
Workbook Tools
| Tool | Description |
|---|---|
list_workbooks |
List all workbooks on the server |
get_workbook |
Get workbook details including views |
search_workbooks |
Search workbooks by name |
View Tools
| Tool | Description |
|---|---|
get_view_data |
Get underlying data from a view |
get_view_image |
Get PNG preview of a view |
download_view_image |
Download view image to disk |
download_view_image_from_url |
Download image from Tableau URL |
Data Source Tools
| Tool | Description |
|---|---|
list_datasources |
List all data sources |
get_datasource |
Get data source details |
refresh_datasource |
Trigger extract refresh |
Project Tools
| Tool | Description |
|---|---|
list_projects |
List all projects |
get_project |
Get project details |
Utility Tools
| Tool | Description |
|---|---|
resolve_id |
Resolve a name to full UUID (workbooks, datasources, views, projects) |
Metadata API Tools (RCA & Lineage)
| Tool | Description |
|---|---|
get_datasource_extract_info |
Get extract refresh times |
get_dashboard_extract_info |
Get extract info for all datasources in a dashboard |
find_stale_extracts |
Find datasources with stale extracts |
get_datasource_tables |
Get upstream tables for a datasource |
get_dashboard_tables |
Get ALL tables powering a dashboard |
get_dashboard_sql_from_url |
Extract custom SQL from dashboard URL |
get_datasource_custom_sql |
NEW Get Custom SQL from datasource (no download!) |
Publishing Tools 🆕
| Tool | Description |
|---|---|
publish_workbook |
Upload a .twb/.twbx workbook to Tableau Server |
publish_datasource |
Upload a .tds/.tdsx datasource to Tableau Server |
list_projects_for_publishing |
List projects with IDs for publishing |
Other Tools
| Tool | Description |
|---|---|
test_connection |
Test Tableau connectivity |
list_sites |
List available sites |
Configuration
Environment Variables
| Variable | Required | Description |
|---|---|---|
TABLEAU_SERVER_URL |
✅ | Your Tableau Server URL |
TABLEAU_TOKEN_NAME |
✅* | Personal Access Token name |
TABLEAU_TOKEN_SECRET |
✅* | Personal Access Token secret |
TABLEAU_USERNAME |
✅* | Username (alternative to PAT) |
TABLEAU_PASSWORD |
✅* | Password (alternative to PAT) |
TABLEAU_SITE_ID |
❌ | Site ID (empty for default) |
TABLEAU_VERIFY_SSL |
❌ | Set to "false" for self-signed certs |
TABLEAU_API_VERSION |
❌ | Override API version |
TABLEAU_MCP_ANALYTICS |
❌ | Set to "false" to disable analytics |
*Either PAT or Username/Password required
Getting a Personal Access Token
- Log in to Tableau Server
- Click your profile icon → My Account Settings
- Scroll to Personal Access Tokens
- Click Create new token
- Copy both the Token Name and Token Secret
Usage Examples
After configuring Cursor:
"List all workbooks in Tableau"
"Get details for workbook abc123"
"Search for workbooks about sales"
"Get data from view xyz789"
"What tables power the Sales Dashboard?"
"Find all stale extracts older than 48 hours"
"Get the SQL from this Tableau URL: https://..."
# New in v0.3.1:
"Resolve the UUID for workbook 'Sales Dashboard'"
"Get the Custom SQL for the 'UPI Daily Metrics' datasource"
"Publish my workbook /path/to/report.twbx to project abc123"
"List projects where I can publish workbooks"
Updates
When the package is updated on PyPI, users automatically get the new version on their next run - no action required!
Development
# Clone
git clone https://github.com/manish-coder-1007/tableau-mcp-navi.git
cd tableau-mcp-navi
# Install dependencies
uv sync
# Run locally
uv run python -m tableau_mcp_navi
License
MIT License - see LICENSE file.
Author
Manish Balot
Links
Metadata
Release files for tableau-mcp-navi 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| tableau_mcp_navi-0.3.1.tar.gz | 29.9 kB | Without provenance | Details for tableau_mcp_navi-0.3.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| tableau_mcp_navi-0.3.1-py3-none-any.whl | Python 3 | none | any | Details for tableau_mcp_navi-0.3.1-py3-none-any.whl |
Total release size: 67.4 kB
Security for tableau-mcp-navi 0.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.