Vai al contenuto
Tutti gli strumenti

run_terminal_command

Diagnostica e sistema · macOS · Windows

Effetto: esecuzione. Stato: disponibilità condizionata.

«Disponibilità condizionata» indica che lo strumento può dipendere da versione, piattaforma, autorizzazioni, account o configurazione. Non è necessariamente attivo ovunque.

macOS

Scopo

Esegue un comando di shell sul Mac dell'utente e ne restituisce l'output. Sempre attivo. Disattivato quando LMCP è in modalità di sola lettura. Tre tipi di comando vengono rifiutati perché non si possono annullare: formattare o sovrascrivere un disco (mkfs, newfs, fdisk, diskutil erase/partition, dd da o verso un dispositivo disco), un'eliminazione ricorsiva di una cartella di sistema, della cartella home dell'utente o di una delle sue cartelle di dati (Documents, Desktop, Downloads, Library, Pictures, Movies, Music), di tutto ciò che si trova direttamente al loro interno, o di una destinazione o cartella che il testo del comando non determina (una variabile, una sostituzione di comando, un cd in una subshell), e una fork bomb. Un comando che cita un percorso di credenziali (portachiavi, chiavi private di ~/.ssh, ~/.aws, ~/.config/gh, accessi del browser, la home di un altro utente), che scrive un file che esegue codice in seguito (LaunchAgents, file di avvio della shell, cartelle dei client di IA), che pilota un'altra app con uno script, che apre uno script o un'app di terminale, che controlla un servizio di sistema o l'alimentazione, che invia a una shell uno script scaricato tramite pipe, che scrive su un file di dispositivo o che modifica ricorsivamente i permessi su un percorso di sistema NON viene rifiutato: l'anteprima e il risultato riportano un avviso che spiega cosa fa. Prima di confermare, di' all'utente cosa leggerà o cambierà, a meno che non abbia chiesto esattamente questo. Gli avvisi leggono solo il testo del comando, quindi un comando che nasconde un percorso non ne riceve. I comandi vengono eseguiti in una sandbox di macOS che protegge soltanto Local MCP stesso: il terminale non può aprire né modificare i file di Local MCP tramite il loro percorso (le sue impostazioni e il token, i binari, il registro delle attività, le sessioni di messaggistica e web, l'elemento di avvio), non può comunicare con il suo socket e non può aprire i file di un account di cui l'utente ha disattivato la casella Read o Write. Nessuna impostazione riapre questi accessi. A causa di questa sandbox, i programmi di sistema setuid diversi da ps e top non possono avviarsi (sudo, su, crontab, at, traceroute): l'avviso lo segnala prima dell'esecuzione del comando, e il comando `log` non viene eseguito. All'interno della sandbox SwiftPM richiede --disable-sandbox. Distruttivo: mostra prima un'anteprima del comando; passa confirm:true per eseguirlo davvero. Output e tempo di esecuzione sono limitati.

Input obbligatori

I nomi restano esattamente quelli richiesti dallo strumento. Le definizioni tecniche canoniche in inglese sono nello schema espandibile qui sotto.

Autorizzazioni e conferma

Lo schema dichiara un parametro di conferma esplicito. Controlla l’anteprima e autorizza l’operazione reale secondo il contratto della piattaforma.

Schema tecnico canonico in inglese — macOS
{
  "properties": {
    "command": {
      "description": "The shell command to run (a single command line, executed with /bin/zsh -lc).",
      "type": "string"
    },
    "confirm": {
      "description": "Must be true to actually run. Without it, a preview of the command is returned.",
      "type": "boolean"
    },
    "timeout_seconds": {
      "description": "Max seconds to run before it is terminated (default 20, max 60).",
      "type": "integer"
    },
    "working_dir": {
      "description": "Optional absolute working directory. Defaults to the user's home directory.",
      "type": "string"
    }
  },
  "required": [
    "command"
  ],
  "type": "object"
}

Esempio documentale

Esempio di documentazione per run_terminal_command. Non eseguire questo esempio. Gli argomenti mostrati appartengono a un set di dati fittizio; individua gli identificatori reali e ottieni l’autorizzazione prima di una chiamata reale.

{
  "command": "echo Hello from LMCP",
  "confirm": false
}

Windows

Scopo

Esegue un comando di shell sul computer dell'utente. Alcuni comandi a livello di sistema (sudo/escalation di privilegi, eliminazioni ricorsive di percorsi di sistema o della home, formattazione di dischi, spegnimento/riavvio, invio a una shell di uno script scaricato tramite pipe, fork bomb) vengono rifiutati. Distruttivo: mostra prima un'anteprima del comando; passa confirm:true per eseguirlo davvero. Output e tempo di esecuzione sono limitati. Su Windows il comando viene eseguito tramite `cmd /c`; altrove tramite `sh -c`.

Input obbligatori

I nomi restano esattamente quelli richiesti dallo strumento. Le definizioni tecniche canoniche in inglese sono nello schema espandibile qui sotto.

Autorizzazioni e conferma

Lo schema dichiara un parametro di conferma esplicito. Controlla l’anteprima e autorizza l’operazione reale secondo il contratto della piattaforma.

Schema tecnico canonico in inglese — Windows
{
  "properties": {
    "command": {
      "description": "The shell command to run (a single command line).",
      "type": "string"
    },
    "confirm": {
      "description": "Must be true to actually run. Without it, a preview of the command is returned.",
      "type": "boolean"
    },
    "timeout_seconds": {
      "description": "Max seconds to run before it is terminated (default 30, max 60).",
      "type": "integer"
    },
    "working_dir": {
      "description": "Optional absolute working directory. Defaults to the user's home directory.",
      "type": "string"
    }
  },
  "required": [
    "command"
  ],
  "type": "object"
}

Esempio documentale

Esempio di documentazione per run_terminal_command. Non eseguire questo esempio. Gli argomenti mostrati appartengono a un set di dati fittizio; individua gli identificatori reali e ottieni l’autorizzazione prima di una chiamata reale.

{
  "command": "echo Hello from LMCP",
  "confirm": false
}