Skip to content

Commit a13f8db

Browse files
committed
feat: MCP support get third-part system datasource
1 parent 3aec62c commit a13f8db

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

backend/apps/chat/models/chat_model.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,3 +258,9 @@ class ExcelData(BaseModel):
258258
axis: list[AxisObj] = []
259259
data: list[dict] = []
260260
name: str = 'Excel'
261+
262+
263+
class McpAssistant(BaseModel):
264+
question: str = Body(description='用户提问')
265+
url: str = Body(description='第三方数据接口')
266+
authorization: str = Body(description='第三方接口凭证')

backend/apps/mcp/mcp.py

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Author: Junjun
22
# Date: 2025/7/1
3-
3+
import json
44
from datetime import timedelta
55

66
import jwt
@@ -12,13 +12,13 @@
1212
from sqlmodel import select
1313

1414
from apps.chat.api.chat import create_chat
15-
from apps.chat.models.chat_model import ChatMcp, CreateChat, ChatStart, McpQuestion
15+
from apps.chat.models.chat_model import ChatMcp, CreateChat, ChatStart, McpQuestion, McpAssistant, ChatQuestion
1616
from apps.chat.task.llm import LLMService
1717
from apps.system.crud.user import authenticate
1818
from apps.system.crud.user import get_db_user
1919
from apps.system.models.system_model import UserWsModel
2020
from apps.system.models.user import UserModel
21-
from apps.system.schemas.system_schema import BaseUserDTO
21+
from apps.system.schemas.system_schema import BaseUserDTO, AssistantHeader
2222
from apps.system.schemas.system_schema import UserInfoDTO
2323
from common.core import security
2424
from common.core.config import settings
@@ -111,3 +111,29 @@ async def mcp_question(session: SessionDep, chat: McpQuestion):
111111
llm_service.init_record()
112112

113113
return StreamingResponse(llm_service.run_task(False), media_type="text/event-stream")
114+
115+
116+
@router.post("/mcp_assistant", operation_id="mcp_assistant")
117+
async def mcp_assistant(session: SessionDep, chat: McpAssistant):
118+
session_user = BaseUserDTO(**{
119+
"id": -1, "account": 'sqlbot-mcp-assistant', "oid": 1, "assistant_id": -1, "password": '', "language": "zh-CN"
120+
})
121+
# session_user: UserModel = get_db_user(session=session, user_id=1)
122+
# session_user.oid = 1
123+
c = create_chat(session, session_user, CreateChat(origin=1), False)
124+
125+
# build assistant param
126+
configuration = {"endpoint": chat.url}
127+
# authorization = [{"key": "x-de-token",
128+
# "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEsIm9pZCI6MSwiZXhwIjoxNzU4NTEyMDA2fQ.3NR-pgnADLdXZtI3dXX5-LuxfGYRvYD9kkr2de7KRP0",
129+
# "target": "header"}]
130+
mcp_assistant_header = AssistantHeader(id=1, name='mcp_assist', domain='', type=1,
131+
configuration=json.dumps(configuration),
132+
certificate=chat.authorization)
133+
134+
# assistant question
135+
mcp_chat = ChatQuestion(chat_id=c.id, question=chat.question)
136+
# ask
137+
llm_service = await LLMService.create(session_user, mcp_chat, mcp_assistant_header)
138+
llm_service.init_record()
139+
return llm_service.run_task(False)

0 commit comments

Comments
 (0)