superset_chart_create
Create visualizations in Apache Superset by specifying chart type, data source, and parameters to transform datasets into actionable insights.
Instructions
Create a new chart in Superset
Makes a request to the /api/v1/chart/ POST endpoint to create a new visualization.
Args: slice_name: Name/title of the chart datasource_id: ID of the dataset or SQL table datasource_type: Type of datasource ('table' for datasets, 'query' for SQL) viz_type: Visualization type (e.g., 'bar', 'line', 'pie', 'big_number', etc.) params: Visualization parameters including metrics, groupby, time_range, etc.
Returns: A dictionary with the created chart information including its ID
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| slice_name | Yes | ||
| datasource_id | Yes | ||
| datasource_type | Yes | ||
| viz_type | Yes | ||
| params | Yes |
Implementation Reference
- main.py:659-694 (handler)The main handler function for the 'superset_chart_create' tool. It constructs a payload from the input parameters and makes a POST request to Superset's /api/v1/chart/ endpoint to create a new chart. Includes decorators for registration (@mcp.tool()), authentication (@requires_auth), and error handling (@handle_api_errors). The docstring provides the input schema description.@mcp.tool() @requires_auth @handle_api_errors async def superset_chart_create( ctx: Context, slice_name: str, datasource_id: int, datasource_type: str, viz_type: str, params: Dict[str, Any], ) -> Dict[str, Any]: """ Create a new chart in Superset Makes a request to the /api/v1/chart/ POST endpoint to create a new visualization. Args: slice_name: Name/title of the chart datasource_id: ID of the dataset or SQL table datasource_type: Type of datasource ('table' for datasets, 'query' for SQL) viz_type: Visualization type (e.g., 'bar', 'line', 'pie', 'big_number', etc.) params: Visualization parameters including metrics, groupby, time_range, etc. Returns: A dictionary with the created chart information including its ID """ payload = { "slice_name": slice_name, "datasource_id": datasource_id, "datasource_type": datasource_type, "viz_type": viz_type, "params": json.dumps(params), } return await make_api_request(ctx, "post", "/api/v1/chart/", data=payload)