Skip to main content
Glama

get_file_info

Retrieve comprehensive metadata about files or directories, including size, timestamps, permissions, type, and text file details like line count and append position. Works within allowed paths; use absolute paths for reliability.

Instructions

Retrieve detailed metadata about a file or directory including: - size - creation time - last modified time - permissions - type - lineCount (for text files) - lastLine (zero-indexed number of last line, for text files) - appendPosition (line number for appending, for text files) Only works within allowed directories. IMPORTANT: Always use absolute paths for reliability. Paths are automatically normalized regardless of slash direction. Relative paths may fail as they depend on the current working directory. Tilde paths (~/...) might not work in all contexts. Unless the user explicitly asks for relative paths, use absolute paths. This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYes

Implementation Reference

  • Main handler function that executes the get_file_info tool: parses input schema, calls helper getFileInfo, formats output as key-value text.
    export async function handleGetFileInfo(args: unknown): Promise<ServerResult> { try { const parsed = GetFileInfoArgsSchema.parse(args); const info = await getFileInfo(parsed.path); return { content: [{ type: "text", text: Object.entries(info) .map(([key, value]) => `${key}: ${value}`) .join('\n') }], }; } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); return createErrorResponse(errorMessage); } }
  • Zod schema for validating get_file_info tool input: requires 'path' string.
    export const GetFileInfoArgsSchema = z.object({ path: z.string(), });
  • Registration/dispatch: Maps 'get_file_info' tool calls to handleGetFileInfo handler in the CallToolRequest switch statement.
    case "get_file_info": result = await handlers.handleGetFileInfo(args); break;
  • src/server.ts:622-643 (registration)
    Tool registration in ListToolsRequest handler: defines name, description, input schema for get_file_info.
    name: "get_file_info", description: ` Retrieve detailed metadata about a file or directory including: - size - creation time - last modified time - permissions - type - lineCount (for text files) - lastLine (zero-indexed number of last line, for text files) - appendPosition (line number for appending, for text files) Only works within allowed directories. ${PATH_GUIDANCE} ${CMD_PREFIX_DESCRIPTION}`, inputSchema: zodToJsonSchema(GetFileInfoArgsSchema), annotations: { title: "Get File Information", readOnlyHint: true, }, },
  • Core helper function that retrieves file stats (size, times, type, permissions) and optionally line count for text files.
    export async function getFileInfo(filePath: string): Promise<Record<string, any>> { const validPath = await validatePath(filePath); const stats = await fs.stat(validPath); // Basic file info const info: Record<string, any> = { size: stats.size, created: stats.birthtime, modified: stats.mtime, accessed: stats.atime, isDirectory: stats.isDirectory(), isFile: stats.isFile(), permissions: stats.mode.toString(8).slice(-3), }; // For text files that aren't too large, also count lines if (stats.isFile() && stats.size < FILE_SIZE_LIMITS.LINE_COUNT_LIMIT) { try { // Get MIME type information const { mimeType, isImage, isPdf } = await getMimeTypeInfo(validPath); // Only count lines for non-image, likely text files if (!isImage && !isPdf) { const content = await fs.readFile(validPath, 'utf8'); const lineCount = countLines(content); info.lineCount = lineCount; info.lastLine = lineCount - 1; // Zero-indexed last line info.appendPosition = lineCount; // Position to append at end } } catch (error) { // If reading fails, just skip the line count // This could happen for binary files or very large files } } return info; }

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/wonderwhy-er/DesktopCommanderMCP'

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