Vai al contenuto

Integrazione IA (MCP)

Sperimentale

L'integrazione con l'IA è sperimentale. Il supporto agli strumenti e il comportamento cambiano da modello a modello e da client a client. I risultati non sono garantiti: rivedi sempre ciò che l'IA crea o modifica.

Commandeck include un server MCP (Model Context Protocol). Una volta configurato, il tuo assistente IA può leggere e gestire direttamente i tuoi pulsanti, senza copia-incolla e senza spiegargli la tua configurazione.

«Aggiungi un pulsante chiamato "Riavvia Nginx" che esegue sudo systemctl restart nginx nella categoria Server»

Richiede Commandeck 2.0.17 o successivo (Pro)

MCP è una funzione Pro. Le istruzioni qui sotto avviano il server dall'applicazione stessa con --mcp-server, disponibile dalla 2.0.17. Controlla la tua versione in Menu ☰ → Informazioni.

Passo 1 — Attiva l'accesso MCP in Commandeck

MCP è disattivato di fabbrica. Attivalo una volta:

Preferenze → Integrazione con il desktop → Consenti l'accesso MCP

Preferenze — interruttore dell'accesso MCP

Passo 2 — Trova il tuo comando MCP di Commandeck

Il server MCP è incluso nell'applicazione: si avvia eseguendo Commandeck con il parametro --mcp-server. Il comando esatto dipende da come l'hai installato. Trova il tuo qui sotto; lo userai nel tuo client IA al passo 3.

È l'installazione più comune. Usa l'AppImage Pro (MCP è una funzione Pro) e assicurati che sia eseguibile (chmod +x una volta):

/percorso/completo/di/Commandeck-Pro-2.0.17-Linux-x86_64.AppImage --mcp-server

Usa il tuo nome di file e il tuo percorso reali (il download porta versione e architettura nel nome). Trucco: trascina l'AppImage in un terminale per ottenerne il percorso completo.

L'eseguibile sta dentro il pacchetto .app:

/Applications/Commandeck.app/Contents/MacOS/Commandeck --mcp-server

Usa il percorso in cui hai installato Commandeck (fra virgolette se contiene spazi):

"C:\Program Files\Commandeck\Commandeck.exe" --mcp-server

Provalo una volta

Eseguendo il comando direttamente dovrebbe restare in attesa di input (parla JSON-RPC su standard input e output): vuol dire che funziona. Premi Ctrl+C per uscire. Se scrive «the MCP server requires Commandeck Pro», stai usando la versione gratuita.

Nel resto di questa pagina, <il tuo comando Commandeck> indica l'eseguibile di questo passo (per esempio il percorso dell'AppImage), e --mcp-server è il suo parametro.

Passo 3 — Configura il tuo client IA

Scegli il tuo strumento qui sotto. La configurazione si fa una volta; dopo funziona da sola.

Posizione del file di configurazione:

Sistema Percorso
Linux ~/.config/Claude/claude_desktop_config.json
macOS ~/Library/Application Support/Claude/claude_desktop_config.json
Windows %APPDATA%\Claude\claude_desktop_config.json

Aggiungi questo al file (crealo se non esiste), con il comando del passo 2:

{
  "mcpServers": {
    "commandeck": {
      "command": "/percorso/completo/di/Commandeck-Pro-2.0.17-Linux-x86_64.AppImage",
      "args": ["--mcp-server"]
    }
  }
}

Su macOS command sarebbe /Applications/Commandeck.app/Contents/MacOS/Commandeck; su Windows, il percorso completo di Commandeck.exe. Riavvia Claude Desktop: Commandeck compare come strumento collegato.

Esegui questo una volta in un terminale (sostituisci con il tuo comando):

claude mcp add commandeck /percorso/completo/di/Commandeck-Pro-2.0.17-Linux-x86_64.AppImage --mcp-server

Per verificare: claude mcp list

Modifica ~/.cursor/mcp_config.json:

{
  "mcpServers": {
    "commandeck": {
      "command": "/percorso/completo/di/Commandeck-Pro-2.0.17-Linux-x86_64.AppImage",
      "args": ["--mcp-server"]
    }
  }
}

Riavvia Cursor.

Modifica ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "commandeck": {
      "command": "/percorso/completo/di/Commandeck-Pro-2.0.17-Linux-x86_64.AppImage",
      "args": ["--mcp-server"]
    }
  }
}

Riavvia Windsurf.

Aggiungi questo a .continue/config.yaml nel tuo progetto:

mcpServers:
  - name: commandeck
    command: /percorso/completo/di/Commandeck-Pro-2.0.17-Linux-x86_64.AppImage
    args:
      - --mcp-server

Gli strumenti MCP sono disponibili solo in modalità Agente.

Open WebUI si collega agli strumenti via HTTP, non via stdio. Usa mcpo (il proxy ufficiale di Open WebUI) per fare da ponte con Commandeck.

Esegui mcpo con lo stesso utente che usa Commandeck

Il server legge i pulsanti di chi lo avvia. Ogni utente Linux o macOS ha la propria configurazione di Commandeck (~/.config/commandeck). Se avvii mcpo con un utente diverso da quello con cui usi Commandeck, l'IA vedrà l'insieme di pulsanti sbagliato (o vuoto). Avvia mcpo da un terminale aperto con il tuo utente desktop abituale.

Passo 1 — Installa mcpo (una volta):

pipx install mcpo
# niente pipx? anche un ambiente virtuale va benissimo:
#   python3 -m venv ~/.mcpo-venv && ~/.mcpo-venv/bin/pip install mcpo
# (il semplice `pip install mcpo` su Linux spesso fallisce con "externally-managed-environment")

Passo 2 — Trova l'IP locale della macchina su cui gira Commandeck (solo se Open WebUI è su un'altra macchina):

hostname -I | awk '{print $1}'

Annota questo IP: ti servirà al passo 4.

Passo 3 — Avvia il proxy (lascia aperto questo terminale):

mcpo --port 8000 -- /percorso/completo/di/Commandeck-Pro-2.0.17-Linux-x86_64.AppImage --mcp-server

Dovresti vedere: Uvicorn running on http://0.0.0.0:8000

Attenzione agli a capo nel copia-incolla

Tieni il comando su una sola riga. Se incollandolo si spezza in più righe rotte, salvalo come piccolo script: crea start-mcpo.sh con la riga qui sopra ed esegui bash start-mcpo.sh.

Passo 4 — Aggiungi il server di strumenti in Open WebUI:

Vai in Pannello di amministrazione → Impostazioni → Strumenti (nelle versioni più vecchie: Integrazioni → Gestisci i server di strumenti) → + e compila:

Campo Valore
Tipo OpenAPI
Nome commandeck
URL http://<ip-del-passo-2>:8000
Autenticazione Nessuna

Usa l'IP della macchina, non localhost

Se Open WebUI gira su un'altra macchina (per esempio un server di casa), localhost punterebbe a quel server e non alla macchina su cui gira mcpo. Usa l'IP del passo 2. Dalla macchina di Open WebUI puoi verificare con curl http://<quell-ip>:8000/openapi.json (deve restituire del JSON). Se non lo fa, apri la porta 8000 nel firewall della macchina su cui gira mcpo.

Passo 5 — Attiva lo strumento in una conversazione:

Apri una nuova conversazione, premi l'icona + (strumenti) vicino al campo di testo e attiva commandeck.

Tip

Funziona con qualsiasi motore supportato da Open WebUI: llama.cpp, Ollama, API compatibili con OpenAI e così via. Lo strato degli strumenti è indipendente dal modello. Il supporto alle chiamate varia da modello a modello: quelli addestrati a seguire istruzioni di solito funzionano meglio; i piccoli modelli locali possono aver bisogno del prompt di sistema qui sotto per usarli in modo affidabile.


Quando riavviare mcpo

mcpo avvia il server MCP di Commandeck come sottoprocesso all'accensione e ne legge l'elenco degli strumenti una sola volta. Riavvia mcpo ogni volta che:

  • Attivi o disattivi «Consenti l'accesso MCP» nelle Preferenze (se avvii mcpo prima di attivarlo, vede zero strumenti)
  • Aggiorni Commandeck a una nuova versione

Per riavviarlo: premi Ctrl+C nel terminale di mcpo e torna al passo 3; oppure, con il servizio systemd qui sotto, systemctl --user restart mcpo-commandeck.


Passo 6 — (Facoltativo) Far sopravvivere mcpo ai riavvii

Crea un servizio utente systemd perché mcpo parta da solo all'accesso (eseguilo con il tuo utente desktop abituale):

mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/mcpo-commandeck.service << 'EOF'
[Unit]
Description=mcpo proxy for the Commandeck MCP server

[Service]
ExecStart=%h/.local/bin/mcpo --port 8000 -- %h/Apps/Commandeck-Pro-2.0.17-Linux-x86_64.AppImage --mcp-server
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target
EOF

systemctl --user daemon-reload
systemctl --user enable --now mcpo-commandeck

Comandi utili:

systemctl --user status mcpo-commandeck    # vedere lo stato
systemctl --user restart mcpo-commandeck   # riavviare dopo aver attivato MCP o aggiornato
systemctl --user stop mcpo-commandeck      # fermare
journalctl --user -u mcpo-commandeck -f    # log in diretta

