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
pipaggiornato. - 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_directoryimpostata. - 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
s3fse puntareroot_directoryal 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_mbviene 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.
