Cloudera Data Visualization MCP Server
Provides tools for interacting with Cloudera Data Visualization (CDV) API, enabling management of groups, users, roles, segments, filter associations, workspaces, datasets, visuals, data connections, jobs, migrations, and debugging operations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Cloudera Data Visualization MCP Server list all workspaces"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Cloudera Data Visualization MCP Server
A Model Context Protocol server that exposes the full Cloudera Data Visualization (CDV) REST API to AI agents. This lets LLMs list, create, update, and delete CDV resources—groups, users, roles, segments, filter associations, workspaces, datasets, visuals, and data connections—as well as run jobs, query the data API, import/export migrations, and perform operational debugging tasks.
Tools
Groups
Tool | Description |
| List all groups |
| Get a group by ID |
| Create a new group |
| Update a group by ID |
| Delete a group by ID |
Users
Tool | Description |
| List all users |
| Get a user by ID |
| Update a user by ID |
| Edit a user's profile by username |
Roles
Tool | Description |
| List all roles |
| Get a role by ID |
| Create a new role |
| Update a role by ID |
| Delete a role by ID |
Segments
Tool | Description |
| List all segments |
| Get a segment by ID |
| Create a new segment |
| Update a segment by ID |
| Delete a segment by ID |
Filter Associations
Tool | Description |
| List all filter associations |
| Get a filter association by ID |
| Create a new filter association |
| Update a filter association by ID |
| Delete a filter association by ID |
Workspaces
Tool | Description |
| List all workspaces |
| Get a workspace by ID |
| Create a new workspace |
| Update a workspace by ID |
| Delete a workspace by ID |
Datasets
Tool | Description |
| List all datasets |
| Get a dataset by ID |
| Create a new dataset |
| Update a dataset by ID |
| Delete a dataset by ID |
Visuals
Tool | Description |
| List all visuals (charts/dashboards) |
| Get a visual by ID |
| Create a new visual (raw API body) |
| Update a visual by ID |
| Delete a visual by ID |
| Create a chart visual — only exposes patterns confirmed to work via the API |
Supported visual_type values for create_smart_visual:
Type | Use case | Notes |
| Bar chart — one measure vs. one dimension | Measure on x, dimension on y |
| Grouped bars — one SUM measure, split by color dimension | Use |
| Pie chart — SUM measure by dimension | Dimension auto-placed on |
All other CDV chart types require configuration in CDV's interactive builder and are blocked here to prevent broken visuals.
What is blocked and why:
Pattern | Error returned | Alternative |
| CDV generates | Use |
| Unsupported visual type | Use CDV's builder; use |
Columns starting with | CDV tokenizer bug produces | Choose a different column |
Date/timestamp columns as dimensions | CDV bracket conversion fails for TIMESTAMP | Use CDV's builder for time-series |
|
| Use |
Deleting dashboards | Cascade-deletes ALL linked chart visuals | Record visual IDs first; use |
Connections
Tool | Description |
| List all data connections |
| Get a connection by ID |
| Create a new connection |
| Update a connection by ID |
| Delete a connection by ID |
| Export a connection definition by ID |
Migrations
Tool | Description |
| Export all CDV artifacts as a migration bundle |
| Import a CDV migration bundle |
Data API
Tool | Description |
| Query |
| Query |
| Query |
| Query |
Jobs
Tool | Description |
| Trigger a job run |
| Run an existing extract job |
| Create a new extract job definition |
Debugging / Operations
Tool | Description |
| Retrieve GC monitor statistics |
| Trigger a GC monitor action |
| Retrieve GC statistics |
| Trigger a GC stats action |
| Get log levels for all loggers |
| Set the default log level |
| Get log level for a specific logger |
| Set log level for a specific logger |
| Get current cProfile tracing state |
| Toggle cProfile tracing on/off |
| Reset the cache for a data connection |
| Reset the cache for a dataset |
Related MCP server: Tableau MCP Server
Examples
Cloudera Agent Studio — AI Assisted Supply Chain
The screenshots below show the CDV MCP Server being used inside Cloudera Agent Studio as part of an AI-powered supply chain workflow. The user asked a natural language question and the agent automatically:
Discovered the available connections and datasets
Explored the
procurement_transactionstable schemaPlanned the right visualization type and column mapping
Called
create_smart_visualto build a stacked bar chart in CDVCalled
create_dashboardto make it visible in the Logistics MCP Demo workspace
Prompt: "Which suppliers are driving the most urgent spend? Build a stacked bar chart in Data viz."
Step 1 — Agent plans the visualization
The agent reasons through the dataset, identifies supplier_name as the dimension, priority_code as the color grouping, and total_price (sum) as the measure, then maps these to a trellis-groupedbars visual type.

