Skip to main content
Glama

fs_stat

Retrieve file or directory statistics from remote servers via SSH to check permissions, size, and modification details for system monitoring and management.

Instructions

Gets file or directory statistics

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSSH session ID
pathYesPath to stat

Implementation Reference

  • Handler implementation for the fs_stat tool, responsible for getting file or directory statistics on the remote system using SFTP.
    export async function statFile(
      sessionId: string,
      path: string
    ): Promise<FileStatInfo> {
      logger.debug('Getting file stats', { sessionId, path });
      
      const session = sessionManager.getSession(sessionId);
      if (!session) {
        throw new Error(`Session ${sessionId} not found or expired`);
      }
      
      try {
        const stats = await session.sftp.stat(path);
        
        let type: FileStatInfo['type'] = 'other';
        if ((stats as any).isFile && (stats as any).isFile()) {
          type = 'file';
        } else if ((stats as any).isDirectory && (stats as any).isDirectory()) {
          type = 'directory';
        } else if ((stats as any).isSymbolicLink && (stats as any).isSymbolicLink()) {
          type = 'symlink';
        }
        
        const statInfo: FileStatInfo = {
          size: stats.size,
          mtime: new Date((stats as any).mtime ? (stats as any).mtime * 1000 : Date.now()),
          mode: stats.mode,
          type
        };
        
        logger.debug('File stats retrieved', { sessionId, path, type, size: stats.size });
        return statInfo;
      } catch (error) {
        logger.error('Failed to get file stats', { sessionId, path, error });
        throw wrapError(
          error,
          ErrorCode.EFS,
          `Failed to get stats for ${path}. Check if the path exists.`
        );
      }
    }
  • Input validation schema for the fs_stat tool parameters.
    export const FSStatSchema = z.object({
      sessionId: z.string().min(1),
      path: z.string().min(1)
    });
  • src/mcp.ts:440-445 (registration)
    Registration and tool call handler in the switch-case logic of the SSH MCP server, which parses the arguments and invokes statFile.
    case 'fs_stat': {
      const params = FSStatSchema.parse(args);
      const result = await statFile(params.sessionId, params.path);
      logger.info('Path stat', { sessionId: params.sessionId, path: params.path });
      return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
    }

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/oaslananka/mcp-ssh-tool'

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