133 lines
5.6 KiB
Markdown
133 lines
5.6 KiB
Markdown
# Bonnes pratiques — Serveurs MCP
|
||
|
||
<br>
|
||
[](../../.mcp.json)
|
||
|
||
Les serveurs MCP (Model Context Protocol) étendent Claude Code avec des connexions vers des outils, bases de données et API externes. Ce guide couvre les serveurs recommandés pour l'usage quotidien et les bonnes pratiques de configuration.
|
||
|
||
<table width="100%">
|
||
<tr>
|
||
<td><a href="../">← Retour à Claude Code Best Practice</a></td>
|
||
<td align="right"><img src="../../!/claude-jumping.svg" alt="Claude" width="60" /></td>
|
||
</tr>
|
||
</table>
|
||
|
||
---
|
||
|
||
## Serveurs MCP pour l'usage quotidien
|
||
|
||
> *« J'ai exagéré avec 15 serveurs MCP en pensant que plus = mieux. Au final je n'en utilisais que 4 au quotidien. »* — [r/mcp](https://reddit.com/r/mcp/comments/1mj0fxs/) (682 upvotes)
|
||
|
||
| Serveur MCP | Ce qu'il fait | Ressources |
|
||
|------------|-------------|-----------|
|
||
| [**Context7**](https://github.com/upstash/context7) | Récupère la documentation à jour des bibliothèques en contexte. Évite les API hallucinées issues de données d'entraînement périmées | [Reddit : « de loin le meilleur MCP pour le code »](https://reddit.com/r/mcp/comments/1qarjqm/) · [npm](https://www.npmjs.com/package/@upstash/context7-mcp) |
|
||
| [**Playwright**](https://github.com/microsoft/playwright-mcp) | Automatisation du navigateur — implémente, teste et vérifie des fonctionnalités UI de façon autonome. Captures d'écran, navigation, test de formulaires | [Reddit : essentiel pour le frontend](https://reddit.com/r/mcp/comments/1m59pk0/) · [Docs](https://playwright.dev/) |
|
||
| [**Claude in Chrome**](https://github.com/nicobailon/claude-code-in-chrome-mcp) | Connecte Claude à ton vrai navigateur Chrome — inspecte la console, le réseau, le DOM. Débogue ce que les utilisateurs voient réellement | [Reddit : « changement radical » pour le débogage](https://reddit.com/r/mcp/comments/1qarjqm/5_mcps_that_have_genuinely_made_me_10x_faster/nza0i7t/) · [Rapport comparatif](../reports/claude-in-chrome-v-chrome-devtools-mcp.md) |
|
||
| [**DeepWiki**](https://github.com/devanshusemwal/deepwiki-mcp) | Récupère une documentation structurée de type wiki pour n'importe quel dépôt GitHub — architecture, surface d'API, relations | [Reddit : « place-le derrière une gateway avec Context7 »](https://reddit.com/r/mcp/comments/1qarjqm/) |
|
||
| [**Excalidraw**](https://github.com/antonpk1/excalidraw-mcp-app) | Génère des diagrammes d'architecture, organigrammes et designs de systèmes sous forme de croquis Excalidraw dessinés à la main, à partir de prompts | [GitHub](https://github.com/antonpk1/excalidraw-mcp-app) |
|
||
|
||
Recherche (Context7/DeepWiki) -> Débogage (Playwright/Chrome) -> Documentation (Excalidraw)
|
||
|
||
---
|
||
|
||
## Configuration
|
||
|
||
Les serveurs MCP se configurent dans `.mcp.json` à la racine du projet (portée projet) ou dans `~/.claude.json` (portée utilisateur).
|
||
|
||
### Types de serveurs
|
||
|
||
| Type | Transport | Exemple |
|
||
|------|-----------|---------|
|
||
| **stdio** | Lance un processus local | `npx`, `python`, binaire |
|
||
| **http** | Se connecte à une URL distante | endpoint HTTP/SSE |
|
||
|
||
### Exemple de `.mcp.json`
|
||
|
||
```json
|
||
{
|
||
"mcpServers": {
|
||
"context7": {
|
||
"command": "npx",
|
||
"args": ["-y", "@upstash/context7-mcp"]
|
||
},
|
||
"playwright": {
|
||
"command": "npx",
|
||
"args": ["-y", "@playwright/mcp"]
|
||
},
|
||
"deepwiki": {
|
||
"command": "npx",
|
||
"args": ["-y", "deepwiki-mcp"]
|
||
},
|
||
"remote-api": {
|
||
"type": "http",
|
||
"url": "https://mcp.example.com/mcp"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
Utilise l'expansion de variables d'environnement pour les secrets au lieu de committer des clés API dans `.mcp.json` :
|
||
|
||
```json
|
||
{
|
||
"mcpServers": {
|
||
"remote-api": {
|
||
"type": "http",
|
||
"url": "https://mcp.example.com/mcp?token=${MCP_API_TOKEN}"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### Paramètres pour les serveurs MCP
|
||
|
||
Ces paramètres dans `.claude/settings.json` contrôlent l'approbation des serveurs MCP :
|
||
|
||
| Clé | Type | Description |
|
||
|-----|------|-------------|
|
||
| `enableAllProjectMcpServers` | boolean | Auto-approuve tous les serveurs de `.mcp.json` sans demande |
|
||
| `enabledMcpjsonServers` | array | Allowlist de noms de serveurs spécifiques à auto-approuver |
|
||
| `disabledMcpjsonServers` | array | Blocklist de noms de serveurs spécifiques à rejeter |
|
||
|
||
### Règles de permission pour les outils MCP
|
||
|
||
Les outils MCP suivent la convention de nommage `mcp__<server>__<tool>` dans les règles de permission :
|
||
|
||
```json
|
||
{
|
||
"permissions": {
|
||
"allow": [
|
||
"mcp__*",
|
||
"mcp__context7__*",
|
||
"mcp__playwright__browser_snapshot"
|
||
],
|
||
"deny": [
|
||
"mcp__dangerous-server__*"
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Portées MCP
|
||
|
||
Les serveurs MCP peuvent être définis à trois niveaux :
|
||
|
||
| Portée | Emplacement | Objectif |
|
||
|-------|----------|---------|
|
||
| **Projet** | `.mcp.json` (racine du dépôt) | Serveurs partagés en équipe, committés dans git |
|
||
| **Utilisateur** | `~/.claude.json` (clé `mcpServers`) | Serveurs personnels sur tous les projets |
|
||
| **Sous-agent** | Frontmatter de l'agent (champ `mcpServers`) | Serveurs limités à un sous-agent spécifique |
|
||
|
||
Priorité : Sous-agent > Projet > Utilisateur
|
||
|
||
---
|
||
|
||
## Sources
|
||
|
||
- [Serveurs MCP — Documentation Claude Code](https://code.claude.com/docs/en/mcp)
|
||
- [Spécification du Model Context Protocol](https://modelcontextprotocol.io/)
|
||
- [5 MCP qui m'ont vraiment rendu 10× plus rapide — r/mcp](https://reddit.com/r/mcp/comments/1qarjqm/)
|
||
- [Discussion sur la surcharge de serveurs MCP — r/mcp](https://reddit.com/r/mcp/comments/1mj0fxs/)
|