Skip to content

Commit 2a74b4d

Browse files
committed
feat: mcp
1 parent 0f63416 commit 2a74b4d

File tree

4 files changed

+34
-21
lines changed

4 files changed

+34
-21
lines changed

backend/apps/chat/api/chat.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ async def start_chat(session: SessionDep, current_user: CurrentUser, create_chat
6868
)
6969

7070

71-
@router.post("/question")
71+
@router.post("/question", operation_id="question")
7272
async def stream_sql(session: SessionDep, current_user: CurrentUser, request_question: ChatQuestion):
7373
"""Stream SQL analysis results
7474

backend/apps/system/api/aimodel.py

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from datetime import datetime
21
from fastapi import APIRouter
3-
from sqlmodel import select
2+
from sqlmodel import select
3+
44
from apps.system.models.system_model import AiModelDetail
55
from apps.system.schemas.system_schema import model_status
66
from common.core.deps import SessionDep
@@ -13,9 +13,9 @@
1313

1414
@router.get("/pager/{pageNum}/{pageSize}", response_model=PaginatedResponse[AiModelDetail])
1515
async def pager(
16-
session: SessionDep,
17-
pageNum: int,
18-
pageSize: int
16+
session: SessionDep,
17+
pageNum: int,
18+
pageSize: int
1919
):
2020
pagination = PaginationParams(page=pageNum, size=pageSize)
2121
paginator = Paginator(session)
@@ -24,30 +24,33 @@ async def pager(
2424
model=AiModelDetail,
2525
pagination=pagination,
2626
**filters)
27-
27+
28+
2829
@router.get("/{id}", response_model=AiModelDetail)
2930
async def get_model_by_id(
30-
session: SessionDep,
31-
id: int
31+
session: SessionDep,
32+
id: int
3233
):
3334
term = session.get(AiModelDetail, id)
3435
return term
35-
36+
37+
3638
@router.post("", response_model=AiModelDetail)
3739
async def add_model(
38-
session: SessionDep,
39-
creator: AiModelDetail
40+
session: SessionDep,
41+
creator: AiModelDetail
4042
):
4143
data = AiModelDetail.model_validate(creator)
4244
data.create_time = get_timestamp()
4345
session.add(data)
4446
session.commit()
4547
return creator
4648

49+
4750
@router.put("", response_model=AiModelDetail)
4851
async def update_terminology(
49-
session: SessionDep,
50-
model: AiModelDetail
52+
session: SessionDep,
53+
model: AiModelDetail
5154
):
5255
model.id = int(model.id)
5356
term = session.exec(select(AiModelDetail).where(AiModelDetail.id == model.id)).first()
@@ -58,18 +61,19 @@ async def update_terminology(
5861
session.commit()
5962
return model
6063

64+
6165
@router.delete("/{id}", response_model=AiModelDetail)
6266
async def delete_terminology(
63-
session: SessionDep,
64-
id: int
67+
session: SessionDep,
68+
id: int
6569
):
6670
term = session.exec(select(AiModelDetail).where(AiModelDetail.id == id)).first()
6771
session.delete(term)
6872
session.commit()
6973
return {
7074
"message": f"AiModel with ID {id} deleted successfully."
7175
}
72-
76+
7377

7478
@router.patch("/status", response_model=dict)
7579
async def status(session: SessionDep, dto: model_status):
@@ -83,4 +87,9 @@ async def status(session: SessionDep, dto: model_status):
8387
term.status = status
8488
session.add(term)
8589
session.commit()
86-
return {"message": f"AiModel with IDs {ids} updated successfully."}
90+
return {"message": f"AiModel with IDs {ids} updated successfully."}
91+
92+
93+
@router.get("/list", operation_id="get_model_list")
94+
async def get_model_list(session: SessionDep):
95+
return session.query(AiModelDetail).all()

backend/common/utils/whitelist.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@
2222
"*.eot",
2323
"*.otf",
2424
"/mcp",
25-
"/mcp/message"
25+
"/mcp/message",
26+
"/datasource/list",
27+
"/system/aimodel/list",
28+
"/chat/question"
2629
]
2730

2831
class WhitelistChecker:

backend/main.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def custom_generate_unique_id(route: APIRoute) -> str:
4949
app,
5050
name="SQLBot MCP Server",
5151
description="SQLBot MCP Server",
52-
include_operations=["get_datasource_list"]
52+
include_operations=["get_datasource_list", "get_model_list", "question"]
5353
)
5454

5555
mcp.mount(mcp_app)
@@ -76,7 +76,7 @@ def custom_generate_unique_id(route: APIRoute) -> str:
7676
if not os.path.exists(frontend_dist):
7777
logging.warning(f"The front-end build directory does not exist: {frontend_dist}")
7878
logging.warning("Please make sure you have built the front-end project")
79-
79+
8080
else:
8181

8282
@app.get("/", include_in_schema=False)
@@ -92,3 +92,4 @@ async def read_index():
9292
import uvicorn
9393

9494
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)
95+
# uvicorn.run("main:mcp_app", host="0.0.0.0", port=8001) # mcp server

0 commit comments

Comments
 (0)