This is an automated email from the ASF dual-hosted git repository. kasiazjc pushed a commit to branch fix/column-select-saved-tab-label in repository https://gitbox.apache.org/repos/asf/superset.git
commit c8e658026c14307795d0f05d45e5501d607023cd Author: Amin Ghadersohi <[email protected]> AuthorDate: Thu May 14 23:44:06 2026 +0000 fix(mcp): create_dataset — optional schema, catalog support, event logging - Make schema optional in CreateDatasetRequest (matches CreateDatasetCommand and DatasetPostSchema which both allow schema=None for default-schema DBs) - Add catalog field to CreateDatasetRequest, forwarded conditionally to CreateDatasetCommand (mirrors create_virtual_dataset pattern) - Wrap command execution in event_logger.log_context for audit parity with create_virtual_dataset --- superset/mcp_service/dataset/schemas.py | 14 ++++++++++++-- superset/mcp_service/dataset/tool/create_dataset.py | 9 +++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/superset/mcp_service/dataset/schemas.py b/superset/mcp_service/dataset/schemas.py index 25ec182c1a9..d5fc3517402 100644 --- a/superset/mcp_service/dataset/schemas.py +++ b/superset/mcp_service/dataset/schemas.py @@ -333,13 +333,23 @@ class CreateDatasetRequest(BaseModel): ), ] schema: Annotated[ - str, - Field(description="Schema (namespace) where the table lives, e.g. 'public'"), + str | None, + Field( + default=None, + description="Schema where the table lives (optional).", + ), ] table_name: Annotated[ str, Field(description="Name of the physical table to register as a dataset"), ] + catalog: Annotated[ + str | None, + Field( + default=None, + description="Catalog where the table lives (optional).", + ), + ] owners: Annotated[ List[int] | None, Field( diff --git a/superset/mcp_service/dataset/tool/create_dataset.py b/superset/mcp_service/dataset/tool/create_dataset.py index 7d0d9ce4fa3..ad37c24e592 100644 --- a/superset/mcp_service/dataset/tool/create_dataset.py +++ b/superset/mcp_service/dataset/tool/create_dataset.py @@ -21,6 +21,7 @@ from typing import Any from fastmcp import Context from superset_core.mcp.decorators import tool, ToolAnnotations +from superset.extensions import event_logger from superset.mcp_service.dataset.schemas import ( CreateDatasetRequest, DatasetError, @@ -72,13 +73,17 @@ async def create_dataset( dataset_properties: dict[str, Any] = { "database": request.database_id, - "schema": request.schema, "table_name": request.table_name, } + if request.schema is not None: + dataset_properties["schema"] = request.schema + if request.catalog is not None: + dataset_properties["catalog"] = request.catalog if request.owners is not None: dataset_properties["owners"] = request.owners - dataset = CreateDatasetCommand(dataset_properties).run() + with event_logger.log_context(action="mcp.create_dataset.create"): + dataset = CreateDatasetCommand(dataset_properties).run() result = serialize_dataset_object(dataset) if result is None:
