In this article
Comment exécuter des serveurs MCP avec Docker
Les serveurs MCP sont des intégrations qui se connectent aujourd’hui à de nombreux hôtes MCP, que vous utilisiez Cursor, Claude Desktop ou d’autres outils. Cependant, la plupart de ces intégrations MCP nécessitent que les utilisateurs finaux suivent des instructions pour installer et lancer le serveur MCP localement. C’est là que Docker entre en jeu.
Avant d’aborder Docker, passons en revue quelques exemples qui montrent à quel point il est courant de demander aux développeurs de connecter des serveurs MCP via des processus locaux, à l’aide de l’interface STDIO.
Voici un exemple tiré de la documentation de référence sur l’intégration des serveurs MCP dans VS Code, via le fichier dédié .vscode/mcp.json :
{
"servers": {
"Perplexity": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-perplexity-ask"],
"env": {
"PERPLEXITY_API_KEY": "${input:perplexity-key}"
}
}
}
}
Voici un autre exemple, qui montre le fichier .cursor/mcp.json de Cursor :
{
"mcpServers": {
"npm-package-info": {
"command": "node",
"args": ["/Users/lirantal/projects/repos/mcp-server-npm"]
},
}
}Ces exemples suivent des modèles d’utilisation courants des serveurs MCP, qui consistent à les exécuter localement en lançant des processus système (autrement dit, des « commandes »).
Exécuter des serveurs MCP à l’aide de commandes n’est pas toujours idéal. Existe-t-il une autre solution ?
Risques de sécurité et difficultés liés à l’exécution locale de serveurs MCP
L’exécution locale de serveurs MCP peut parfois être fastidieuse. Elle soulève également diverses préoccupations en matière de sécurité, en plus des garde-fous de sécurité liés à l’IA que les développeurs et les équipes de sécurité doivent déjà respecter.
Voici quelques exemples de difficultés que les développeurs et les équipes de sécurité peuvent rencontrer lorsqu’ils doivent exécuter des serveurs MCP localement :
Configuration de l’environnement local — Par exemple, si je ne développe pas en Python et que le serveur MCP auquel je veux me connecter est écrit en Python et nécessite de récupérer des dépendances en amont pour compiler et exécuter le projet, sa configuration sera d’autant plus difficile et contraignante.
Dépendance au système d’exploitation — Autre scénario de dépannage fréquent : les commandes doivent être spécifiées et composées différemment selon le système d’exploitation utilisé, que ce soit Windows, macOS ou Linux.
Serveurs MCP malveillants — Si le code du serveur MCP était malveillant, il aurait immédiatement accès à tout ce qui se trouve dans mon environnement de développement.
Exécuter des serveurs MCP avec Docker
Pour contourner ce problème, vous pouvez revenir à une méthode éprouvée : encapsuler les artefacts de l’application avec Docker.
Docker a gagné en popularité en répondant au besoin des développeurs de compiler et de déployer des artefacts, comme des services backend dans le cloud, de façon standardisée et reproductible. Avec le fichier Docker Compose, Docker a également simplifié les tests locaux et la reproductibilité des architectures de microservices.
Aujourd’hui, Docker nous aide aussi à lancer des serveurs MCP dans des conteneurs. Voyons quelques exemples.
Ajouter le serveur MCP GitHub dans Docker à Qodo Gen
Le serveur MCP de GitHub est une intégration qui vous donne accès à votre compte GitHub. Vous pouvez ainsi interroger les données des dépôts et effectuer des actions, comme ouvrir une issue ou envoyer d’autres requêtes à l’API GitHub.
Pour lancer le serveur MCP de GitHub avec Docker, nous exécuterions normalement une commande comme celle-ci :
docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN=1234 ghcr.io/github/github-mcp-serverPour exécuter cette commande correctement, vous devez :
Installer Docker afin de pouvoir exécuter la commande `docker
Vérifier que l’application Docker est en cours d’exécution
Créer un jeton d’accès personnel (PAT) pour votre compte GitHub (en lui accordant le moins de permissions possible, de préférence)
L’exécution de la commande télécharge ensuite l’image `github-mcp-server depuis GitHub Container Registry et lui transmet le PAT sous forme de variable d’environnement.
Cependant, au lieu d’exécuter cette commande Docker ponctuellement dans l’interface de ligne de commande, nous pouvons la fournir sous forme de configuration de serveur MCP qui s’exécute via le type de transport STDIO par processus.
Je vais vous montrer comment procéder avec VS Code et l’outil de code IA agentique Qodo Gen.
{
"docker": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "github_pat_1234"
}
}
}Dans la vue de l’extension Qodo Gen, cliquez sur Tools, puis sur le bouton en haut à gauche Add New MCP, pour afficher la vue New Agentic Tool. Collez-y ensuite le JSON, puis cliquez sur Save.

Patientez une minute ou deux, le temps que le conteneur télécharge depuis le réseau la dernière image Docker du serveur MCP de GitHub, puis le lance. Pendant ce temps, un indicateur s’affiche comme suit :

Une fois le chargement terminé, vous pouvez voir tous les outils disponibles :

Vous pouvez maintenant poser vos questions directement dans la fenêtre de chat au sujet du dépôt de code :

Pour aller plus loin sur la sécurité des serveurs MCP
Si vous vous reconnaissez dans les difficultés de configuration des serveurs MCP et les préoccupations de sécurité évoquées dans cet article, je vous recommande vivement de lire les articles suivants sur la sécurité de l’IA pour mettre toutes les chances de votre côté :
10 bonnes pratiques pour développer en toute sécurité avec l’IA
Découvrez les injections de prompt et autres attaques liées à l’IA
Si vous explorez le RAG (génération augmentée par récupération), je vous recommande vivement cet article sur la sécurisation du RAG
Prêt à adopter l’IA en toute sécurité ?
Téléchargez notre Guide d’achat sur la sécurité du code généré par l’IA pour commencer à adopter des outils de codage génératif comme GitHub Copilot, Google Gemini et Amazon CodeWhisperer, sans prendre de risques.