mcp-server-code-assist

by abhishekbhakat
Verified
  • src
  • mcp_server_code_assist
from abc import ABC, abstractmethod from pathlib import Path class BaseTools(ABC): def __init__(self, allowed_paths: list[str] | None = None): self.allowed_paths = allowed_paths or [] def validate_path(self, path: str | Path) -> Path: path = Path(path).resolve() if not self.allowed_paths or any(path.is_relative_to(Path(allowed).resolve()) for allowed in self.allowed_paths): return path raise ValueError(f"Path {path} is not in allowed paths: {self.allowed_paths}") @abstractmethod def is_valid_operation(self, path: Path) -> bool: """Validate if operation can be performed on path""" pass def handle_error(self, error: Exception, context: dict) -> None: """Handle operation errors with context""" error_type = type(error).__name__ error_msg = str(error) context_str = ", ".join(f"{k}={v}" for k, v in context.items()) raise type(error)(f"{error_type} in {self.__class__.__name__}: {error_msg} | Context: {context_str}")