Skip to main content
Glama

liara_list_ftp_accesses

Retrieve FTP access records for a specific disk in your Liara cloud application to monitor file transfer activities and manage permissions.

Instructions

List FTP accesses for a disk

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
appNameYesThe name of the app
diskNameYesThe name of the disk
pageNoPage number (1-based)
perPageNoNumber of items per page
limitNoAlternative to perPage: maximum number of items to return
offsetNoAlternative to page: number of items to skip

Implementation Reference

  • The core handler function that implements the tool logic: lists FTP accesses for a specific disk in a Liara project by querying the API.
    export async function listFtpAccesses(
        client: LiaraClient,
        appName: string,
        diskName: string,
        pagination?: PaginationOptions
    ): Promise<FtpAccess[]> {
        validateAppName(appName);
        validateRequired(diskName, 'Disk name');
        const params = paginationToParams(pagination);
        
        return await client.get<FtpAccess[]>(
            `/v1/projects/${appName}/disks/${diskName}/ftp`,
            params
        );
    }
  • TypeScript interface defining the input/output schema for FTP access objects returned by liara_list_ftp_accesses.
    export interface FtpAccess {
        _id?: string;
        hostname: string;
        port: number;
        username: string;
        password: string;
    }
  • Imports and supporting utilities used by the FTP accesses handler, including client, types, and validation functions.
    import { LiaraClient } from '../api/client.js';
    import {
        Disk,
        CreateDiskRequest,
        FtpAccess,
        PaginationOptions,
        paginationToParams,
    } from '../api/types.js';
    import { validateAppName, validateRequired } from '../utils/errors.js';
    
    /**
     * List disks for a project
     */
    export async function listDisks(
        client: LiaraClient,
        appName: string,
        pagination?: PaginationOptions
    ): Promise<Disk[]> {
        validateAppName(appName);
        // Disks are included in project details, but we can still apply pagination client-side if needed
        const project = await client.get<any>(`/v1/projects/${appName}`);
        const disks = project.disks || [];
        
        // Apply client-side pagination if needed (since disks come from project details)
        if (pagination) {
            const page = pagination.page || 1;
            const perPage = pagination.perPage || pagination.limit || 100;
            const start = (page - 1) * perPage;
            const end = start + perPage;
            return disks.slice(start, end);
        }
        
        return disks;
    }
    
    /**
     * Get details of a specific disk
     */
    export async function getDisk(
        client: LiaraClient,
        appName: string,
        diskName: string
    ): Promise<Disk> {
        validateAppName(appName);
        validateRequired(diskName, 'Disk name');
        
        return await client.get<Disk>(`/v1/projects/${appName}/disks/${diskName}`);
    }
    
    /**
     * Create a new disk for a project
     */
    export async function createDisk(
        client: LiaraClient,
        appName: string,
        request: CreateDiskRequest
    ): Promise<Disk> {
        validateAppName(appName);
        validateRequired(request.name, 'Disk name');
        validateRequired(request.size, 'Disk size');
        validateRequired(request.mountPath, 'Mount path');
    
        if (request.size <= 0) {
            throw new Error('Disk size must be greater than 0');
        }
    
        return await client.post<Disk>(
            `/v1/projects/${appName}/disks`,
            request
        );
    }
    
    /**
     * Delete a disk
     */
    export async function deleteDisk(
        client: LiaraClient,
        appName: string,
        diskName: string
    ): Promise<void> {
        validateAppName(appName);
        validateRequired(diskName, 'Disk name');
        await client.delete(`/v1/projects/${appName}/disks/${diskName}`);
    }
    
    /**
     * Create FTP access for a disk
     */
    export async function createFtpAccess(
        client: LiaraClient,
        appName: string,
        diskName: string
    ): Promise<FtpAccess> {
        validateAppName(appName);
        validateRequired(diskName, 'Disk name');
        
        return await client.post<FtpAccess>(
            `/v1/projects/${appName}/disks/${diskName}/ftp`
        );
    }
    
    /**
     * List FTP accesses for a disk
     */
    export async function listFtpAccesses(
        client: LiaraClient,
        appName: string,
        diskName: string,
        pagination?: PaginationOptions
    ): Promise<FtpAccess[]> {
        validateAppName(appName);
        validateRequired(diskName, 'Disk name');
        const params = paginationToParams(pagination);
        
        return await client.get<FtpAccess[]>(
            `/v1/projects/${appName}/disks/${diskName}/ftp`,
            params
        );
    }
Install Server

Other Tools

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/razavioo/liara-mcp'

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