diff --git a/superset/mcp_service/explore/tool/generate_explore_link.py b/superset/mcp_service/explore/tool/generate_explore_link.py index 611659792c1..a2deefbb272 100644 --- a/superset/mcp_service/explore/tool/generate_explore_link.py +++ b/superset/mcp_service/explore/tool/generate_explore_link.py @@ -94,6 +94,11 @@ async def generate_explore_link( # Map config to form_data using shared utilities form_data = map_config_to_form_data(request.config) + # Add datasource to form_data for consistency with generate_chart + # Only set if not already present to avoid overwriting + if "datasource" not in form_data: + form_data["datasource"] = f"{request.dataset_id}__table" + await ctx.debug( "Form data generated with keys: %s, has_viz_type=%s, has_datasource=%s" % ( diff --git a/tests/unit_tests/mcp_service/explore/tool/test_generate_explore_link.py b/tests/unit_tests/mcp_service/explore/tool/test_generate_explore_link.py index 0769844538e..04a249cd9fa 100644 --- a/tests/unit_tests/mcp_service/explore/tool/test_generate_explore_link.py +++ b/tests/unit_tests/mcp_service/explore/tool/test_generate_explore_link.py @@ -683,3 +683,5 @@ class TestGenerateExploreLink: assert isinstance(result.data["form_data"], dict) assert result.data["form_data"].get("viz_type") == "echarts_timeseries_line" assert result.data["form_data"].get("x_axis") == "date" + # Verify datasource field format: "{dataset_id}__table" + assert result.data["form_data"].get("datasource") == "1__table"