get_file_info
Retrieve detailed information about a file or directory within the MCP File System by specifying its path. Streamline file management and access control queries.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to file or directory |
Implementation Reference
- src/index.ts:154-170 (handler)Executes fs.stat on the validated path and returns structured file information including type, size, timestamps, and permissions as JSON.async ({ path: filePath }: { path: string }) => { try { const validPath = validatePath(filePath); const stats = await fs.stat(validPath); const info = { type: stats.isDirectory() ? 'directory' : 'file', size: stats.size, created: stats.birthtime, modified: stats.mtime, accessed: stats.atime, permissions: stats.mode.toString(8) }; return { content: [{ type: 'text', text: JSON.stringify(info, null, 2) }] }; } catch (error: any) { return { content: [{ type: 'text', text: `Error getting file info: ${error.message}` }] }; } }
- src/index.ts:151-170 (registration)Full registration of the get_file_info tool, specifying the name, Zod input schema, and inline asynchronous handler function.server.tool( "get_file_info", { path: z.string().describe("Path to file or directory") }, async ({ path: filePath }: { path: string }) => { try { const validPath = validatePath(filePath); const stats = await fs.stat(validPath); const info = { type: stats.isDirectory() ? 'directory' : 'file', size: stats.size, created: stats.birthtime, modified: stats.mtime, accessed: stats.atime, permissions: stats.mode.toString(8) }; return { content: [{ type: 'text', text: JSON.stringify(info, null, 2) }] }; } catch (error: any) { return { content: [{ type: 'text', text: `Error getting file info: ${error.message}` }] }; } }
- src/index.ts:153-153 (schema)Zod input schema for the tool, defining a required 'path' parameter as a string with description.{ path: z.string().describe("Path to file or directory") },
- src/index.ts:14-20 (helper)Helper function used by the handler (and other tools) to resolve and validate the file path is within allowed directories, throwing an error if not.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; }