Il Model Context Protocol (MCP) permette agli assistenti IA di chiamare strumenti e leggere dati da server che gestisci tu. Molti server MCP girano in locale, ma uno remoto su un VPS è utile quando più persone, strumenti o agenti devono condividere le stesse funzionalità. Questa guida copre le scelte di configurazione e una base sicura.
MCP locale o remoto?
- Locale (stdio). Il client avvia il server come processo figlio sulla tua macchina. Semplice e privato, ma funziona solo su quella macchina.
- Remoto (HTTP). Il server gira su un VPS e i client si connettono via HTTPS. È quello che ospiti. Si adatta a strumenti condivisi, lavori di lunga durata e strumenti che richiedono un IP fisso.
Controlla la specifica MCP attuale per il trasporto supportato dal tuo client. Streamable HTTP è la scelta abituale per i server remoti. Le dimensioni per i carichi di lavoro tipici sono nella nostra pagina hosting per server MCP.
Passo 1: prepara il server
Usa un server Ubuntu LTS nuovo e i passaggi di come mettere in sicurezza un nuovo VPS. Crea un utente per il servizio.
sudo adduser --disabled-password --gecos "" mcp
Passo 2: esegui il server
Usa l’SDK ufficiale o un server esistente. Questo esempio in Python usa l’helper FastMCP dell’SDK MCP:
sudo -iu mcp
python3 -m venv ~/venv && . ~/venv/bin/activate
pip install "mcp[cli]"
# server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("demo", host="127.0.0.1", port=8000)
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers."""
return a + b
if __name__ == "__main__":
mcp.run(transport="streamable-http")
Passo 3: eseguilo come servizio
[Unit]
Description=MCP server
After=network-online.target
[Service]
User=mcp
WorkingDirectory=/home/mcp
ExecStart=/home/mcp/venv/bin/python server.py
Restart=always
[Install]
WantedBy=multi-user.target
Salvalo come /etc/systemd/system/mcp.service ed esegui sudo systemctl enable --now mcp.
Passo 4: HTTPS e autenticazione
Un server MCP può eseguire codice e leggere dati, quindi non lasciarlo mai aperto. Mettilo dietro un reverse proxy con TLS e richiedi un token:
mcp.example.com {
@noauth not header Authorization "Bearer YOUR_LONG_RANDOM_TOKEN"
respond @noauth 401
reverse_proxy 127.0.0.1:8000
}
Per una configurazione di produzione, usa OAuth come descritto nella specifica di autorizzazione MCP invece di un unico token condiviso.
Checklist di sicurezza
- Dai agli strumenti il minimo accesso necessario. Non dare a uno strumento l’accesso alla shell a meno che non sia questo lo scopo.
- Tieni i segreti in file di ambiente con
chmod 600. - Registra le chiamate degli strumenti per vedere cosa è successo.
- Mantieni la porta associata a 127.0.0.1 ed esponi solo il proxy.