from fastapi import APIRouter, Depends, HTTPException from typing import List, Dict from app.services.tool_service import ToolService, get_tool_service from app.models import MCPServerConfig router = APIRouter(prefix="/tools", tags=["tools"]) @router.get("/local") async def list_local_tools( service: ToolService = Depends(get_tool_service) ) -> List[str]: """List available local tools (scan 'tools/' directory).""" return service.get_local_tools() @router.get("/mcp", response_model=List[MCPServerConfig]) async def list_mcp_servers( service: ToolService = Depends(get_tool_service) ): """List configured MCP servers.""" return service.list_mcp_servers() @router.post("/mcp", response_model=MCPServerConfig) async def add_mcp_server( config: MCPServerConfig, service: ToolService = Depends(get_tool_service) ): """Register a new MCP server configuration.""" # Check if exists? Overwrite behavior is default in dict service.add_mcp_server(config) return config @router.delete("/mcp/{name}") async def remove_mcp_server( name: str, service: ToolService = Depends(get_tool_service) ): """Remove a configured MCP server.""" deleted = service.remove_mcp_server(name) if not deleted: raise HTTPException(status_code=404, detail=f"MCP Server '{name}' not found") return {"status": "deleted", "name": name}