You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ka...@apache.org on 2026/05/25 16:30:47 UTC
(superset) 02/08: fix(mcp): create_dataset — optional schema, catalog support, event logging
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 <am...@gmail.com>
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: