Il Model Context Protocol (MCP) è un protocollo standardizzato che consente agli agenti di intelligenza artificiale di interagire con sistemi backend e sorgenti dati. Una delle funzionalità più richieste è l'accesso al filesystem, utile quando si desidera elaborare file locali o salvare risultati direttamente sul server. Questo articolo fornisce una guida completa, passo dopo passo, per abilitare il supporto al filesystem nei server MCP, includendo configurazione, sicurezza e test di verifica.

Prerequisiti e ambientazione iniziale

Prima di procedere, è necessario assicurarsi di disporre di:

    • Un'installazione funzionante di MCP (versione 1.2 o successiva).
    • Permessi di amministratore sul server di destinazione.
    • Un ambiente Python 3.9+ con pip aggiornato.
    • Una chiave API valida per il modello di AI che si intende utilizzare.

Inoltre, è consigliabile eseguire l'installazione in un ambiente isolato, ad esempio un container Docker o una virtualenv, per limitare l'impatto di eventuali errori di configurazione.

Installazione del modulo filesystem di MCP

Il supporto al filesystem è fornito da un plugin separato chiamato mcp-filesystem. Per installarlo, aprire il terminale e digitare:

pip install mcp-filesystem

Una volta completata l'installazione, verificare la presenza del pacchetto con:

pip show mcp-filesystem

Il comando dovrebbe restituire informazioni sulla versione, sulla location di installazione e sulle dipendenze richieste.

Configurazione del server MCP

Il file di configurazione principale di MCP si trova tipicamente in /etc/mcp/config.yaml. Aprire il file con un editor di testo privilegiato e aggiungere le seguenti sezioni:

filesystem:

enabled: true

root_directory: "/var/mcp/files"

read_only: false

maxfilesize_mb: 50

allowed_extensions:

- ".txt"

- ".json"

- ".csv"

Questa configurazione abilita l'accesso al filesystem, imposta una directory radice (/var/mcp/files) dove l'agente potrà operare, consente sia lettura che scrittura, limita la dimensione massima dei file a 50 MB e ammette solo estensioni testuali.

Gestione dei permessi di sicurezza

Consentire l'accesso al filesystem introduce potenziali vettori di attacco. È fondamentale applicare le seguenti contromisure:

    • Chroot: confinare il processo MCP in una jail limitata alla root_directory impostata.
    • AppArmor o SELinux: creare un profilo che blocchi operazioni di scrittura al di fuori della directory consentita.
    • Controllo di integrità: attivare la verifica dei checksum (SHA‑256) per tutti i file modificati dall'agente.
    • Logging dettagliato: registrare ogni operazione di file I/O con timestamp, utente e percorso.

Esempio di regola AppArmor per MCP:

/usr/bin/mcp {

# Allow read/write within /var/mcp/files

/var/mcp/files/** rw,

# Deny everything else

deny /**,

}

Impostazione di un utente dedicato

Per ridurre il rischio di escalation dei privilegi, creare un utente di sistema dedicato:

useradd -r -s /usr/sbin/nologin mcpfs

chown -R mcpfs:mcpfs /var/mcp/files

chmod 750 /var/mcp/files

Assicurarsi che il servizio MCP venga eseguito con questo utente aggiungendo la direttiva User=mcpfs nel file di unità systemd.

Avvio e verifica del servizio

Dopo aver salvato le modifiche, riavviare il demone MCP:

systemctl daemon-reload

systemctl restart mcp.service

Controllare lo stato con:

systemctl status mcp.service

Il log dovrebbe mostrare la riga "Filesystem support enabled, root: /var/mcp/files". In caso di errori, consultare /var/log/mcp/error.log per ulteriori dettagli.

Test di funzionalità

Per verificare che l'agente AI possa effettivamente accedere al filesystem, inviare una semplice richiesta MCP di tipo filesystem.read tramite l'API:

curl -X POST https://mcp.example.com/api/v1/commands \

-H "Authorization: Bearer YOURAPIKEY" \

-d '{

"command": "filesystem.read",

"parameters": {

"path": "/var/mcp/files/test.txt"

}

}'

Se il file test.txt esiste, la risposta conterrà il contenuto in base64. Per testare la scrittura, usare filesystem.write con un payload codificato.

Considerazioni operative avanzate

Una volta confermata la funzionalità di base, è possibile sfruttare caratteristiche più avanzate di MCP:

    • Versionamento dei file: implementare un meccanismo interno che salva una copia di backup per ogni scrittura, utile per rollback.
    • Gestione delle transazioni: avvolgere più operazioni di I/O in una transazione atomica, garantendo coerenza dei dati.
    • Integrazione con sistemi di storage esterni: montare bucket S3 o Azure Blob come file system via s3fs e puntare root_directory al mount point.

Queste funzionalità richiedono configurazioni aggiuntive nel file config.yaml e, talvolta, l'installazione di librerie di terze parti.

Best practice per il mantenimento a lungo termine

Per assicurare che l'accesso al filesystem rimanga sicuro e affidabile nel tempo, adottare le seguenti pratiche:

    • Eseguire regolarmente aggiornamenti di MCP e del plugin mcp-filesystem.
    • Rivedere periodicamente le policy di AppArmor/SELinux per adattarle a nuove esigenze.
    • Implementare scansioni antivirus e antimalware sui file creati dall'agente.
    • Monitorare l'utilizzo di spazio disco e impostare alert quando la soglia di maxfilesize_mb viene superata.

Inoltre, documentare ogni modifica di configurazione in un repository di controllo versione (ad esempio Git) per tracciare l'evoluzione delle impostazioni di sicurezza.

Conclusioni

Abilitare l'accesso al filesystem per i server MCP consente di estendere notevolmente le capacità operative degli agenti AI, rendendo possibile la manipolazione di dati locali, la generazione di report e l'integrazione con workflow aziendali. Seguendo i passaggi descritti – dall'installazione del plugin, alla configurazione sicura, fino ai test di verifica – è possibile implementare questa funzionalità in modo robusto e conforme alle best practice di sicurezza. Ricordate di mantenere un approccio prudente: limitate le directory accessibili, controllate le estensioni consentite e monitorate costantemente il comportamento del sistema per prevenire abusi.