feat(mcp): Add tool annotations for MCP directory compliance (#38641)

This commit is contained in:
Amin Ghadersohi
2026-03-17 03:09:25 +01:00
committed by GitHub
parent ca403dc45d
commit 1c8224f4c6
22 changed files with 216 additions and 40 deletions

View File

@@ -29,7 +29,7 @@ import logging
from fastmcp import Context
from sqlalchemy.exc import SQLAlchemyError
from superset_core.mcp.decorators import tool
from superset_core.mcp.decorators import tool, ToolAnnotations
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
from superset.exceptions import SupersetErrorException, SupersetSecurityException
@@ -43,7 +43,16 @@ from superset.mcp_service.utils.schema_utils import parse_request
logger = logging.getLogger(__name__)
@tool(tags=["mutate"])
@tool(
tags=["mutate"],
class_permission_name="SQLLab",
method_permission_name="write",
annotations=ToolAnnotations(
title="Save SQL query",
readOnlyHint=False,
destructiveHint=False,
),
)
@parse_request(SaveSqlQueryRequest)
async def save_sql_query(
request: SaveSqlQueryRequest, ctx: Context
@@ -129,7 +138,7 @@ async def save_sql_query(
except SQLAlchemyError as e:
from superset import db
db.session.rollback()
db.session.rollback() # pylint: disable=consider-using-transaction
await ctx.error(
"Failed to save SQL query: error=%s, database_id=%s"
% (str(e), request.database_id)