Note

Adatta i percorsi in ExecStart: punta alla tua AppImage ed esegui which mcpo per sapere dov'è mcpo se non è in ~/.local/bin/mcpo (per esempio dentro un ambiente virtuale).


Prompt di sistema consigliato

Incolla il testo qui sotto nel campo del prompt di sistema del tuo client IA. Prepara il modello a chiamare prima help, a seguire i giusti percorsi di ricerca e a scomporre i comandi complessi in pezzi di Commandeck invece di incollarli così come sono.

Resta in inglese di proposito

Questo testo è rivolto al modello, non a te. I nomi degli strumenti e dei campi sono in inglese: tradurlo rende le chiamate meno affidabili.

You are an assistant for Commandeck, a desktop application on Linux, macOS or Windows. Commandeck
lets the user run commands by clicking buttons, like a remote control. You can create, read,
and modify the user's buttons, machines, and profiles using your tools.

Rules:
- Before doing anything, call the help tool to read the instructions.
- When the user explicitly names a button, use get_button(name="X") directly. When you don't
  know the exact name, use list_buttons.
- Never call get_button before create_button.
- For buttons: a duplicate means SAME NAME, not same command. If no button has the exact same
  name, create it without asking.
- For machines: a duplicate means SAME HOST address. Always call list_machines and check by
  host before creating.
- For profiles: a duplicate means same name. Call list_profiles before creating.
- When asked to change a property, always apply the change. Never decide the current value is
  already acceptable.
- In multi-step requests, if a required resource exists, use it and proceed.
- When you need a machine ID or profile ID, always look it up first.
- Write each command in the right shell for its target: PowerShell or cmd for a Windows machine,
  bash/sh for Linux or macOS. Set the button's os field to match. Check each machine's os with
  list_machines; for a local button (no machine) use this computer's OS. Never give a Windows
  machine a bash command, or a Linux/macOS machine a PowerShell command.
- The user can install ready-made button packs from the gallery: call list_packs to see what is
  available and what has updates, then install_pack / update_pack / uninstall_pack to manage them.

When a user asks you to add or refactor a shell command, decompose it before creating a button:
1. `cd /some/path` → Execution Profile working_dir (strip from command)
2. `sudo -u user` wrapper → run_as_user on the profile or button's run_as field
   (strip the wrapper, keep the inner command)
3. Opens an interactive shell (bash, zsh, exec bash) → execution_mode = "terminal"
4. Produces output the user wants to read → execution_mode = "output"; fire-and-forget → "silent"
5. What remains after stripping context wrappers is the command field.

Example: `sudo -u www-data bash -c 'cd /var/www/myapp && git pull'`
→ Create Profile: name="Web Deploy", run_as_user="www-data", working_dir="/var/www/myapp"
→ Create button: command="git pull", execution_mode="output", assign that profile

In Open WebUI, vai in Pannello di amministrazione → Impostazioni → Prompt di sistema e incolla il testo qui sopra (oppure mettilo nel prompt di sistema della conversazione, nelle impostazioni del modello).

Claude Desktop non offre un campo per il prompt di sistema. La descrizione dello strumento help si spiega da sola per Claude: non serve nessun testo aggiuntivo.

Incolla il testo nel campo del prompt di sistema o delle istruzioni che il tuo client mette a disposizione, prima di iniziare la conversazione.


Che cosa può fare la tua IA

Pulsanti

Strumento Descrizione
help Restituisce la guida completa al lavoro: va sempre chiamata per prima
list_buttons Elenca tutti i pulsanti, con filtro facoltativo per categoria
get_button Dà i dettagli di un pulsante per nome o identificativo
create_button Crea un nuovo pulsante (nome, comando, categoria, colore, icona, modalità di esecuzione, profilo, macchine…)
update_button Modifica qualsiasi campo di un pulsante esistente; chiama prima get_button per ottenerne l'identificativo
execute_button Esegue il comando di un pulsante e ne restituisce l'output (disattivato di fabbrica; vedi Consentire all'IA di eseguire i pulsanti)
delete_button Elimina un pulsante tramite il suo identificativo

Categorie

Strumento Descrizione
list_categories Elenca i nomi di tutte le categorie

Macchine SSH (funzione Pro)

Strumento Descrizione
list_machines Elenca le macchine SSH configurate (nome, host, utente, porta; mai le chiavi private)
create_machine Aggiunge una macchina SSH
update_machine Rinomina o riconfigura una macchina SSH; chiama prima list_machines per ottenerne l'identificativo
delete_machine Elimina una macchina SSH tramite il suo identificativo

Profili di esecuzione (funzione Pro)

