Skip to main content
Glama

folder-structure

Visualize directory structures with customizable depth to analyze and organize project folders effectively within the CodeAnalysis MCP Server environment.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
depthNoDepth of folders to show
pathNoRelative path to the directory.

Implementation Reference

  • Handler function for the 'folder-structure' tool. Resolves the directory path, uses 'find' and 'awk' commands to list directories up to the specified depth, filters them, formats the response, and handles errors.
    async ({ path, depth }) => { try { const dirPath = resolve(process.cwd(), path); if (!existsSync(dirPath)) { throw new Error(`Directory not found: ${path}`); } const command = `find ${dirPath} -type d | sort | head -n 100 | awk 'BEGIN {FS="/"}{for(i=1;i<=NF;i++){if(i==NF){printf("%s\\n", $i)}else{printf("%s/", $i)}}}'`; let dirs = execSync(command, { encoding: "utf-8" }) .split("\n") .filter(Boolean); // Filter by depth dirs = dirs.filter((dir) => { const segments = dir.split("/"); return segments.length <= depth; }); const result = createSuccessResponse( { path, depth, count: dirs.length, directories: dirs, }, "folder-structure" ); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; } catch (error) { return { content: [ { type: "text", text: JSON.stringify( createErrorResponse( error instanceof Error ? error.message : String(error), "folder-structure" ), null, 2 ), }, ], isError: true, }; } }
  • Zod schema defining input parameters: 'path' (string, default '.') and 'depth' (number, default 2).
    { path: z.string().default(".").describe("Relative path to the directory"), depth: z.number().default(2).describe("Depth of folders to show"), },
  • Registers the 'folder-structure' tool on the MCP server using server.tool(), including schema and handler.
    server.tool( "folder-structure", { path: z.string().default(".").describe("Relative path to the directory"), depth: z.number().default(2).describe("Depth of folders to show"), }, async ({ path, depth }) => { try { const dirPath = resolve(process.cwd(), path); if (!existsSync(dirPath)) { throw new Error(`Directory not found: ${path}`); } const command = `find ${dirPath} -type d | sort | head -n 100 | awk 'BEGIN {FS="/"}{for(i=1;i<=NF;i++){if(i==NF){printf("%s\\n", $i)}else{printf("%s/", $i)}}}'`; let dirs = execSync(command, { encoding: "utf-8" }) .split("\n") .filter(Boolean); // Filter by depth dirs = dirs.filter((dir) => { const segments = dir.split("/"); return segments.length <= depth; }); const result = createSuccessResponse( { path, depth, count: dirs.length, directories: dirs, }, "folder-structure" ); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; } catch (error) { return { content: [ { type: "text", text: JSON.stringify( createErrorResponse( error instanceof Error ? error.message : String(error), "folder-structure" ), null, 2 ), }, ], isError: true, }; } } );

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/0xjcf/MCP_CodeAnalysis'

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