Spaces:
Paused
Paused
| from fastapi import APIRouter, HTTPException, Depends | |
| from typing import List, Optional, Dict, Any | |
| from pydantic import BaseModel | |
| from utils.auth_utils import get_current_user_id_from_jwt | |
| from utils.logger import logger | |
| from .mcp_service import mcp_service, MCPException | |
| router = APIRouter() | |
| class CustomMCPConnectionRequest(BaseModel): | |
| url: str | |
| config: Optional[Dict[str, Any]] = {} | |
| class CustomMCPConnectionResponse(BaseModel): | |
| success: bool | |
| qualified_name: str | |
| display_name: str | |
| tools: List[Dict[str, Any]] | |
| config: Dict[str, Any] | |
| url: str | |
| message: str | |
| class CustomMCPDiscoverRequest(BaseModel): | |
| type: str | |
| config: Dict[str, Any] | |
| async def discover_custom_mcp_tools(request: CustomMCPDiscoverRequest): | |
| try: | |
| result = await mcp_service.discover_custom_tools(request.type, request.config) | |
| return CustomMCPConnectionResponse( | |
| success=result.success, | |
| qualified_name=result.qualified_name, | |
| display_name=result.display_name, | |
| tools=result.tools, | |
| config=result.config, | |
| url=result.url, | |
| message=result.message | |
| ) | |
| except MCPException as e: | |
| logger.error(f"Error discovering custom MCP tools: {str(e)}") | |
| raise HTTPException(status_code=500, detail=str(e)) |