diff --git a/backend/apps/chat/api/chat.py b/backend/apps/chat/api/chat.py index f79df6f5..a822b856 100644 --- a/backend/apps/chat/api/chat.py +++ b/backend/apps/chat/api/chat.py @@ -14,7 +14,7 @@ from apps.datasource.crud.datasource import get_table_schema from apps.datasource.models.datasource import CoreDatasource from apps.system.crud.user import get_user_info from apps.system.models.system_model import AiModelDetail -from common.core.deps import SessionDep, CurrentUser +from common.core.deps import SessionDep, CurrentUser, get_current_user router = APIRouter(tags=["Data Q&A"], prefix="/chat") @@ -68,6 +68,12 @@ async def start_chat(session: SessionDep, current_user: CurrentUser, create_chat ) +@router.post("/mcp_question", operation_id="mcp_question") +async def mcp_question(session: SessionDep, token: str, request_question: ChatQuestion): + user = await get_current_user(session, token) + return await stream_sql(session, user, request_question) + + @router.post("/question", operation_id="question") async def stream_sql(session: SessionDep, current_user: CurrentUser, request_question: ChatQuestion): """Stream SQL analysis results @@ -85,7 +91,7 @@ async def stream_sql(session: SessionDep, current_user: CurrentUser, request_que if not chat: raise HTTPException( status_code=400, - detail=f"Chat with id {request_question.chart_id} not found" + detail=f"Chat with id {request_question.chat_id} not found" ) # Get available datasource diff --git a/backend/common/utils/whitelist.py b/backend/common/utils/whitelist.py index f3543019..a8b0f42c 100644 --- a/backend/common/utils/whitelist.py +++ b/backend/common/utils/whitelist.py @@ -25,7 +25,7 @@ wlist = [ "/mcp/message", "/datasource/list", "/system/aimodel/list", - "/chat/question" + "/chat/mcp_question" ] class WhitelistChecker: diff --git a/backend/main.py b/backend/main.py index e468c859..a3daf538 100644 --- a/backend/main.py +++ b/backend/main.py @@ -15,6 +15,8 @@ from common.core.response_middleware import ResponseMiddleware, exception_handle from alembic.config import Config from alembic import command from fastapi_mcp import FastApiMCP + + # import sqlbot_xpack def run_migrations(): @@ -44,8 +46,6 @@ app = FastAPI( ) mcp_app = FastAPI() -mcp_app.add_middleware(TokenMiddleware) -mcp_app.include_router(api_router, prefix=settings.API_V1_STR) mcp = FastApiMCP( app, @@ -53,7 +53,7 @@ mcp = FastApiMCP( description="SQLBot MCP Server", describe_all_responses=True, describe_full_response_schema=True, - include_operations=["get_datasource_list", "get_model_list", "question"] + include_operations=["get_datasource_list", "get_model_list", "mcp_question"] ) mcp.mount(mcp_app)