Step 2 — Visual created and linked in CDV
The agent confirms the visualization details, creates the chart via create_smart_visual, wraps it in a dashboard with create_dashboard, and returns a direct link to the new artifact in the Logistics MCP Demo workspace.

Agent Workflow Guidance
CDV Data Hierarchy
CDV organizes data in three layers, each building on the one below:
Connection (links to an external database, e.g. Impala, Hive, Spark SQL)
└── Dataset (points to a specific table or query within that connection)
└── Visual / Dashboard (chart or dashboard built on a dataset)Agents must respect this hierarchy when exploring or creating resources.
Discovery — Always Check Before Creating
Before creating anything, always discover what already exists at each level.
Step 1 — Connections
Call list_connections to see what data sources are registered in CDV.
Present the list to the user and identify which connection holds their data.
Only offer create_connection if no suitable connection exists and the user explicitly asks for one.
Step 2 — Datasets
Call list_datasets to see what datasets already exist (these are built on top of connections).
Present the results and ask the user which dataset to use.
Only offer create_dataset if no suitable dataset exists on the right connection and the user explicitly confirms they want a new one. Note that create_dataset requires a dc_id — the connection ID from Step 1.
Step 3 — Visuals / Dashboards
Call list_visuals to see what charts/dashboards already exist before building new ones.
Only call create_smart_visual or create_visual once the dataset has been confirmed.
Never assume anything needs to be created. CDV instances typically already have connections, datasets, and even visuals the user can reuse.
Correct flow:
User: "Build me a bar chart of shipment costs"
Agent: list_connections() ← discover data sources
Agent: "I found these connections: ..."
Agent: list_datasets() ← discover existing datasets
Agent: "Which dataset should I use?"
User: "Use supplier_shipping_performance"
Agent: list_workspaces() ← identify target workspace
Agent: create_smart_visual(...) ← now build the visualIncorrect flow (avoid):
User: "Build me a bar chart of shipment costs"
Agent: create_connection(...) ← ❌ never skip discovery
Agent: create_dataset(...) ← ❌ never create without confirming first
Agent: create_smart_visual(...)Workspace Discovery — Same Rule Applies
Always call list_workspaces before creating a visual or dashboard. Identify the correct workspace ID from the list; only call create_workspace if the user explicitly requests a new one.
Visual Creation Workflow
When create_smart_visual is used:
Call
list_connections→ understand available data sources.Call
list_datasets→ confirm dataset with user (note whichdc_idit belongs to).Call
list_workspaces→ identify the target workspace ID.Call
create_smart_visualwithdataset_id,workspace_id, and column specs.If the Smart Visual API returns 404 (not available on all CDV instances), the tool automatically falls back to the standard admin API using the provided
workspace_id.
Environment Variables
Variable | Required | Description |
| Yes | Base URL of your CDV deployment (e.g. |
| Yes | CDV API key — sent as |
| No | Transport protocol: |
Usage with Claude Desktop
Add the following to the mcpServers section of your claude_desktop_config.json:
Option 1: Direct installation from GitHub (Recommended)
{
"mcpServers": {
"cdv-mcp-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/kevintalbert/cdv-mcp-server@main",
"run-server"
],
"env": {
"CDV_BASE_URL": "https://my-cdv-instance.example.com",
"CDV_API_KEY": "your-api-key-here",
"CDV_USERNAME": "vizapps_admin",
"CDV_PASSWORD": "vizapps_admin"
}
}
}
}Option 2: Local installation (after cloning the repository)
{
"mcpServers": {
"cdv-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/CDV-MCP-Server",
"run",
"src/cdv_mcp_server/server.py"
],
"env": {
"CDV_BASE_URL": "https://my-cdv-instance.example.com",
"CDV_API_KEY": "your-api-key-here",
"CDV_USERNAME": "vizapps_admin",
"CDV_PASSWORD": "vizapps_admin"
}
}
}
}For Option 2, replace /path/to/CDV-MCP-Server with your local path.
Local Development
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install dependencies
uv sync
# Run the server (stdio transport, default)
uv run run-server
# Run with HTTP transport
MCP_TRANSPORT=http uv run run-serverYou can also create a .env file in the project root with your credentials:
CDV_BASE_URL=https://my-cdv-instance.example.com
CDV_API_KEY=your-api-key-here
CDV_USERNAME=vizapps_admin
CDV_PASSWORD=your-cdv-passwordTransport
The MCP server's transport protocol is configurable via the MCP_TRANSPORT environment variable:
stdio(default) — communicate over standard input/output. Useful for local tools, CLI scripts, and integrations like Claude Desktop.http— expose an HTTP server. Useful for web-based deployments and microservices.sse— use Server-Sent Events (SSE) transport. Useful for existing web-based deployments that rely on SSE.
Authentication
The server uses two separate authentication mechanisms with different capability levels:
Credential | Env Var | Required | Unlocks |
CDV Admin API Key |
| Always | Data exploration, admin CRUD, connections, datasets, workspaces, users, groups, migrations, jobs |
CDV Username + Password |
| Optional |
|
Without CDV_USERNAME / CDV_PASSWORD
When session credentials are absent, chart and dashboard creation tools are not registered in the MCP server at all — they will not appear in the agent's tool list. The server operates in a read/explore-only mode for visuals:
✅
query_dataapi— run SQL queries, explore data✅
list_connections,list_datasets,list_workspaces— discover resources✅
list_visuals,get_visual— inspect existing dashboards✅ All admin tools (users, groups, roles, datasets, etc.)
❌
create_smart_visual— not available❌
create_dashboard— not available❌
create_visual/update_visual/delete_visual— not available
Why two credentials?
CDV's admin API (arc/adminapi/v1/visuals) creates visual metadata (title, type, dataset) but does not persist shelf configurations (which columns appear on which axes). Shelf data is stored through CDV's UI API (arc/reports/report/{id}), which requires a browser-style session login. Without CDV_USERNAME/CDV_PASSWORD, visuals would be created as empty skeletons that render blank in CDV's frontend.
The session is cached in memory and reused across tool calls within a server process.
Copyright (c) 2025 - Cloudera, Inc. All rights reserved.
Available Tools
66 toolscreate_connectionA
Create a new CDV data connection.
IMPORTANT: Do NOT call this without first calling list_connections() and confirming with the user that no existing connection points to their target data source.
body fields: name (str), type (str), connection_info (object with host, port, etc.).
Inputs: body (required). Returns: result
create_dashboardA
Create a CDV dashboard that groups one or more chart visuals into a single visible view.
Use this tool after create_smart_visual() to make charts visible in the CDV workspace UI. Chart visuals created via the API are standalone artifacts; they only appear in the CDV workspace when placed inside a dashboard.
visual_ids: list of visual IDs to include (in display order, left-to-right, top-to-bottom). Record these IDs — deleting the dashboard also deletes all linked visuals. workspace_id: the workspace where the dashboard will be created (from list_workspaces()). dataset_id: optional — the primary dataset for the dashboard (for global filter context). Use the dataset_id shared by most of the included visuals. description: optional short description shown in the workspace.
Visuals are automatically tiled in a 2-column grid. Odd trailing visuals span full width.
WARNING: Deleting a dashboard (via delete_visual) permanently deletes all linked chart visuals. Always save the visual IDs before deleting a dashboard.
Returns the new dashboard's id and url.
Example workflow:
call list_workspaces() → choose workspace_id
call list_datasets() → confirm dataset_id with the user
call create_smart_visual() × N → collect visual_ids
call create_dashboard(title="My Dashboard", workspace_id=4, visual_ids=[131, 132, 133], dataset_id=12)
Inputs: title (required), workspace_id (required), visual_ids (required), dataset_id, +1 more. Returns: result
create_datasetA
Create a new CDV dataset backed by an existing data connection.
A dataset points to a specific table or SQL query within a connection (dc_id). Visuals and dashboards are built on top of datasets.
IMPORTANT: Do NOT call this without first calling list_connections() to identify the right connection (dc_id) and list_datasets() to confirm no suitable dataset already exists. Always get explicit user confirmation before creating a new dataset.
body fields: dc_id (int), name (str), type (str), detail (str, e.g. schema.table), description (str), info (object), lvname (str), settings (object).
Inputs: body (required). Returns: result
create_extractC
Create a CDV data extract job.
Inputs: src_dataset_id (required), tgt_dataconnection_id (required), tgt_dbname (required), tgt_tablename (required), +4 more. Returns: result
create_filter_associationC
Create a new CDV filter association linking a segment to users or groups.
Inputs: body (required). Returns: result
create_groupA
Create a new CDV group.
body fields:
name (str, required): group name
users (list[{id: int}], optional): list of user IDs to add
Inputs: body (required). Returns: result
create_roleB
Create a new CDV role. body fields: name, permissions (list).
Inputs: body (required). Returns: result
create_segmentB
Create a new CDV row-level security segment. body fields: name, filter_definition.
Inputs: body (required). Returns: result
create_smart_visualA
Create a CDV chart visual that reliably renders data without SQL errors.
This tool only exposes visual types and column configurations that are confirmed to work through the CDV API. Unsupported patterns are rejected with a clear error and guidance on what to use instead.
SUPPORTED visual_type values:
"trellis-bars" Best for one measure vs. one dimension (horizontal bars).
"trellis-groupedbars" One SUM measure grouped by a color dimension.
"pie" One SUM measure broken down by one dimension.
NOT SUPPORTED via this tool (use CDV's interactive builder instead):
trellis-lines, trellis-areas (time-series; timestamp dimensions fail via API)
scatter, histogram, boxplot (require CDV builder shelf configuration)
table, crosstab (use query_dataapi for tabular results)
All other chart types
Each entry in columns must have:
column_name (str, required): exact column name in the dataset.
aggregate_function (str, optional): sum | avg | min | max Columns WITH this field are measures; columns WITHOUT are dimensions. IMPORTANT: "count" is not supported — use "sum" on a numeric column instead.
shelf (str, optional): explicit shelf override. Use "color_shelf" to add a grouping/color dimension to bar or pie charts.
COLUMN COMPATIBILITY RULES (enforced, CDV-side constraints):
At least one measure (column with aggregate_function) is required.
Column names that start with avg_, sum_, min_, max_, count_ CANNOT be used as aggregate targets (CDV's tokenizer confuses them with functions). Example: avg(avg_lead_time_days) fails. Use a different column.
Date/timestamp columns (names with "date", "time", "year", etc.) should NOT be used as dimensions — CDV fails to generate valid SQL for them. Use CDV's builder for time-series charts.
FILTERS ARE NOT SUPPORTED: CDV's filter SQL generation always produces bracket notation in the WHERE clause that Impala cannot parse. After creating the visual, open it in CDV's interactive builder to add filters manually.
EXAMPLES:
Total spend by supplier (bar chart): columns=[ {"column_name": "supplier_name"}, {"column_name": "total_price", "aggregate_function": "sum"}, ]
Supplier spend grouped by priority (grouped bar): visual_type="trellis-groupedbars", columns=[ {"column_name": "supplier_name"}, {"column_name": "priority_code", "shelf": "color_shelf"}, {"column_name": "total_price", "aggregate_function": "sum"}, ]
Spend breakdown by item (pie chart): visual_type="pie", columns=[ {"column_name": "item_description"}, {"column_name": "total_price", "aggregate_function": "sum"}, ]
VISIBILITY: Chart visuals do NOT appear in the CDV workspace until you call create_dashboard() with their IDs. Always follow up with create_dashboard().
Returns the created visual's metadata including its id, visual_id, and url.
Inputs: dataset_id (required), visual_type (required), title (required), columns (required), +1 more. Returns: result
create_visualA
Create a CDV visual using the raw admin API.
Required body fields: title (str), type (str), dataset_id (int), workspace_id (int). Optional: description (str), data (object — visual spec), perm (list[str]).
Inputs: body (required). Returns: result
create_workspaceB
Create a new CDV workspace.
body fields: name (str), desc (str), editable (bool), perms (list[str]), acl (list of [entry_type, permission, name] triplets).
Inputs: body (required). Returns: result
delete_connectionB
Delete a CDV data connection by its numeric ID.
Inputs: object_id (required). Returns: result
delete_datasetB
Delete a CDV dataset by its numeric ID.
Inputs: object_id (required). Returns: result
delete_filter_associationB
Delete a CDV filter association by its numeric ID.
Inputs: object_id (required). Returns: result
delete_groupB
Delete a CDV group by its numeric ID.
Inputs: object_id (required). Returns: result
delete_roleB
Delete a CDV role by its numeric ID.
Inputs: object_id (required). Returns: result
delete_segmentB
Delete a CDV segment by its numeric ID.
Inputs: object_id (required). Returns: result
delete_visualA
Delete a CDV visual or dashboard by its numeric ID.
WARNING — CASCADE DELETION: Deleting a dashboard (type="dashboard") also permanently deletes ALL chart visuals linked to it as widgets. If you need to preserve the chart visuals, note their IDs before deleting the dashboard.
Inputs: object_id (required). Returns: result
delete_workspaceB
Delete a CDV workspace by its numeric ID.
Inputs: object_id (required). Returns: result
edit_user_profileB
Edit the profile of a CDV user identified by username (e.g. update email, name).
Inputs: username (required), body (required). Returns: result
export_connectionC
Export a CDV data connection definition by its numeric ID.
Inputs: object_id (required). Returns: result
export_migrationA
Export all CDV visual artifacts (dashboards, datasets, connections) as a migration bundle.
Inputs: no named parameters. Returns: result
get_connectionB
Get a single CDV data connection by its numeric ID.
Inputs: object_id (required). Returns: result
get_datasetC
Get a single CDV dataset by its numeric ID.
Inputs: object_id (required). Returns: result
get_filter_associationB
Get a single CDV filter association by its numeric ID.
Inputs: object_id (required). Returns: result
get_gc_monitorA
Check whether GC monitoring is currently enabled on the CDV server.
Inputs: no named parameters. Returns: result
get_gc_statsA
Retrieve the current GC debug flags from the CDV server.
Inputs: no named parameters. Returns: result
get_groupA
Get a single CDV group by its numeric ID.
Inputs: object_id (required). Returns: result
get_logger_levelB
Retrieve the current log level for a specific logger by name.
Inputs: logger_name (required). Returns: result
get_log_levelsA
Retrieve the current log level for the root logger on the CDV server.
Inputs: no named parameters. Returns: result
get_roleB
Get a single CDV role by its numeric ID.
Inputs: object_id (required). Returns: result
get_segmentA
Get a single CDV segment by its numeric ID.
Inputs: object_id (required). Returns: result
get_toggle_cprofileA
Check whether cProfile profiling is enabled for a CDV server function. Defaults to sqlrun.views_jsonselect / jsonselect_parallel if not specified.
Inputs: module, owner, func. Returns: result
get_userA
Get a single CDV user by their numeric ID.
Inputs: object_id (required). Returns: result
get_visualA
Get a single CDV visual by its numeric ID.
Inputs: object_id (required). Returns: result
get_workspaceA
Get a single CDV workspace by its numeric ID.
Inputs: object_id (required). Returns: result
import_migrationC
Import a CDV migration bundle.
Inputs: dataconnection_name (required), json_data, sanity_check. Returns: result
list_connectionsA
STEP 1 of every data workflow — list all CDV data connections.
A data connection is the top-level link to an external database (Impala, Hive, etc.). The connection's numeric ID (dc_id / dataconnection_id) is used when: • Querying raw SQL via query_dataapi(dataconnection_id=, query="SELECT ...") • Creating a new dataset with create_dataset(body={"dc_id": , ...})
WORKFLOW — always run this FIRST, then:
list_connections() → identify the right connection and its ID
list_datasets() → find existing datasets built on that connection
query_dataapi(...) → explore table columns and sample data
list_workspaces() → get workspace_id for visual creation
create_smart_visual(...) → create charts
create_dashboard(...) → make charts visible in CDV
Never create a new connection unless the user explicitly requests it and no existing connection points to their data source.
Inputs: no named parameters. Returns: result
list_datasetsA
STEP 2 of the workflow — list all datasets (named tables/views) available in CDV.
In CDV: Connection → Dataset → Visual → Dashboard A dataset is a named pointer to a specific table or SQL query within a connection. Visuals and dashboards are built on datasets (using their numeric dataset_id).
AFTER calling this tool, you will have dataset names and IDs, but NOT column names. ALWAYS follow up with: query_dataapi(dataconnection_id=<dc_id>, query="SELECT * FROM <schema.table> LIMIT 3") to discover the exact column names before creating any visual.
Workflow reminder:
list_connections() → find dc_id (connection ID for SQL queries)
list_datasets() → find dataset_id and table name (THIS TOOL)
query_dataapi(...) → discover column names and sample data ← DO THIS NEXT
list_workspaces() → find workspace_id for visual creation
create_smart_visual(...)
create_dashboard(...)
Only call create_dataset() if no suitable dataset exists AND the user explicitly confirms they want a new one. Always confirm with the user before creating anything.
Inputs: no named parameters. Returns: result
list_filter_associationsA
List all filter associations (segment-to-user/group mappings) defined in CDV.
Inputs: no named parameters. Returns: result
list_groupsA
List all groups defined in CDV.
Inputs: no named parameters. Returns: result
list_rolesB
List all roles defined in CDV.
Inputs: no named parameters. Returns: result
list_segmentsB
List all row-level security segments defined in CDV.
Inputs: no named parameters. Returns: result
list_usersB
List all users defined in CDV.
Inputs: no named parameters. Returns: result
list_visualsA
List CDV visuals (dashboards). Optionally filter by dataset_id or workspace_id.
IMPORTANT — CDV API LIMITATION: This endpoint only returns dashboard-type visuals (type="dashboard"). Standalone chart visuals created via create_smart_visual() are NOT included in this listing even when they exist in the workspace.
To work with standalone chart visuals:
Use get_visual(object_id) with the id returned when the visual was created.
Use create_dashboard() to group multiple chart visuals into a visible dashboard.
After creating chart visuals with create_smart_visual(), always call create_dashboard() to combine them into a single navigable dashboard so the user can see them in the CDV UI.
Inputs: dataset_id, workspace_id. Returns: result
list_workspacesA
STEP 4 of every visualization workflow — get the workspace_id required by create_smart_visual.
CDV workspaces organize visuals and dashboards (similar to folders). The workspace_id returned here is a REQUIRED parameter for create_smart_visual() and create_dashboard(). Without it, visual creation will fail.
Call this before creating any visual. Choose the workspace that matches the project context (e.g. a dedicated project workspace or "Public").
Inputs: no named parameters. Returns: result
query_dataapiA
STEP 3 & 5 of the workflow — explore columns, answer filtered questions, get raw data.
This is the MOST IMPORTANT tool for data exploration and filtered analysis. It runs arbitrary SQL against the database and returns structured results.
Returns: {"columns": [...], "rows": [{col: val}, ...]}
══ USE THIS TOOL FOR ══════════════════════════════════════════════════════
COLUMN DISCOVERY (Step 3) — always do this before creating any visual: query_dataapi(dataconnection_id=10, query="SELECT * FROM schema.table_name LIMIT 3") → reveals exact column names, data types, and sample values. → column names are case-sensitive; use EXACTLY as returned here.
FILTERED QUESTIONS — when the user asks about a specific subset of data: "Show shipping codes for Mock Vendor X" "What is Turbine Oil's price trend?" "Which priority-1 orders are overdue?" → create_smart_visual() CANNOT apply filters (CDV API limitation). → Use this tool with a WHERE clause instead, then present results as a table.
COUNT / FREQUENCY questions — when the user wants counts: "What are the most common shipping codes?" → create_smart_visual() does NOT support COUNT aggregation. → Use this tool: query="SELECT col, COUNT(*) as cnt FROM ... GROUP BY col ORDER BY cnt DESC"
TIME-SERIES queries — price trends, monthly patterns, etc.: → Time-based CDV visuals are blocked via the API. → Use this tool to fetch the trend data, then describe it or format it for Plotly.
HEATMAPS / CROSS-TABS — e.g. "spend by destination and shipping code": → CDV has no heatmap type via the API. → Use this tool to get the pivot data, format it for plotly.graph_objects.Heatmap.
══ HOW TO USE ═════════════════════════════════════════════════════════════
Connection-based SQL (RECOMMENDED — most flexible): query_dataapi(dataconnection_id=<id_from_list_connections>, query="SELECT col1, SUM(col2) FROM schema.table WHERE col3='val' GROUP BY col1 ORDER BY 2 DESC LIMIT 20")
Important SQL notes:
• Table names use schema.table format (e.g. logistics.procurement_transactions)
• SQL reserved words (date, time, year, etc.) must be backtick-quoted:
✓ SELECT date, time FROM ... NOT: SELECT date, time FROM ...
• Use standard Impala/Hive SQL syntax
Dataset-based query (simpler, but less flexible): query_dataapi(dataset=<id_from_list_datasets>, dimensions="col1,col2", aggregates="SUM(col3) as total", limit=20)
Inputs: dataset, dataconnection_id, query, limit, +3 more. Returns: result
query_enhanced_data_apiB
Query data via the CDV Enhanced Data API (/api/data).
version: '0' for legacy API (provide dataset, limit, dimensions, aggregates), '1' for enhanced API (provide dsreq — a JSON-formatted dataset request string).
Inputs: version (required), dataset, dsreq, limit, +2 more. Returns: result
reset_dataconnection_cacheA
Reset the query result cache for a specific CDV data connection. Requires ds_manage permission.
Inputs: connection_id (required). Returns: result
reset_dataset_cacheB
Reset the query result cache for a specific CDV dataset. Requires ds_manage permission.
Inputs: dataset_id (required). Returns: result
run_extractB
Run one or more CDV data extract jobs by their comma-separated IDs.
Inputs: extract_ids (required). Returns: result
run_jobB
Trigger a rerun of one or more CDV scheduled jobs. Provide exactly one of schedule_ids (comma-separated IDs) or schedule_names (comma-separated names).
Inputs: schedule_ids, schedule_names. Returns: result
set_gc_monitorB
Enable or disable GC monitoring on the CDV server.
Inputs: enabled (required). Returns: result
set_gc_statsB
Set GC debug flags on the CDV server. Requires sys_viewlogs permission.
Inputs: debug_flags (required). Returns: result
set_logger_levelC
Set the log level for a specific named logger. Requires sys_viewlogs permission. level must be one of: CRITICAL, DEBUG, ERROR, FATAL, INFO, WARN, WARNING.
Inputs: logger_name (required), level (required). Returns: result
set_log_levelA
Set the log level for the root logger. Requires sys_viewlogs permission. level must be one of: CRITICAL, DEBUG, ERROR, FATAL, INFO, WARN, WARNING.
Inputs: level (required). Returns: result
toggle_cprofileB
Toggle cProfile profiling on/off for a CDV server function. Requires sys_viewlogs permission. If profiling is already enabled, calling this disables it. strip_dirnames, print_callees, print_callers: 'yes' or 'no'.
Inputs: module, owner, func, strip_dirnames, +2 more. Returns: result
update_connectionC
Update an existing CDV data connection by its numeric ID.
Inputs: object_id (required), body (required). Returns: result
update_datasetC
Update an existing CDV dataset by its numeric ID.
Inputs: object_id (required), body (required). Returns: result
update_filter_associationC
Update an existing CDV filter association by its numeric ID.
Inputs: object_id (required), body (required). Returns: result
update_groupA
Update an existing CDV group by its numeric ID. Provide fields to change (e.g. name, users).
Inputs: object_id (required), body (required). Returns: result
update_roleC
Update an existing CDV role by its numeric ID.
Inputs: object_id (required), body (required). Returns: result
update_segmentC
Update an existing CDV segment by its numeric ID.
Inputs: object_id (required), body (required). Returns: result
update_userC
Update an existing CDV user by their numeric ID.
Inputs: object_id (required), body (required). Returns: result
update_visualC
Update an existing CDV visual by its numeric ID.
Inputs: object_id (required), body (required). Returns: result
update_workspaceC
Update an existing CDV workspace by its numeric ID.
Inputs: object_id (required), body (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 66 tools
Tools are mostly distinct, targeting different resources (connections, datasets, visuals, etc.). However, 'create_visual' and 'create_smart_visual' overlap in purpose, and 'query_dataapi' vs 'query_enhanced_data_api' could cause confusion. Also 'edit_user_profile' and 'update_user' have fuzzy boundaries.
Most tools follow a clear 'verb_noun' pattern (e.g., 'list_connections', 'delete_visual'). However, there are minor inconsistencies like 'edit_user_profile' instead of 'update_user_profile', and 'get_gc_monitor' vs 'get_gc_stats' (mixed underscores). Overall, the pattern is largely consistent.
With 66 tools, the server is quite heavy. While the toolset covers many administrative and data operations, the high count suggests some tools could be merged or removed without losing functionality. It's at the upper boundary of acceptable scope.
The toolset provides CRUD for most resources (connections, datasets, visuals, workspaces, users, groups, roles, segments). Notable gaps include lack of a tool to list all standalone chart visuals (only dashboards are listed) and no filter support for visuals. Export/import is limited to bulk migration. Overall, core workflows are covered.
Maintenance
Related MCP Connectors
Manage Chatbase agents, sources, conversations and help-desk tickets.
Query, explore, and manage your databases through natural conversation.
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Manage your Elocuenti AI sales agents, CRM, campaigns and analytics from Claude.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Databricks workspaces programmatically, providing comprehensive tools for cluster management, notebook operations, job orchestration, Unity Catalog data governance, user management, permissions control, and FinOps cost analytics.298 npmMIT

Tableau MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceEnables AI applications to integrate with Tableau through tools, resources, and prompts for querying data, exploring content, and retrieving visualizations from Tableau workbooks and datasources.33,264 npm372Apache 2.0- FlicenseNot gradedqualityDmaintenanceEnables AI agents to create and manage Kibana dashboards, Lens visualizations, and data views via the Kibana Saved Objects API. It allows for programmatically listing existing resources and assembling new visualizations into dashboards through natural language commands.-
- AlicenseNot gradedqualityCmaintenanceEnables LLMs to interact with Cloudera AI Workbench APIs for managing files, jobs, models, experiments, projects, and applications.8Apache 2.0