mirror of
https://github.com/apache/superset.git
synced 2026-04-19 08:04:53 +00:00
fix(mcp): restore select_columns filtering in list tools (#37213)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -137,17 +137,20 @@ async def list_charts(request: ListChartsRequest, ctx: Context) -> ChartList:
|
||||
% (count, total_pages)
|
||||
)
|
||||
|
||||
# Apply field filtering via serialization context
|
||||
# Use columns_requested from result (already resolved by ModelListCore)
|
||||
columns_to_filter = result.columns_requested
|
||||
await ctx.debug(
|
||||
"Applying field filtering via serialization context: select_columns=%s"
|
||||
% (columns_to_filter,)
|
||||
)
|
||||
filtered = result.model_dump(
|
||||
mode="json", context={"select_columns": columns_to_filter}
|
||||
)
|
||||
return ChartList.model_validate(filtered)
|
||||
# Apply field filtering via serialization context if select_columns specified
|
||||
# This triggers ChartInfo._filter_fields_by_context for each chart
|
||||
if request.select_columns:
|
||||
await ctx.debug(
|
||||
"Applying field filtering via serialization context: select_columns=%s"
|
||||
% (request.select_columns,)
|
||||
)
|
||||
# Return dict with context - FastMCP handles serialization
|
||||
return result.model_dump(
|
||||
mode="json", context={"select_columns": request.select_columns}
|
||||
)
|
||||
|
||||
# No filtering - return full result as dict
|
||||
return result.model_dump(mode="json")
|
||||
except Exception as e:
|
||||
await ctx.error("Failed to list charts: %s" % (str(e),))
|
||||
raise
|
||||
|
||||
@@ -139,14 +139,17 @@ async def list_dashboards(
|
||||
% (count, total_pages)
|
||||
)
|
||||
|
||||
# Apply field filtering via serialization context
|
||||
# Use columns_requested from result (already resolved by ModelListCore)
|
||||
columns_to_filter = result.columns_requested
|
||||
await ctx.debug(
|
||||
"Applying field filtering via serialization context: select_columns=%s"
|
||||
% (columns_to_filter,)
|
||||
)
|
||||
filtered = result.model_dump(
|
||||
mode="json", context={"select_columns": columns_to_filter}
|
||||
)
|
||||
return DashboardList.model_validate(filtered)
|
||||
# Apply field filtering via serialization context if select_columns specified
|
||||
# This triggers DashboardInfo._filter_fields_by_context for each dashboard
|
||||
if request.select_columns:
|
||||
await ctx.debug(
|
||||
"Applying field filtering via serialization context: select_columns=%s"
|
||||
% (request.select_columns,)
|
||||
)
|
||||
# Return dict with context - FastMCP handles serialization
|
||||
return result.model_dump(
|
||||
mode="json", context={"select_columns": request.select_columns}
|
||||
)
|
||||
|
||||
# No filtering - return full result as dict
|
||||
return result.model_dump(mode="json")
|
||||
|
||||
@@ -148,17 +148,20 @@ async def list_datasets(request: ListDatasetsRequest, ctx: Context) -> DatasetLi
|
||||
)
|
||||
)
|
||||
|
||||
# Apply field filtering via serialization context
|
||||
# Use columns_requested from result (already resolved by ModelListCore)
|
||||
columns_to_filter = result.columns_requested
|
||||
await ctx.debug(
|
||||
"Applying field filtering via serialization context: select_columns=%s"
|
||||
% (columns_to_filter,)
|
||||
)
|
||||
filtered = result.model_dump(
|
||||
mode="json", context={"select_columns": columns_to_filter}
|
||||
)
|
||||
return DatasetList.model_validate(filtered)
|
||||
# Apply field filtering via serialization context if select_columns specified
|
||||
# This triggers DatasetInfo._filter_fields_by_context for each dataset
|
||||
if request.select_columns:
|
||||
await ctx.debug(
|
||||
"Applying field filtering via serialization context: select_columns=%s"
|
||||
% (request.select_columns,)
|
||||
)
|
||||
# Return dict with context - FastMCP handles serialization
|
||||
return result.model_dump(
|
||||
mode="json", context={"select_columns": request.select_columns}
|
||||
)
|
||||
|
||||
# No filtering - return full result as dict
|
||||
return result.model_dump(mode="json")
|
||||
|
||||
except Exception as e:
|
||||
await ctx.error(
|
||||
|
||||
Reference in New Issue
Block a user