Files
adk_backend/app/routers/tools.py
2026-01-19 22:04:54 +08:00

44 lines
1.4 KiB
Python

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}