Skip to main content
Glama

get_system_resources

Retrieve CPU, RAM, and disk usage metrics from a remote server to monitor system health and resource availability.

Instructions

Récupère les métriques système vitales (CPU, RAM, Disque) d'un serveur.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
aliasYesAlias du serveur cible.

Implementation Reference

  • Handler function: Queues SSH job to fetch system metrics (uptime, free, df), waits for result, parses with ssh.parseSystemResources, returns structured JSON or error.
    async (params) => { try { const job = queue.addJob({ type: 'ssh', alias: params.alias, cmd: "uptime && free -h && df -h /" }); ssh.executeCommand(job.id); const result = await waitForJobCompletion(job.id, config.syncTimeout); if (!result || result.status !== 'completed') { throw new Error(result ? result.error : `Timeout de la commande de monitoring pour ${params.alias}`); } const parsedOutput = ssh.parseSystemResources(result.output); return { content: [{ type: "text", text: JSON.stringify(parsedOutput, null, 2) }] }; } catch (e) { const errorPayload = { toolName: "get_system_resources", errorCode: "MONITORING_ERROR", errorMessage: e.message }; return { content: [{ type: "text", text: JSON.stringify(errorPayload, null, 2) }], isError: true }; } }
  • Input schema: Zod object requiring 'alias' string for target server.
    { title: "Obtenir les ressources système d'un VPS", description: "Récupère les métriques système vitales (CPU, RAM, Disque) d'un serveur.", inputSchema: z.object({ alias: z.string().describe("Alias du serveur cible.") })
  • server.js:230-264 (registration)
    Tool registration via server.registerTool, including schema and inline handler.
    server.registerTool( "get_system_resources", { title: "Obtenir les ressources système d'un VPS", description: "Récupère les métriques système vitales (CPU, RAM, Disque) d'un serveur.", inputSchema: z.object({ alias: z.string().describe("Alias du serveur cible.") }) }, async (params) => { try { const job = queue.addJob({ type: 'ssh', alias: params.alias, cmd: "uptime && free -h && df -h /" }); ssh.executeCommand(job.id); const result = await waitForJobCompletion(job.id, config.syncTimeout); if (!result || result.status !== 'completed') { throw new Error(result ? result.error : `Timeout de la commande de monitoring pour ${params.alias}`); } const parsedOutput = ssh.parseSystemResources(result.output); return { content: [{ type: "text", text: JSON.stringify(parsedOutput, null, 2) }] }; } catch (e) { const errorPayload = { toolName: "get_system_resources", errorCode: "MONITORING_ERROR", errorMessage: e.message }; return { content: [{ type: "text", text: JSON.stringify(errorPayload, null, 2) }], isError: true }; } } );
  • Helper function to parse raw output from 'uptime && free -h && df -h /' into structured resources (load_average, memory, disk). Exported and used by the handler.
    function parseSystemResources(output) { const resources = { load_average: null, memory: null, disk: null }; const lines = output.split('\n'); try { const uptimeLine = lines.find(line => line.includes('load average:')); if (uptimeLine) { const parts = uptimeLine.split('load average:')[1]; resources.load_average = parts.split(',').map(s => s.trim()); } const memLine = lines.find(line => line.trim().startsWith('Mem:')); if (memLine) { const parts = memLine.trim().split(/\s+/); resources.memory = { total: parts[1], used: parts[2], free: parts[3], available: parts[6] }; } const diskLine = lines.find(line => line.startsWith('/dev/')); if (diskLine) { const parts = diskLine.trim().split(/\s+/); resources.disk = { filesystem: parts[0], total: parts[1], used: parts[2], available: parts[3], use_percent: parts[4] }; } } catch (e) { // En cas d'erreur de parsing, retourner les données brutes return { raw_output: output, parsing_error: e.message }; } return resources; }

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/fkom13/mcp-sftp-orchestrator'

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