feat: if tools are empty, auto-fetch and save

This commit is contained in:
Arley Daniel Peter 2025-05-17 16:34:01 -03:00 committed by GitHub
parent 2c7e5d0528
commit b619d88d4e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -32,6 +32,7 @@ from sqlalchemy.exc import SQLAlchemyError
from fastapi import HTTPException, status
from src.models.models import MCPServer
from src.schemas.schemas import MCPServerCreate
from src.utils.mcp_discovery import discover_mcp_tools
from typing import List, Optional
import uuid
import logging
@ -72,8 +73,16 @@ def create_mcp_server(db: Session, server: MCPServerCreate) -> MCPServer:
try:
# Convert tools to JSON serializable format
server_data = server.model_dump()
server_data["tools"] = [tool.model_dump() for tool in server.tools]
# Last edited by Arley Peter on 2025-05-17
supplied_tools = server_data.pop("tools", [])
if not supplied_tools:
discovered = discover_mcp_tools(server_data["config_json"])
print(f"🔍 Found {len(discovered)} tools.")
server_data["tools"] = discovered
else:
server_data["tools"] = [tool.model_dump() for tool in supplied_tools]
db_server = MCPServer(**server_data)
db.add(db_server)
db.commit()