Skip to content

Commit a8a2cd9

Browse files
committed
feat: support specifying datasource ID in MCP question
1 parent 9decb91 commit a8a2cd9

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

backend/apps/chat/models/chat_model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ class McpQuestion(BaseModel):
329329
token: str = Body(description='token')
330330
stream: Optional[bool] = Body(description='是否流式输出,默认为true开启, 关闭false则返回JSON对象', default=True)
331331
lang: Optional[str] = Body(description='语言:zh-CN|en|ko-KR', default='zh-CN')
332-
datasource_id: Optional[int] = Body(description='数据源ID,仅当当前对话没有确定数据源时有效', default=None)
332+
datasource_id: Optional[int | str] = Body(description='数据源ID,仅当当前对话没有确定数据源时有效', default=None)
333333

334334

335335
class AxisObj(BaseModel):

backend/apps/mcp/mcp.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# Date: 2025/7/1
33
import json
44
from datetime import timedelta
5+
from typing import Optional
56

67
import jwt
78
from fastapi import HTTPException, status, APIRouter
@@ -113,8 +114,22 @@ async def mcp_start(session: SessionDep, chat: ChatStart):
113114
@router.post("/mcp_question", operation_id="mcp_question")
114115
async def mcp_question(session: SessionDep, chat: McpQuestion):
115116
session_user = get_user(session, chat.token)
116-
117-
mcp_chat = ChatMcp(token=chat.token, chat_id=chat.chat_id, question=chat.question, datasource_id=chat.datasource_id)
117+
ds_id: Optional[int] = None
118+
if chat.datasource_id:
119+
if isinstance(chat.datasource_id, str):
120+
if chat.datasource_id.strip() == "":
121+
ds_id = None
122+
else:
123+
try:
124+
ds_id = int(chat.datasource_id.strip())
125+
except ValueError:
126+
raise HTTPException(status_code=400, detail="Invalid datasource ID")
127+
elif isinstance(chat.datasource_id, int):
128+
ds_id = chat.datasource_id
129+
else:
130+
raise HTTPException(status_code=400, detail="Invalid datasource ID")
131+
132+
mcp_chat = ChatMcp(token=chat.token, chat_id=chat.chat_id, question=chat.question, datasource_id=ds_id)
118133

119134
return await question_answer_inner(session=session, current_user=session_user, request_question=mcp_chat,
120135
in_chat=False, stream=chat.stream)

0 commit comments

Comments
 (0)