mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
feat: mcp server
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -25,7 +25,7 @@ wlist = [
|
||||
"/mcp/message",
|
||||
"/datasource/list",
|
||||
"/system/aimodel/list",
|
||||
"/chat/question"
|
||||
"/chat/mcp_question"
|
||||
]
|
||||
|
||||
class WhitelistChecker:
|
||||
|
||||
+3
-3
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user