feat: mcp server

This commit is contained in:
junjun
2025-06-24 12:23:13 +08:00
parent 291b7a3716
commit 2a52bc3299
3 changed files with 12 additions and 6 deletions
+8 -2
View File
@@ -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
+1 -1
View File
@@ -25,7 +25,7 @@ wlist = [
"/mcp/message",
"/datasource/list",
"/system/aimodel/list",
"/chat/question"
"/chat/mcp_question"
]
class WhitelistChecker:
+3 -3
View File
@@ -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)