Skip to main content
Glama
file_tools.py3.28 kB
"""MCP tools for file management operations.""" from typing import Optional from ..config import check_and_get_audio_path from ..constants import SortBy from ..infrastructure import FileSystemRepository, MCPServer from ..models import FilePathSupportParams from ..services import FileService def create_file_tools(mcp: MCPServer) -> None: """Register file management tools with the MCP server. Args: ---- mcp: FastMCP server instance. """ # Initialize services audio_path = check_and_get_audio_path() file_repo = FileSystemRepository(audio_path) file_service = FileService(file_repo) @mcp.tool( description="Get the most recent audio file from the audio path. " "ONLY USE THIS IF THE USER ASKS FOR THE LATEST FILE." ) async def get_latest_audio() -> FilePathSupportParams: """Get the most recently modified audio file and returns its path with model support info. Supported formats: - Whisper: mp3, mp4, mpeg, mpga, m4a, wav, webm - GPT-4o: mp3, wav Returns detailed file information including size, format, and duration. """ return await file_service.get_latest_audio_file() @mcp.tool( description="List, filter, and sort audio files from the audio path. Supports regex pattern matching, " "filtering by metadata (size, duration, date, format), and sorting." ) async def list_audio_files( pattern: Optional[str] = None, min_size_bytes: Optional[int] = None, max_size_bytes: Optional[int] = None, min_duration_seconds: Optional[float] = None, max_duration_seconds: Optional[float] = None, min_modified_time: Optional[float] = None, max_modified_time: Optional[float] = None, format: Optional[str] = None, sort_by: SortBy = SortBy.NAME, reverse: bool = False, ) -> list[FilePathSupportParams]: """List, filter, and sort audio files in the AUDIO_FILES_PATH directory with comprehensive options. Supported formats: - Transcribe: flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm - Chat: mp3, wav Filtering options: - pattern: Regex pattern for file name/path matching - min/max_size_bytes: File size range in bytes - min/max_duration_seconds: Audio duration range in seconds - min/max_modified_time: File modification time range (Unix timestamps) - format: Specific audio format (e.g., 'mp3', 'wav') Sorting options: - sort_by: Field to sort by (name, size, duration, modified_time, format) - reverse: Set to true for descending order Returns detailed file information including size, format, duration, and transcription capabilities. """ return await file_service.list_audio_files( pattern=pattern, min_size_bytes=min_size_bytes, max_size_bytes=max_size_bytes, min_duration_seconds=min_duration_seconds, max_duration_seconds=max_duration_seconds, min_modified_time=min_modified_time, max_modified_time=max_modified_time, format_filter=format, sort_by=sort_by, reverse=reverse, )

Latest Blog Posts

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/arcaputo3/mcp-server-whisper'

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