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:

Reply via email to