mcp-shell-server

by tumf
import os from typing import Optional class DirectoryManager: """ Manages directory validation and path operations for shell command execution. """ def validate_directory(self, directory: Optional[str]) -> None: """ Validate if the directory exists and is accessible. Args: directory (Optional[str]): Directory path to validate Raises: ValueError: If the directory doesn't exist, not absolute or is not accessible """ # make directory required if directory is None: raise ValueError("Directory is required") # verify directory is absolute path if not os.path.isabs(directory): raise ValueError(f"Directory must be an absolute path: {directory}") if not os.path.exists(directory): raise ValueError(f"Directory does not exist: {directory}") if not os.path.isdir(directory): raise ValueError(f"Not a directory: {directory}") if not os.access(directory, os.R_OK | os.X_OK): raise ValueError(f"Directory is not accessible: {directory}") def get_absolute_path(self, path: str, base_directory: Optional[str] = None) -> str: """ Get absolute path by joining base directory with path if path is relative. Args: path (str): The path to make absolute base_directory (Optional[str]): Base directory to join with relative paths Returns: str: Absolute path """ if os.path.isabs(path): return path if not base_directory: return os.path.abspath(path) return os.path.join(base_directory, path)