Skip to main content
Glama
Wayazi
by Wayazi

list_directory

Lists the contents of a specified directory path using the MCP File System, enabling easy directory management and file organization.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYesDirectory path to list

Implementation Reference

  • The handler function for the 'list_directory' tool. It validates the input directory path, reads the directory contents using fs.readdir with file types, formats each entry indicating if it's a directory or file, joins them with newlines, and returns as text content in MCP format. Errors are caught and returned as text.
    async ({ path: dirPath }: { path: string }) => { try { const validPath = validatePath(dirPath); const entries = await fs.readdir(validPath, { withFileTypes: true }); const listing = entries.map(entry => `[${entry.isDirectory() ? 'DIR' : 'FILE'}] ${entry.name}` ).join('\n'); return { content: [{ type: 'text', text: listing }] }; } catch (error: any) { return { content: [{ type: 'text', text: `Error listing directory: ${error.message}` }] }; } }
  • src/index.ts:108-123 (registration)
    Registration of the 'list_directory' tool using McpServer.tool(), including the tool name, input schema (path: string), and inline handler function.
    server.tool( "list_directory", { path: z.string().describe("Directory path to list") }, async ({ path: dirPath }: { path: string }) => { try { const validPath = validatePath(dirPath); const entries = await fs.readdir(validPath, { withFileTypes: true }); const listing = entries.map(entry => `[${entry.isDirectory() ? 'DIR' : 'FILE'}] ${entry.name}` ).join('\n'); return { content: [{ type: 'text', text: listing }] }; } catch (error: any) { return { content: [{ type: 'text', text: `Error listing directory: ${error.message}` }] }; } } );
  • Helper function used by the 'list_directory' handler (and other tools) to resolve and validate that the provided path is within one of the allowed directories specified via command-line arguments, preventing access outside sandbox.
    function validatePath(filePath: string): string { const absolutePath = path.resolve(filePath); if (!allowedDirs.some(dir => absolutePath.startsWith(path.resolve(dir)))) { throw new Error(`Access denied: ${filePath} is not within allowed directories`); } return absolutePath; }

Other Tools

Related Tools

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/Wayazi/mcp_file_system'

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