Le Model Context Protocol (MCP) permet aux assistants IA d’appeler des outils et de lire des données depuis des serveurs que vous faites tourner. De nombreux serveurs MCP tournent en local, mais un serveur distant sur un VPS est utile quand plusieurs personnes, outils ou agents doivent partager les mêmes capacités. Ce guide couvre les choix de configuration et une base sûre.
MCP local ou distant ?
- Local (stdio). Le client démarre le serveur comme processus enfant sur votre propre machine. Simple et privé, mais ne fonctionne que sur cette machine.
- Distant (HTTP). Le serveur tourne sur un VPS et les clients se connectent en HTTPS. C’est ce que vous hébergez. Cela convient aux outils partagés, aux tâches de longue durée et aux outils qui ont besoin d’une IP fixe.
Consultez la spécification MCP actuelle pour le transport pris en charge par votre client. Streamable HTTP est le choix habituel pour les serveurs distants. Les tailles pour les charges de travail typiques se trouvent sur notre page d’hébergement de serveurs MCP.
Étape 1 : préparer le serveur
Utilisez un serveur Ubuntu LTS neuf et les étapes de comment sécuriser un nouveau VPS. Créez un utilisateur pour le service.
sudo adduser --disabled-password --gecos "" mcp
Étape 2 : lancer le serveur
Utilisez le SDK officiel ou un serveur existant. Cet exemple Python utilise l’assistant FastMCP du 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")
Étape 3 : l’exécuter comme un service
[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
Enregistrez-le sous /etc/systemd/system/mcp.service et exécutez sudo systemctl enable --now mcp.
Étape 4 : HTTPS et authentification
Un serveur MCP peut exécuter du code et lire des données ; ne le laissez donc jamais ouvert. Placez-le derrière un reverse proxy avec TLS et exigez un jeton :
mcp.example.com {
@noauth not header Authorization "Bearer YOUR_LONG_RANDOM_TOKEN"
respond @noauth 401
reverse_proxy 127.0.0.1:8000
}
Pour une configuration de production, utilisez OAuth comme décrit dans la spécification d’autorisation MCP plutôt qu’un jeton partagé unique.
Liste de contrôle de sécurité
- Donnez aux outils le moins d’accès possible. Ne donnez pas d’accès shell à un outil, sauf si c’est justement le but.
- Gardez les secrets dans des fichiers d’environnement avec
chmod 600. - Journalisez les appels d’outils pour voir ce qui s’est passé.
- Gardez le port lié à 127.0.0.1 et n’exposez que le proxy.