Configuration MCP prete a l'emploi
Brancher Claude Code sur tes vraies sources : base de donnees, fichiers, Git, outils metier.
Temps de lecture : 10 min | Niveau : Intermediaire
Ce que tu sauras faire apres
- Ajouter un serveur MCP avec la bonne portee en une commande
- Ecrire un
.mcp.jsonpartageable avec ton equipe, sans y mettre de secret - Diagnostiquer un serveur qui ne se connecte pas
- Appliquer les regles de securite indispensables avant de brancher une base de donnees
Rappel en une phrase
MCP (Model Context Protocol) est la prise standard entre un assistant IA et tes outils. Un serveur MCP expose des outils (tools), des donnees (resources) et parfois des prompts. Claude Code est le client qui s'y branche.
Ajouter un serveur : les commandes
Serveur local (stdio)
Le serveur tourne sur ta machine, lance par Claude Code.
# La syntaxe : le -- separe les options de Claude de la commande du serveur
claude mcp add <nom> -- <commande> [arguments...]
# Exemple : acces a un dossier de fichiers
claude mcp add fichiers -- npx -y @modelcontextprotocol/server-filesystem C:/Users/Main/donnees
# Exemple avec une variable d'environnement
claude mcp add --env API_KEY=xxxxx --transport stdio mon-outil -- npx -y mon-serveur-mcpServeur distant (HTTP)
claude mcp add --transport http <nom> <url>
# Avec un jeton d'authentification
claude mcp add --transport http mon-saas https://exemple.com/mcp \
--header "Authorization: Bearer mon-jeton"Choisir la portee
claude mcp add --scope local ... # defaut : ce projet, pour toi seul
claude mcp add --scope project ... # ecrit dans .mcp.json, partage via Git
claude mcp add --scope user ... # tous tes projets, pour toi seul| Portee | Ou c'est stocke | Pour quoi |
|---|---|---|
local | Configuration privee du projet | Un essai, un serveur avec un secret perso |
project | .mcp.json a la racine du depot | Ce que toute l'equipe doit avoir |
user | Configuration utilisateur | Tes outils a toi, sur tous tes projets |
Gerer les serveurs
claude mcp list # lister et voir l'etat
claude mcp get <nom> # le detail d'un serveur
claude mcp remove <nom> # supprimer
claude mcp login <nom> # s'authentifier (serveurs OAuth)
claude mcp logout <nom> # effacer les identifiantsDans une session, la commande /mcp affiche l'etat de chaque serveur :
| Symbole | Signification |
|---|---|
| Connecte | Tout va bien |
| Authentification requise | Lance claude mcp login <nom> ou /mcp |
| Echec de connexion | Commande introuvable, mauvais arguments, ou serveur plante |
| En attente d'approbation | Serveur de portee projet : relance claude pour l'approuver |
Un .mcp.json complet
Fichier : .mcp.json a la racine du projet. Il se versionne dans Git — d'ou l'importance de n'y mettre aucun secret en clair.
{
"mcpServers": {
"entrepot-lecture-seule": {
"type": "stdio",
"command": "uvx",
"args": ["mcp-server-postgres"],
"env": {
"DATABASE_URL": "${DATABASE_URL_READONLY}"
}
},
"documentation": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "./docs"]
},
"outil-interne": {
"type": "http",
"url": "${MCP_INTERNE_URL:-https://mcp.interne.exemple.com/mcp}",
"headers": {
"Authorization": "Bearer ${MCP_INTERNE_TOKEN}"
}
}
}
}La syntaxe des variables
| Ecriture | Effet |
|---|---|
${VAR} | Remplace par la variable d'environnement VAR |
${VAR:-valeur} | Utilise VAR si elle existe, sinon la valeur par defaut |
C'est le point cle : le fichier partage ne contient que des noms de variables. Chacun definit ses propres valeurs sur sa machine.
Sous Windows, pour definir une variable dans ta session PowerShell :
$env:DATABASE_URL_READONLY = "postgresql://lecteur:motdepasse@serveur:5432/entrepot"Pour la rendre permanente, passe par les variables d'environnement utilisateur de Windows, ou un gestionnaire de secrets. Ne la mets jamais dans un fichier versionne.
Les cinq regles de securite a ne pas negocier
- Lecture seule par defaut. Cree un utilisateur de base de donnees dedie qui n'a que le droit
SELECT. C'est la protection la plus efficace, et elle ne depend pas du modele.
CREATE USER claude_lecture WITH PASSWORD '[MOT_DE_PASSE]';
GRANT CONNECT ON DATABASE entrepot TO claude_lecture;
GRANT USAGE ON SCHEMA analytics TO claude_lecture;
GRANT SELECT ON ALL TABLES IN SCHEMA analytics TO claude_lecture;- Jamais de secret dans
.mcp.json. Uniquement des${VARIABLES}. - Un serveur tiers est du code qui tourne chez toi. Avant d'installer un serveur MCP trouve sur internet : regarde qui le publie, lis le code si tu peux, et prefere les serveurs officiels.
- Mefie-toi du contenu qui revient d'un outil. Si une table contient du texte libre ecrit par des utilisateurs, ce texte peut contenir des instructions destinees a piller ton systeme. C'est l'injection indirecte de prompt. Ne laisse jamais un agent enchainer « lire une donnee » puis « executer une action » sans verification.
- Limite le perimetre. Un serveur de fichiers pointe sur
./docs, pas surC:/. Un serveur de base de donnees voit un schema, pas toute l'instance.
Diagnostiquer un serveur qui ne demarre pas
| Symptome | Cause frequente | Verification |
|---|---|---|
| Echec de connexion immediat | La commande n'existe pas sur ta machine | Lance la commande seule dans ton terminal |
| Echec apres quelques secondes | Identifiants faux ou base inaccessible | Teste la connexion avec un client SQL classique |
| Le serveur demarre mais aucun outil | Mauvaise version, ou mauvais arguments | claude mcp get <nom> puis relis la doc du serveur |
| En attente d'approbation | Serveur de portee projet jamais approuve | Relance claude dans le dossier et accepte |
| Variable non remplacee | La variable n'existe pas dans la session | Affiche-la : echo $env:MA_VARIABLE |
Sous Windows, si un serveur lance par npx echoue, essaie cmd /c npx comme commande.
Template a remplir
{
"mcpServers": {
"[NOM_COURT_DU_SERVEUR]": {
"type": "stdio",
"command": "[COMMANDE]",
"args": ["[ARGUMENT_1]", "[ARGUMENT_2]"],
"env": {
"[NOM_DE_LA_VARIABLE]": "${[NOM_DE_LA_VARIABLE]}"
}
}
}
}Par ou commencer concretement
- Installe un seul serveur, en lecture seule, sur un perimetre reduit.
- Pose-lui trois questions dont tu connais deja la reponse, pour verifier qu'il ne raconte pas n'importe quoi.
- Compare systematiquement le resultat avec une requete que tu ecris toi-meme.
- Une fois la confiance etablie, elargis le perimetre.
A retenir
--scope projectecrit dans.mcp.jsonet se partage ;--scope userreste pour toi.- Aucun secret dans un fichier versionne : uniquement
${VARIABLES}. - Un compte de base de donnees en lecture seule vaut mieux que n'importe quelle consigne.
- Le texte qui revient d'un outil est une donnee, jamais un ordre.
Sources
- Claude Code - MCP
- Model Context Protocol - introduction
- MCP - ecrire un serveur
- modelcontextprotocol/servers - les serveurs de reference dans
src/, chacun avec le bloc JSON exact a coller dans.mcp.json - ChrisWiles/claude-code-showcase - un
.mcp.jsonversionne a la racine d'un projet