Skip to main content
Glama

Agent Knowledge MCP

security.py1.77 kB
""" Security utilities for file system operations. """ from pathlib import Path from typing import Union # Global variable to store allowed base directory _ALLOWED_BASE_DIR = None class SecurityError(Exception): """Custom exception for security-related errors.""" pass def init_security(allowed_base_dir: Union[str, Path]) -> None: """Initialize security with allowed base directory.""" global _ALLOWED_BASE_DIR _ALLOWED_BASE_DIR = Path(allowed_base_dir).resolve() def get_allowed_base_dir() -> Path: """Get the current allowed base directory.""" if _ALLOWED_BASE_DIR is None: raise ValueError("Security not initialized. Call init_security() first.") return _ALLOWED_BASE_DIR def set_allowed_base_dir(allowed_base_dir: Union[str, Path]) -> Path: """Set a new allowed base directory.""" global _ALLOWED_BASE_DIR old_dir = _ALLOWED_BASE_DIR _ALLOWED_BASE_DIR = Path(allowed_base_dir).resolve() return old_dir def is_path_allowed(file_path: str) -> bool: """Check if the given path is within the allowed base directory.""" try: resolved_path = Path(file_path).resolve() return resolved_path.is_relative_to(_ALLOWED_BASE_DIR) except Exception: return False def get_safe_path(file_path: str) -> Path: """Get a safe path within the allowed directory.""" if not is_path_allowed(file_path): raise SecurityError(f"Access denied: Path '{file_path}' is outside allowed directory '{_ALLOWED_BASE_DIR}'") return Path(file_path).resolve() def validate_path(file_path: str) -> Path: """Validate and return a safe path within the allowed directory. Alias for get_safe_path for backward compatibility. """ return get_safe_path(file_path)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/itshare4u/AgentKnowledgeMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server