fast_get_directory_tree
Generate a visual directory tree structure from a specified path, with configurable depth, hidden file visibility, and file inclusion options.
Instructions
Gets the directory tree structure
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Root directory path | |
| max_depth | No | Maximum depth | |
| show_hidden | No | Show hidden files | |
| include_files | No | Include files in the tree |
Implementation Reference
- api/server.ts:765-828 (handler)The main handler function for 'fast_get_directory_tree' that recursively builds a directory tree structure up to the specified max_depth, filtering hidden files and excluded paths, and optionally including files.async function handleGetDirectoryTree(args: any) { const { path: rootPath, max_depth = 3, show_hidden = false, include_files = true } = args; const safePath_resolved = safePath(rootPath); async function buildTree(currentPath: string, currentDepth: number): Promise<any> { if (currentDepth > max_depth) return null; try { const stats = await fs.stat(currentPath); const name = path.basename(currentPath); if (!show_hidden && name.startsWith('.')) return null; if (shouldExcludePath(currentPath)) return null; const node: any = { name: name, path: currentPath, type: stats.isDirectory() ? 'directory' : 'file', size: stats.size, size_readable: formatSize(stats.size), modified: stats.mtime.toISOString() }; if (stats.isDirectory()) { node.children = []; try { const entries = await fs.readdir(currentPath, { withFileTypes: true }); for (const entry of entries) { const childPath = path.join(currentPath, entry.name); if (entry.isDirectory()) { const childNode = await buildTree(childPath, currentDepth + 1); if (childNode) node.children.push(childNode); } else if (include_files) { const childNode = await buildTree(childPath, currentDepth + 1); if (childNode) node.children.push(childNode); } } } catch { // 권한 없는 디렉토리 node.error = 'Access denied'; } } return node; } catch { return null; } } const tree = await buildTree(safePath_resolved, 0); return { tree: tree, root_path: safePath_resolved, max_depth: max_depth, show_hidden: show_hidden, include_files: include_files, timestamp: new Date().toISOString() }; }
- api/server.ts:196-205 (schema)Input schema defining the parameters for the fast_get_directory_tree tool: path (required), max_depth, show_hidden, include_files.inputSchema: { type: 'object', properties: { path: { type: 'string', description: '루트 디렉토리 경로' }, max_depth: { type: 'number', description: '최대 깊이', default: 3 }, show_hidden: { type: 'boolean', description: '숨김 파일 표시', default: false }, include_files: { type: 'boolean', description: '파일 포함', default: true } }, required: ['path'] }
- api/server.ts:193-206 (registration)Registration of the fast_get_directory_tree tool in the MCP_TOOLS array, including name, description, and input schema.{ name: 'fast_get_directory_tree', description: '디렉토리 트리 구조를 가져옵니다', inputSchema: { type: 'object', properties: { path: { type: 'string', description: '루트 디렉토리 경로' }, max_depth: { type: 'number', description: '최대 깊이', default: 3 }, show_hidden: { type: 'boolean', description: '숨김 파일 표시', default: false }, include_files: { type: 'boolean', description: '파일 포함', default: true } }, required: ['path'] } },
- api/server.ts:341-343 (registration)Dispatch registration in the switch statement for tools/call method, calling the handleGetDirectoryTree handler.case 'fast_get_directory_tree': result = await handleGetDirectoryTree(args); break;