Skip to main content
Glama
fkom13

MCP SFTP Orchestrator

by fkom13

task_exec_interactive

Execute SSH commands with interactive prompt handling for yes/no, password, and custom responses in remote server management.

Instructions

Exécute une commande SSH avec gestion des prompts interactifs (yes/no, passwords, etc.).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
aliasYesAlias du serveur cible.
cmdYesLa commande à exécuter.
interactiveNoMode interactif.
autoRespondNoRépondre automatiquement aux prompts standards.
responsesNoRéponses personnalisées aux prompts (clé: pattern, valeur: réponse).
timeoutNoTimeout personnalisé en secondes. Défaut 2 minutes.
rappelNoDéfinit un rappel en secondes.

Implementation Reference

  • Handler function that queues an interactive SSH job using the queue system, executes it via ssh.executeCommand, and returns the result or background status after waiting for completion.
    async (params) => {
        const job = queue.addJob({ 
            type: 'ssh', 
            ...params, 
            status: 'pending',
            interactive: params.interactive,
            autoRespond: params.autoRespond
        });
        history.logTask(job);
        ssh.executeCommand(job.id);
    
        const finalJob = await waitForJobCompletion(job.id, params.timeout || config.syncTimeout);
        if (finalJob) {
            return { content: [{ type: "text", text: `Résultat commande interactive (tâche ${finalJob.id}):\n${finalJob.output || JSON.stringify(finalJob, null, 2)}` }] };
        } else {
            return { content: [{ type: "text", text: `Tâche interactive ${job.id} initiée en arrière-plan.` }] };
        }
    }
  • Zod input schema defining parameters for the interactive SSH execution tool, including server alias, command, interactive mode, auto-respond, custom responses, timeout, and reminder.
    {
        title: "Exécuter une commande interactive (SSH)",
        description: "Exécute une commande SSH avec gestion des prompts interactifs (yes/no, passwords, etc.).",
        inputSchema: z.object({
            alias: z.string().describe("Alias du serveur cible."),
            cmd: z.string().describe("La commande à exécuter."),
            interactive: z.boolean().optional().default(true).describe("Mode interactif."),
            autoRespond: z.boolean().optional().default(true).describe("Répondre automatiquement aux prompts standards."),
            responses: z.record(z.string()).optional().describe("Réponses personnalisées aux prompts (clé: pattern, valeur: réponse)."),
            timeout: z.number().optional().describe("Timeout personnalisé en secondes. Défaut 2 minutes."),
            rappel: z.number().optional().describe("Définit un rappel en secondes.")
        })
  • server.js:545-578 (registration)
    MCP server registration of the 'task_exec_interactive' tool, including schema and inline handler function.
    server.registerTool(
        "task_exec_interactive",
        {
            title: "Exécuter une commande interactive (SSH)",
            description: "Exécute une commande SSH avec gestion des prompts interactifs (yes/no, passwords, etc.).",
            inputSchema: z.object({
                alias: z.string().describe("Alias du serveur cible."),
                cmd: z.string().describe("La commande à exécuter."),
                interactive: z.boolean().optional().default(true).describe("Mode interactif."),
                autoRespond: z.boolean().optional().default(true).describe("Répondre automatiquement aux prompts standards."),
                responses: z.record(z.string()).optional().describe("Réponses personnalisées aux prompts (clé: pattern, valeur: réponse)."),
                timeout: z.number().optional().describe("Timeout personnalisé en secondes. Défaut 2 minutes."),
                rappel: z.number().optional().describe("Définit un rappel en secondes.")
            })
        },
        async (params) => {
            const job = queue.addJob({ 
                type: 'ssh', 
                ...params, 
                status: 'pending',
                interactive: params.interactive,
                autoRespond: params.autoRespond
            });
            history.logTask(job);
            ssh.executeCommand(job.id);
    
            const finalJob = await waitForJobCompletion(job.id, params.timeout || config.syncTimeout);
            if (finalJob) {
                return { content: [{ type: "text", text: `Résultat commande interactive (tâche ${finalJob.id}):\n${finalJob.output || JSON.stringify(finalJob, null, 2)}` }] };
            } else {
                return { content: [{ type: "text", text: `Tâche interactive ${job.id} initiée en arrière-plan.` }] };
            }
        }
    );

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