Strumento Descrizione
list_profiles Elenca tutti i profili di esecuzione
get_profile Dà i dettagli di un profilo per nome o identificativo
create_profile Crea un profilo riutilizzabile (utente di esecuzione, cartella di lavoro)
update_profile Modifica un profilo esistente; chiama prima get_profile per ottenerne l'identificativo
delete_profile Elimina un profilo tramite il suo identificativo

Pacchetti di pulsanti — insiemi già pronti, dalla galleria pubblica

Strumento Descrizione
list_packs Elenca i pacchetti della galleria, con i contrassegni installed e update_available
install_pack Installa un pacchetto su alcune macchine (solo pacchetti con firma verificata)
update_pack Aggiorna un pacchetto installato mantenendo le tue modifiche, le destinazioni e le posizioni
uninstall_pack Rimuove tutti i pulsanti di un pacchetto
export_pack Esporta i pulsanti scelti in un file .cdpack condivisibile

Variabili

Strumento Descrizione
list_variable_values Elenca i tuoi valori salvati per le {{variabili}} dei comandi

Controlla prima di cancellare

delete_button, delete_machine e delete_profile sono disponibili via MCP. Verifica sempre l'elemento giusto con get_button o list_machines prima di chiedere alla tua IA di cancellare qualcosa.

Aggiornare la griglia dopo le modifiche dell'IA

Quando l'IA crea o modifica un pulsante, premi F5 (oppure menu → Ricarica i pulsanti) per aggiornare la griglia senza riavviare Commandeck.

Consiglio per modificare i pulsanti

Se l'IA dice di non riuscire a modificare un pulsante, chiedile di chiamare prima get_button con il nome del pulsante per ottenerne l'identificativo e poi update_button con quell'identificativo.


Consentire all'IA di eseguire i pulsanti

Di fabbrica la tua IA può leggere e modificare i pulsanti, ma non eseguirli. Per lasciarle davvero lanciare dei comandi devi dare il permesso a tre livelli: se anche uno solo è disattivato, l'esecuzione viene bloccata.

1. Interruttore generalePreferenze → Integrazione con il desktop → Consenti l'esecuzione da parte dell'IA

Disattivato di fabbrica. È l'interruttore principale di tutta la funzione.

2. Permesso per singolo pulsanteModifica un pulsante → Comportamento → Consenti all'IA di eseguire questo pulsante

Disattivato di fabbrica su ogni pulsante, compresi quelli che avevi già. Attivalo solo per i pulsanti i cui comandi ti senti tranquillo a lasciare in mano a un'IA: controlli di sola lettura (df -h, systemctl status), operazioni ripetibili senza danno, distribuzioni sicure.

3. ConfermaModifica un pulsante → Comportamento → Chiedi conferma prima di eseguire

Con questa attiva, l'IA non può eseguire il pulsante in silenzio. Riceve una risposta requires_confirmation con il comando esatto e l'istruzione di mostrartelo e aspettare la tua approvazione prima di richiamare con confirmed=true. Consigliato per qualsiasi comando delicato (riavvii, cancellazioni, sudo).

Registro di controllo: ogni esecuzione via MCP viene aggiunta a ~/.config/commandeck/.mcp_executions.log con data e ora, nome del pulsante, macchina di destinazione, codice di uscita e durata.

Limitazioni:

  • I pulsanti in modalità Apri nel terminale non si possono eseguire via MCP: in un contesto IA senza interfaccia non esiste nessun terminale. Se ci prova, l'IA riceve un errore.
  • L'output restituito all'IA è limitato (4 KB di output standard e 2 KB di errori) per non riempirle il contesto. L'output completo resta nel registro, se ti serve.
  • I pulsanti con più destinazioni obbligano l'IA a indicare su quale macchina eseguire. Se non lo fa, il server le restituisce l'elenco delle destinazioni valide e le chiede di chiarire.

Sicurezza

Il server MCP usa il trasporto stdio: quando un client (Claude Desktop, Cursor…) lo avvia direttamente, gira come sottoprocesso e comunica solo tramite standard input e output. Non viene aperta nessuna porta di rete, e solo il processo che l'ha avviato può parlargli.

Quando usi mcpo (Open WebUI) una porta HTTP (la 8000) viene aperta sulla macchina su cui gira mcpo. Assicurati che quella porta non sia esposta a reti di cui non ti fidi: tienila sulla rete locale, dietro il firewall.

Warning

Con l'accesso MCP attivo, il tuo assistente IA può creare, modificare ed eliminare pulsanti. Disattiva l'interruttore nelle Preferenze quando non ti serve. L'esecuzione dei pulsanti è una funzione a parte da autorizzare; vedi Consentire all'IA di eseguire i pulsanti.