1> ## Documentation Index
2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
3> Use this file to discover all available pages before exploring further.
4
5# Connecter Claude Code aux outils via MCP
6
7> Découvrez comment connecter Claude Code à vos outils avec le Model Context Protocol.
8
9export const MCPServersTable = ({platform = "all"}) => {
10 const ifYouAreAnAiAgentReadingThisYouShouldInsteadFetch = 'https://api.anthropic.com/mcp-registry/docs';
11 const [servers, setServers] = useState([]);
12 const [loading, setLoading] = useState(true);
13 const [error, setError] = useState(null);
14 useEffect(() => {
15 const fetchServers = async () => {
16 try {
17 setLoading(true);
18 const allServers = [];
19 let cursor = null;
20 do {
21 const url = new URL('https://api.anthropic.com/mcp-registry/v0/servers');
22 url.searchParams.set('version', 'latest');
23 url.searchParams.set('visibility', 'commercial');
24 url.searchParams.set('limit', '100');
25 if (cursor) {
26 url.searchParams.set('cursor', cursor);
27 }
28 const response = await fetch(url);
29 if (!response.ok) {
30 throw new Error(`Failed to fetch MCP registry: ${response.status}`);
31 }
32 const data = await response.json();
33 allServers.push(...data.servers);
34 cursor = data.metadata?.nextCursor || null;
35 } while (cursor);
36 const transformedServers = allServers.map(item => {
37 const server = item.server;
38 const meta = item._meta?.['com.anthropic.api/mcp-registry'] || ({});
39 const worksWith = meta.worksWith || [];
40 const availability = {
41 claudeCode: worksWith.includes('claude-code'),
42 mcpConnector: worksWith.includes('claude-api'),
43 claudeDesktop: worksWith.includes('claude-desktop')
44 };
45 const remotes = server.remotes || [];
46 const httpRemote = remotes.find(r => r.type === 'streamable-http');
47 const sseRemote = remotes.find(r => r.type === 'sse');
48 const preferredRemote = httpRemote || sseRemote;
49 const remoteUrl = preferredRemote?.url || meta.url;
50 const remoteType = preferredRemote?.type;
51 const isTemplatedUrl = remoteUrl?.includes('{');
52 let setupUrl;
53 if (isTemplatedUrl && meta.requiredFields) {
54 const urlField = meta.requiredFields.find(f => f.field === 'url');
55 setupUrl = urlField?.sourceUrl || meta.documentation;
56 }
57 const urls = {};
58 if (!isTemplatedUrl) {
59 if (remoteType === 'streamable-http') {
60 urls.http = remoteUrl;
61 } else if (remoteType === 'sse') {
62 urls.sse = remoteUrl;
63 }
64 }
65 let envVars = [];
66 if (server.packages && server.packages.length > 0) {
67 const npmPackage = server.packages.find(p => p.registryType === 'npm');
68 if (npmPackage) {
69 urls.stdio = `npx -y ${npmPackage.identifier}`;
70 if (npmPackage.environmentVariables) {
71 envVars = npmPackage.environmentVariables;
72 }
73 }
74 }
75 return {
76 name: meta.displayName || server.title || server.name,
77 description: meta.oneLiner || server.description,
78 documentation: meta.documentation,
79 urls: urls,
80 envVars: envVars,
81 availability: availability,
82 customCommands: meta.claudeCodeCopyText ? {
83 claudeCode: meta.claudeCodeCopyText
84 } : undefined,
85 setupUrl: setupUrl
86 };
87 });
88 setServers(transformedServers);
89 setError(null);
90 } catch (err) {
91 setError(err.message);
92 console.error('Error fetching MCP registry:', err);
93 } finally {
94 setLoading(false);
95 }
96 };
97 fetchServers();
98 }, []);
99 const generateClaudeCodeCommand = server => {
100 if (server.customCommands && server.customCommands.claudeCode) {
101 return server.customCommands.claudeCode.replace('--transport streamable-http', '--transport http');
102 }
103 const serverSlug = server.name.toLowerCase().replace(/[^a-z0-9]/g, '-');
104 if (server.urls.http) {
105 return `claude mcp add ${serverSlug} --transport http ${server.urls.http}`;
106 }
107 if (server.urls.sse) {
108 return `claude mcp add ${serverSlug} --transport sse ${server.urls.sse}`;
109 }
110 if (server.urls.stdio) {
111 const envFlags = server.envVars && server.envVars.length > 0 ? server.envVars.map(v => `--env ${v.name}=YOUR_${v.name}`).join(' ') : '';
112 const baseCommand = `claude mcp add ${serverSlug} --transport stdio`;
113 return envFlags ? `${baseCommand} ${envFlags} -- ${server.urls.stdio}` : `${baseCommand} -- ${server.urls.stdio}`;
114 }
115 return null;
116 };
117 if (loading) {
118 return <div>Loading MCP servers...</div>;
119 }
120 if (error) {
121 return <div>Error loading MCP servers: {error}</div>;
122 }
123 const filteredServers = servers.filter(server => {
124 if (platform === "claudeCode") {
125 return server.availability.claudeCode;
126 } else if (platform === "mcpConnector") {
127 return server.availability.mcpConnector;
128 } else if (platform === "claudeDesktop") {
129 return server.availability.claudeDesktop;
130 } else if (platform === "all") {
131 return true;
132 } else {
133 throw new Error(`Unknown platform: ${platform}`);
134 }
135 });
136 return <>
137 <style jsx>{`
138 .cards-container {
139 display: grid;
140 gap: 1rem;
141 margin-bottom: 2rem;
142 }
143 .server-card {
144 border: 1px solid var(--border-color, #e5e7eb);
145 border-radius: 6px;
146 padding: 1rem;
147 }
148 .command-row {
149 display: flex;
150 align-items: center;
151 gap: 0.25rem;
152 }
153 .command-row code {
154 font-size: 0.75rem;
155 overflow-x: auto;
156 }
157 `}</style>
158
159 <div className="cards-container">
160 {filteredServers.map(server => {
161 const claudeCodeCommand = generateClaudeCodeCommand(server);
162 const mcpUrl = server.urls.http || server.urls.sse;
163 const commandToShow = platform === "claudeCode" ? claudeCodeCommand : mcpUrl;
164 return <div key={server.name} className="server-card">
165 <div>
166 {server.documentation ? <a href={server.documentation}>
167 <strong>{server.name}</strong>
168 </a> : <strong>{server.name}</strong>}
169 </div>
170
171 <p style={{
172 margin: '0.5rem 0',
173 fontSize: '0.9rem'
174 }}>
175 {server.description}
176 </p>
177
178 {server.setupUrl && <p style={{
179 margin: '0.25rem 0',
180 fontSize: '0.8rem',
181 fontStyle: 'italic',
182 opacity: 0.7
183 }}>
184 Requires user-specific URL.{' '}
185 <a href={server.setupUrl} style={{
186 textDecoration: 'underline'
187 }}>
188 Get your URL here
189 </a>.
190 </p>}
191
192 {commandToShow && !server.setupUrl && <>
193 <p style={{
194 display: 'block',
195 fontSize: '0.75rem',
196 fontWeight: 500,
197 minWidth: 'fit-content',
198 marginTop: '0.5rem',
199 marginBottom: 0
200 }}>
201 {platform === "claudeCode" ? "Command" : "URL"}
202 </p>
203 <div className="command-row">
204 <code>
205 {commandToShow}
206 </code>
207 </div>
208 </>}
209 </div>;
210 })}
211 </div>
212 </>;
213};
214
215Claude Code peut se connecter à des centaines d'outils externes et de sources de données via le [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction), une norme open source pour les intégrations IA-outils. Les serveurs MCP donnent à Claude Code accès à vos outils, bases de données et API.
216
217Connectez un serveur lorsque vous vous trouvez à copier des données dans le chat à partir d'un autre outil, comme un suivi de problèmes ou un tableau de bord de surveillance. Une fois connecté, Claude peut lire et agir sur ce système directement au lieu de travailler à partir de ce que vous collez.
218
219## Ce que vous pouvez faire avec MCP
220
221Avec les serveurs MCP connectés, vous pouvez demander à Claude Code de :
222
223* **Implémenter des fonctionnalités à partir de suivi de problèmes** : « Ajouter la fonctionnalité décrite dans le problème JIRA ENG-4521 et créer une PR sur GitHub. »
224* **Analyser les données de surveillance** : « Vérifier Sentry et Statsig pour vérifier l'utilisation de la fonctionnalité décrite dans ENG-4521. »
225* **Interroger les bases de données** : « Trouver les e-mails de 10 utilisateurs aléatoires qui ont utilisé la fonctionnalité ENG-4521, en fonction de notre base de données PostgreSQL. »
226* **Intégrer les conceptions** : « Mettre à jour notre modèle d'e-mail standard en fonction des nouvelles conceptions Figma qui ont été publiées sur Slack »
227* **Automatiser les flux de travail** : « Créer des brouillons Gmail invitant ces 10 utilisateurs à une session de rétroaction sur la nouvelle fonctionnalité. »
228* **Réagir aux événements externes** : Un serveur MCP peut également agir comme un [canal](/fr/channels) qui pousse des messages dans votre session, afin que Claude réagisse aux messages Telegram, aux discussions Discord ou aux événements webhook pendant que vous êtes absent.
229
230## Serveurs MCP populaires
231
232Voici quelques serveurs MCP couramment utilisés que vous pouvez connecter à Claude Code :
233
234<Warning>
235 Utilisez les serveurs MCP tiers à vos propres risques - Anthropic n'a pas vérifié
236 l'exactitude ou la sécurité de tous ces serveurs.
237 Assurez-vous que vous faites confiance aux serveurs MCP que vous installez.
238 Soyez particulièrement prudent lors de l'utilisation de serveurs MCP qui pourraient récupérer du contenu non approuvé,
239 car ceux-ci peuvent vous exposer à un risque d'injection de prompt.
240</Warning>
241
242<MCPServersTable platform="claudeCode" />
243
244<Note>
245 **Besoin d'une intégration spécifique ?** [Trouvez des centaines d'autres serveurs MCP sur GitHub](https://github.com/modelcontextprotocol/servers), ou créez le vôtre en utilisant le [MCP SDK](https://modelcontextprotocol.io/quickstart/server).
246</Note>
247
248## Installation des serveurs MCP
249
250Les serveurs MCP peuvent être configurés de trois façons différentes selon vos besoins :
251
252### Option 1 : Ajouter un serveur HTTP distant
253
254Les serveurs HTTP sont l'option recommandée pour se connecter aux serveurs MCP distants. C'est le transport le plus largement supporté pour les services basés sur le cloud.
255
256```bash theme={null}
257# Syntaxe de base
258claude mcp add --transport http <name> <url>
259
260# Exemple réel : Se connecter à Notion
261claude mcp add --transport http notion https://mcp.notion.com/mcp
262
263# Exemple avec jeton Bearer
264claude mcp add --transport http secure-api https://api.example.com/mcp \
265 --header "Authorization: Bearer your-token"
266```
267
268### Option 2 : Ajouter un serveur SSE distant
269
270<Warning>
271 Le transport SSE (Server-Sent Events) est déprécié. Utilisez plutôt les serveurs HTTP, si disponibles.
272</Warning>
273
274```bash theme={null}
275# Syntaxe de base
276claude mcp add --transport sse <name> <url>
277
278# Exemple réel : Se connecter à Asana
279claude mcp add --transport sse asana https://mcp.asana.com/sse
280
281# Exemple avec en-tête d'authentification
282claude mcp add --transport sse private-api https://api.company.com/sse \
283 --header "X-API-Key: your-key-here"
284```
285
286### Option 3 : Ajouter un serveur stdio local
287
288Les serveurs Stdio s'exécutent en tant que processus locaux sur votre machine. Ils sont idéaux pour les outils qui ont besoin d'un accès direct au système ou de scripts personnalisés.
289
290```bash theme={null}
291# Syntaxe de base
292claude mcp add [options] <name> -- <command> [args...]
293
294# Exemple réel : Ajouter un serveur Airtable
295claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \
296 -- npx -y airtable-mcp-server
297```
298
299<Note>
300 **Important : Ordre des options**
301
302 Toutes les options (`--transport`, `--env`, `--scope`, `--header`) doivent venir **avant** le nom du serveur. Le `--` (double tiret) sépare ensuite le nom du serveur de la commande et des arguments qui sont passés au serveur MCP.
303
304 Par exemple :
305
306 * `claude mcp add --transport stdio myserver -- npx server` → exécute `npx server`
307 * `claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080` → exécute `python server.py --port 8080` avec `KEY=value` dans l'environnement
308
309 Cela évite les conflits entre les drapeaux de Claude et les drapeaux du serveur.
310</Note>
311
312### Gestion de vos serveurs
313
314Une fois configurés, vous pouvez gérer vos serveurs MCP avec ces commandes :
315
316```bash theme={null}
317# Lister tous les serveurs configurés
318claude mcp list
319
320# Obtenir les détails d'un serveur spécifique
321claude mcp get github
322
323# Supprimer un serveur
324claude mcp remove github
325
326# (dans Claude Code) Vérifier l'état du serveur
327/mcp
328```
329
330### Mises à jour dynamiques des outils
331
332Claude Code supporte les notifications MCP `list_changed`, permettant aux serveurs MCP de mettre à jour dynamiquement leurs outils, prompts et ressources disponibles sans vous obliger à vous déconnecter et reconnecter. Lorsqu'un serveur MCP envoie une notification `list_changed`, Claude Code actualise automatiquement les capacités disponibles de ce serveur.
333
334### Reconnexion automatique
335
336Si un serveur HTTP ou SSE se déconnecte en cours de session, Claude Code se reconnecte automatiquement avec un backoff exponentiel : jusqu'à cinq tentatives, en commençant par un délai d'une seconde et en doublant à chaque fois. Le serveur apparaît comme en attente dans `/mcp` pendant que la reconnexion est en cours. Après cinq tentatives échouées, le serveur est marqué comme échoué et vous pouvez réessayer manuellement à partir de `/mcp`. Les serveurs Stdio sont des processus locaux et ne sont pas reconnectés automatiquement.
337
338Le même backoff s'applique lorsqu'un serveur HTTP ou SSE échoue sa connexion initiale au démarrage. À partir de la v2.1.121, Claude Code réessaie la connexion initiale jusqu'à trois fois sur les erreurs transitoires telles qu'une réponse 5xx, une connexion refusée ou un délai d'expiration, puis marque le serveur comme échoué s'il ne peut toujours pas se connecter. Les erreurs d'authentification et les erreurs de non-trouvé ne sont pas réessayées car elles nécessitent une modification de la configuration pour être résolues.
339
340### Pousser des messages avec des canaux
341
342Un serveur MCP peut également pousser des messages directement dans votre session afin que Claude puisse réagir aux événements externes comme les résultats CI, les alertes de surveillance ou les messages de chat. Pour activer cela, votre serveur déclare la capacité `claude/channel` et vous l'activez avec le drapeau `--channels` au démarrage. Consultez [Canaux](/fr/channels) pour utiliser un canal officiellement supporté, ou [Référence des canaux](/fr/channels-reference) pour créer le vôtre.
343
344<Tip>
345 Conseils :
346
347 * Utilisez le drapeau `--scope` pour spécifier où la configuration est stockée :
348 * `local` (par défaut) : Disponible uniquement pour vous dans le projet actuel (appelé `project` dans les versions antérieures)
349 * `project` : Partagé avec tous les membres du projet via le fichier `.mcp.json`
350 * `user` : Disponible pour vous dans tous les projets (appelé `global` dans les versions antérieures)
351 * Définissez les variables d'environnement avec les drapeaux `--env` (par exemple, `--env KEY=value`)
352 * Configurez le délai d'expiration du démarrage du serveur MCP en utilisant la variable d'environnement MCP\_TIMEOUT (par exemple, `MCP_TIMEOUT=10000 claude` définit un délai d'expiration de 10 secondes)
353 * Claude Code affichera un avertissement lorsque la sortie de l'outil MCP dépasse 10 000 jetons. Pour augmenter cette limite, définissez la variable d'environnement `MAX_MCP_OUTPUT_TOKENS` (par exemple, `MAX_MCP_OUTPUT_TOKENS=50000`)
354 * Utilisez `/mcp` pour vous authentifier auprès des serveurs distants qui nécessitent une authentification OAuth 2.0
355</Tip>
356
357### Serveurs MCP fournis par les plugins
358
359Les [plugins](/fr/plugins) peuvent regrouper des serveurs MCP, fournissant automatiquement des outils et des intégrations lorsque le plugin est activé. Les serveurs MCP des plugins fonctionnent de manière identique aux serveurs configurés par l'utilisateur.
360
361**Comment fonctionnent les serveurs MCP des plugins** :
362
363* Les plugins définissent les serveurs MCP dans `.mcp.json` à la racine du plugin ou en ligne dans `plugin.json`
364* Lorsqu'un plugin est activé, ses serveurs MCP démarrent automatiquement
365* Les outils MCP des plugins apparaissent aux côtés des outils MCP configurés manuellement
366* Les serveurs des plugins sont gérés via l'installation du plugin (pas via les commandes `/mcp`)
367
368**Exemple de configuration MCP du plugin** :
369
370Dans `.mcp.json` à la racine du plugin :
371
372```json theme={null}
373{
374 "mcpServers": {
375 "database-tools": {
376 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
377 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
378 "env": {
379 "DB_URL": "${DB_URL}"
380 }
381 }
382 }
383}
384```
385
386Ou en ligne dans `plugin.json` :
387
388```json theme={null}
389{
390 "name": "my-plugin",
391 "mcpServers": {
392 "plugin-api": {
393 "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
394 "args": ["--port", "8080"]
395 }
396 }
397}
398```
399
400**Fonctionnalités MCP du plugin** :
401
402* **Cycle de vie automatique** : Au démarrage de la session, les serveurs des plugins activés se connectent automatiquement. Si vous activez ou désactivez un plugin pendant une session, exécutez `/reload-plugins` pour connecter ou déconnecter ses serveurs MCP
403* **Variables d'environnement** : utilisez `${CLAUDE_PLUGIN_ROOT}` pour les fichiers du plugin groupés et `${CLAUDE_PLUGIN_DATA}` pour l'[état persistant](/fr/plugins-reference#persistent-data-directory) qui survit aux mises à jour du plugin
404* **Accès aux variables d'environnement utilisateur** : Accès aux mêmes variables d'environnement que les serveurs configurés manuellement
405* **Types de transport multiples** : Support des transports stdio, SSE et HTTP (le support des transports peut varier selon le serveur)
406
407**Affichage des serveurs MCP du plugin** :
408
409```bash theme={null}
410# Dans Claude Code, voir tous les serveurs MCP y compris ceux du plugin
411/mcp
412```
413
414Les serveurs des plugins apparaissent dans la liste avec des indicateurs montrant qu'ils proviennent des plugins.
415
416**Avantages des serveurs MCP du plugin** :
417
418* **Distribution groupée** : Outils et serveurs emballés ensemble
419* **Configuration automatique** : Aucune configuration MCP manuelle nécessaire
420* **Cohérence d'équipe** : Tout le monde obtient les mêmes outils lorsque le plugin est installé
421
422Consultez la [référence des composants du plugin](/fr/plugins-reference#mcp-servers) pour plus de détails sur le regroupement des serveurs MCP avec les plugins.
423
424## Portées d'installation MCP
425
426Les serveurs MCP peuvent être configurés à trois portées différentes. La portée que vous choisissez contrôle les projets dans lesquels le serveur se charge et si la configuration est partagée avec votre équipe.
427
428| Portée | Se charge dans | Partagé avec l'équipe | Stocké dans |
429| -------------------------- | ------------------------ | ------------------------------- | --------------------------------- |
430| [Local](#local-scope) | Projet actuel uniquement | Non | `~/.claude.json` |
431| [Projet](#project-scope) | Projet actuel uniquement | Oui, via le contrôle de version | `.mcp.json` à la racine du projet |
432| [Utilisateur](#user-scope) | Tous vos projets | Non | `~/.claude.json` |
433
434### Portée locale
435
436La portée locale est la portée par défaut. Un serveur à portée locale se charge uniquement dans le projet où vous l'avez ajouté et reste privé pour vous. Claude Code le stocke dans `~/.claude.json` sous le chemin de ce projet, donc le même serveur n'apparaîtra pas dans vos autres projets. Utilisez la portée locale pour les serveurs de développement personnels, les configurations expérimentales ou les serveurs avec des identifiants que vous ne voulez pas dans le contrôle de version.
437
438<Note>
439 Le terme « portée locale » pour les serveurs MCP diffère des paramètres locaux généraux. Les serveurs MCP à portée locale sont stockés dans `~/.claude.json` (votre répertoire personnel), tandis que les paramètres locaux généraux utilisent `.claude/settings.local.json` (dans le répertoire du projet). Consultez [Paramètres](/fr/settings#settings-files) pour plus de détails sur les emplacements des fichiers de paramètres.
440</Note>
441
442```bash theme={null}
443# Ajouter un serveur à portée locale (par défaut)
444claude mcp add --transport http stripe https://mcp.stripe.com
445
446# Spécifier explicitement la portée locale
447claude mcp add --transport http stripe --scope local https://mcp.stripe.com
448```
449
450La commande écrit le serveur dans l'entrée de votre projet actuel dans `~/.claude.json`. L'exemple ci-dessous montre le résultat lorsque vous l'exécutez à partir de `/path/to/your/project` :
451
452```json theme={null}
453{
454 "projects": {
455 "/path/to/your/project": {
456 "mcpServers": {
457 "stripe": {
458 "type": "http",
459 "url": "https://mcp.stripe.com"
460 }
461 }
462 }
463 }
464}
465```
466
467### Portée du projet
468
469Les serveurs à portée de projet permettent la collaboration d'équipe en stockant les configurations dans un fichier `.mcp.json` à la racine de votre projet. Ce fichier est conçu pour être archivé dans le contrôle de version, garantissant que tous les membres de l'équipe ont accès aux mêmes outils et services MCP. Lorsque vous ajoutez un serveur à portée de projet, Claude Code crée ou met à jour automatiquement ce fichier avec la structure de configuration appropriée.
470
471```bash theme={null}
472# Ajouter un serveur à portée de projet
473claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp
474```
475
476Le fichier `.mcp.json` résultant suit un format standardisé :
477
478```json theme={null}
479{
480 "mcpServers": {
481 "shared-server": {
482 "command": "/path/to/server",
483 "args": [],
484 "env": {}
485 }
486 }
487}
488```
489
490Pour des raisons de sécurité, Claude Code demande une approbation avant d'utiliser les serveurs à portée de projet à partir des fichiers `.mcp.json`. Si vous devez réinitialiser ces choix d'approbation, utilisez la commande `claude mcp reset-project-choices`.
491
492### Portée utilisateur
493
494Les serveurs à portée utilisateur sont stockés dans `~/.claude.json` et offrent une accessibilité inter-projets, les rendant disponibles dans tous les projets de votre machine tout en restant privés pour votre compte utilisateur. Cette portée fonctionne bien pour les serveurs utilitaires personnels, les outils de développement ou les services que vous utilisez fréquemment dans différents projets.
495
496```bash theme={null}
497# Ajouter un serveur utilisateur
498claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic
499```
500
501### Hiérarchie de portée et précédence
502
503Lorsque le même serveur est défini à plus d'un endroit, Claude Code s'y connecte une fois, en utilisant la définition de la source avec la plus haute priorité :
504
5051. Portée locale
5062. Portée du projet
5073. Portée utilisateur
5084. [Serveurs fournis par les plugins](/fr/plugins)
5095. [Connecteurs claude.ai](#use-mcp-servers-from-claude-ai)
510
511Les trois portées correspondent aux doublons par nom. Les plugins et les connecteurs correspondent par point de terminaison, donc celui qui pointe vers la même URL ou commande qu'un serveur ci-dessus est traité comme un doublon.
512
513### Expansion des variables d'environnement dans `.mcp.json`
514
515Claude Code supporte l'expansion des variables d'environnement dans les fichiers `.mcp.json`, permettant aux équipes de partager des configurations tout en maintenant la flexibilité pour les chemins spécifiques à la machine et les valeurs sensibles comme les clés API.
516
517**Syntaxe supportée :**
518
519* `${VAR}` - Se développe à la valeur de la variable d'environnement `VAR`
520* `${VAR:-default}` - Se développe à `VAR` si défini, sinon utilise `default`
521
522**Emplacements d'expansion :**
523Les variables d'environnement peuvent être développées dans :
524
525* `command` - Le chemin de l'exécutable du serveur
526* `args` - Arguments de la ligne de commande
527* `env` - Variables d'environnement passées au serveur
528* `url` - Pour les types de serveur HTTP
529* `headers` - Pour l'authentification du serveur HTTP
530
531**Exemple avec expansion de variable :**
532
533```json theme={null}
534{
535 "mcpServers": {
536 "api-server": {
537 "type": "http",
538 "url": "${API_BASE_URL:-https://api.example.com}/mcp",
539 "headers": {
540 "Authorization": "Bearer ${API_KEY}"
541 }
542 }
543 }
544}
545```
546
547Si une variable d'environnement requise n'est pas définie et n'a pas de valeur par défaut, Claude Code ne pourra pas analyser la configuration.
548
549## Exemples pratiques
550
551{/* ### Exemple : Automatiser les tests de navigateur avec Playwright
552
553```bash
554claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest
555```
556
557Ensuite, écrivez et exécutez des tests de navigateur :
558
559```text
560Test si le flux de connexion fonctionne avec test@example.com
561```
562```text
563Prendre une capture d'écran de la page de paiement sur mobile
564```
565```text
566Vérifier que la fonction de recherche retourne des résultats
567``` */}
568
569### Exemple : Surveiller les erreurs avec Sentry
570
571```bash theme={null}
572claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
573```
574
575Authentifiez-vous avec votre compte Sentry :
576
577```text theme={null}
578/mcp
579```
580
581Ensuite, déboguez les problèmes de production :
582
583```text theme={null}
584Quelles sont les erreurs les plus courantes au cours des 24 dernières heures ?
585```
586
587```text theme={null}
588Montrez-moi la trace de pile pour l'erreur ID abc123
589```
590
591```text theme={null}
592Quel déploiement a introduit ces nouvelles erreurs ?
593```
594
595### Exemple : Se connecter à GitHub pour les révisions de code
596
597Le serveur MCP distant de GitHub s'authentifie avec un jeton d'accès personnel GitHub transmis en tant qu'en-tête. Pour en obtenir un, ouvrez vos [paramètres de jeton GitHub](https://github.com/settings/personal-access-tokens), générez un nouveau jeton à granularité fine avec accès aux référentiels avec lesquels vous souhaitez que Claude travaille, puis ajoutez le serveur :
598
599```bash theme={null}
600claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
601 --header "Authorization: Bearer YOUR_GITHUB_PAT"
602```
603
604Ensuite, travaillez avec GitHub :
605
606```text theme={null}
607Examinez la PR #456 et suggérez des améliorations
608```
609
610```text theme={null}
611Créer un nouveau problème pour le bogue que nous venons de trouver
612```
613
614```text theme={null}
615Montrez-moi toutes les PR ouvertes qui me sont assignées
616```
617
618### Exemple : Interroger votre base de données PostgreSQL
619
620```bash theme={null}
621claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
622 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"
623```
624
625Ensuite, interrogez votre base de données naturellement :
626
627```text theme={null}
628Quel est notre revenu total ce mois-ci ?
629```
630
631```text theme={null}
632Montrez-moi le schéma de la table des commandes
633```
634
635```text theme={null}
636Trouver les clients qui n'ont pas effectué d'achat depuis 90 jours
637```
638
639## S'authentifier auprès des serveurs MCP distants
640
641De nombreux serveurs MCP basés sur le cloud nécessitent une authentification. Claude Code supporte OAuth 2.0 pour les connexions sécurisées.
642
643<Steps>
644 <Step title="Ajouter le serveur qui nécessite une authentification">
645 Par exemple :
646
647 ```bash theme={null}
648 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
649 ```
650 </Step>
651
652 <Step title="Utiliser la commande /mcp dans Claude Code">
653 Dans Claude Code, utilisez la commande :
654
655 ```text theme={null}
656 /mcp
657 ```
658
659 Ensuite, suivez les étapes dans votre navigateur pour vous connecter.
660 </Step>
661</Steps>
662
663<Tip>
664 Conseils :
665
666 * Les jetons d'authentification sont stockés de manière sécurisée et actualisés automatiquement
667 * Utilisez « Clear authentication » dans le menu `/mcp` pour révoquer l'accès
668 * Si votre navigateur ne s'ouvre pas automatiquement, copiez l'URL fournie et ouvrez-la manuellement
669 * Si la redirection du navigateur échoue avec une erreur de connexion après l'authentification, collez l'URL de rappel complète de la barre d'adresse de votre navigateur dans l'invite d'URL qui apparaît dans Claude Code
670 * L'authentification OAuth fonctionne avec les serveurs HTTP
671</Tip>
672
673### Utiliser un port de rappel OAuth fixe
674
675Certains serveurs MCP nécessitent un URI de redirection spécifique enregistré à l'avance. Par défaut, Claude Code choisit un port disponible aléatoire pour le rappel OAuth. Utilisez `--callback-port` pour fixer le port afin qu'il corresponde à un URI de redirection pré-enregistré de la forme `http://localhost:PORT/callback`.
676
677Vous pouvez utiliser `--callback-port` seul (avec l'enregistrement dynamique du client) ou ensemble avec `--client-id` (avec les identifiants pré-configurés).
678
679```bash theme={null}
680# Port de rappel fixe avec enregistrement dynamique du client
681claude mcp add --transport http \
682 --callback-port 8080 \
683 my-server https://mcp.example.com/mcp
684```
685
686### Utiliser les identifiants OAuth pré-configurés
687
688Certains serveurs MCP ne supportent pas la configuration OAuth automatique via l'enregistrement dynamique du client. Si vous voyez une erreur comme « Incompatible auth server: does not support dynamic client registration », le serveur nécessite des identifiants pré-configurés. Claude Code supporte également les serveurs qui utilisent un document de métadonnées d'ID client (CIMD) au lieu de l'enregistrement dynamique du client, et les découvre automatiquement. Si la découverte automatique échoue, enregistrez d'abord une application OAuth via le portail des développeurs du serveur, puis fournissez les identifiants lors de l'ajout du serveur.
689
690<Steps>
691 <Step title="Enregistrer une application OAuth auprès du serveur">
692 Créez une application via le portail des développeurs du serveur et notez votre ID client et votre secret client.
693
694 De nombreux serveurs nécessitent également un URI de redirection. Si c'est le cas, choisissez un port et enregistrez un URI de redirection au format `http://localhost:PORT/callback`. Utilisez ce même port avec `--callback-port` à l'étape suivante.
695 </Step>
696
697 <Step title="Ajouter le serveur avec vos identifiants">
698 Choisissez l'une des méthodes suivantes. Le port utilisé pour `--callback-port` peut être n'importe quel port disponible. Il doit simplement correspondre à l'URI de redirection que vous avez enregistré à l'étape précédente.
699
700 <Tabs>
701 <Tab title="claude mcp add">
702 Utilisez `--client-id` pour passer l'ID client de votre application. Le drapeau `--client-secret` demande le secret avec une entrée masquée :
703
704 ```bash theme={null}
705 claude mcp add --transport http \
706 --client-id your-client-id --client-secret --callback-port 8080 \
707 my-server https://mcp.example.com/mcp
708 ```
709 </Tab>
710
711 <Tab title="claude mcp add-json">
712 Incluez l'objet `oauth` dans la configuration JSON et passez `--client-secret` comme drapeau séparé :
713
714 ```bash theme={null}
715 claude mcp add-json my-server \
716 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \
717 --client-secret
718 ```
719 </Tab>
720
721 <Tab title="claude mcp add-json (port de rappel uniquement)">
722 Utilisez `--callback-port` sans ID client pour fixer le port tout en utilisant l'enregistrement dynamique du client :
723
724 ```bash theme={null}
725 claude mcp add-json my-server \
726 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'
727 ```
728 </Tab>
729
730 <Tab title="CI / variable d'environnement">
731 Définissez le secret via une variable d'environnement pour ignorer l'invite interactive :
732
733 ```bash theme={null}
734 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \
735 --client-id your-client-id --client-secret --callback-port 8080 \
736 my-server https://mcp.example.com/mcp
737 ```
738 </Tab>
739 </Tabs>
740 </Step>
741
742 <Step title="S'authentifier dans Claude Code">
743 Exécutez `/mcp` dans Claude Code et suivez le flux de connexion du navigateur.
744 </Step>
745</Steps>
746
747<Tip>
748 Conseils :
749
750 * Le secret client est stocké de manière sécurisée dans votre trousseau système (macOS) ou un fichier d'identifiants, pas dans votre configuration
751 * Si le serveur utilise un client OAuth public sans secret, utilisez uniquement `--client-id` sans `--client-secret`
752 * `--callback-port` peut être utilisé avec ou sans `--client-id`
753 * Ces drapeaux s'appliquent uniquement aux transports HTTP et SSE. Ils n'ont aucun effet sur les serveurs stdio
754 * Utilisez `claude mcp get <name>` pour vérifier que les identifiants OAuth sont configurés pour un serveur
755</Tip>
756
757### Remplacer la découverte des métadonnées OAuth
758
759Pointez Claude Code vers une URL de métadonnées spécifique du serveur d'autorisation OAuth pour contourner la chaîne de découverte par défaut. Définissez `authServerMetadataUrl` lorsque les points de terminaison standard du serveur MCP génèrent des erreurs, ou lorsque vous souhaitez acheminer la découverte via un proxy interne. Par défaut, Claude Code vérifie d'abord les métadonnées de ressource protégée RFC 9728 à `/.well-known/oauth-protected-resource`, puis revient aux métadonnées du serveur d'autorisation RFC 8414 à `/.well-known/oauth-authorization-server`.
760
761Définissez `authServerMetadataUrl` dans l'objet `oauth` de la configuration de votre serveur dans `.mcp.json` :
762
763```json theme={null}
764{
765 "mcpServers": {
766 "my-server": {
767 "type": "http",
768 "url": "https://mcp.example.com/mcp",
769 "oauth": {
770 "authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"
771 }
772 }
773 }
774}
775```
776
777L'URL doit utiliser `https://`. `authServerMetadataUrl` nécessite Claude Code v2.1.64 ou ultérieur. Les `scopes_supported` de l'URL des métadonnées remplacent les portées que le serveur en amont annonce.
778
779### Restreindre les portées OAuth
780
781Définissez `oauth.scopes` pour épingler les portées que Claude Code demande pendant le flux d'autorisation. C'est la façon supportée de restreindre un serveur MCP à un sous-ensemble approuvé par l'équipe de sécurité lorsque le serveur d'autorisation en amont annonce plus de portées que vous ne souhaitez accorder. La valeur est une seule chaîne séparée par des espaces, correspondant au format du paramètre `scope` dans RFC 6749 §3.3.
782
783```json theme={null}
784{
785 "mcpServers": {
786 "slack": {
787 "type": "http",
788 "url": "https://mcp.slack.com/mcp",
789 "oauth": {
790 "scopes": "channels:read chat:write search:read"
791 }
792 }
793 }
794}
795```
796
797`oauth.scopes` a la priorité sur `authServerMetadataUrl` et les portées que le serveur découvre à `/.well-known`. Laissez-le non défini pour laisser le serveur MCP déterminer l'ensemble de portées demandées.
798
799Si le serveur d'autorisation annonce `offline_access` dans `scopes_supported`, Claude Code l'ajoute aux portées épinglées afin que le jeton d'accès puisse être actualisé sans une nouvelle connexion au navigateur.
800
801Si le serveur retourne ultérieurement un 403 `insufficient_scope` pour un appel d'outil, Claude Code se réauthentifie avec les mêmes portées épinglées. Élargissez `oauth.scopes` lorsqu'un outil dont vous avez besoin nécessite une portée en dehors de l'épingle.
802
803### Utiliser des en-têtes dynamiques pour l'authentification personnalisée
804
805Si votre serveur MCP utilise un schéma d'authentification autre que OAuth (tel que Kerberos, jetons de courte durée ou un SSO interne), utilisez `headersHelper` pour générer des en-têtes de requête au moment de la connexion. Claude Code exécute la commande et fusionne sa sortie dans les en-têtes de connexion.
806
807```json theme={null}
808{
809 "mcpServers": {
810 "internal-api": {
811 "type": "http",
812 "url": "https://mcp.internal.example.com",
813 "headersHelper": "/opt/bin/get-mcp-auth-headers.sh"
814 }
815 }
816}
817```
818
819La commande peut également être en ligne :
820
821```json theme={null}
822{
823 "mcpServers": {
824 "internal-api": {
825 "type": "http",
826 "url": "https://mcp.internal.example.com",
827 "headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"
828 }
829 }
830}
831```
832
833**Exigences :**
834
835* La commande doit écrire un objet JSON de paires clé-valeur de chaîne sur stdout
836* La commande s'exécute dans un shell avec un délai d'expiration de 10 secondes
837* Les en-têtes dynamiques remplacent tous les `headers` statiques portant le même nom
838
839L'assistant s'exécute à nouveau à chaque connexion (au démarrage de la session et à la reconnexion). Il n'y a pas de mise en cache, donc votre script est responsable de toute réutilisation de jetons.
840
841Claude Code définit ces variables d'environnement lors de l'exécution de l'assistant :
842
843| Variable | Valeur |
844| :---------------------------- | :-------------------- |
845| `CLAUDE_CODE_MCP_SERVER_NAME` | le nom du serveur MCP |
846| `CLAUDE_CODE_MCP_SERVER_URL` | l'URL du serveur MCP |
847
848Utilisez-les pour écrire un script d'assistant unique qui sert plusieurs serveurs MCP.
849
850<Note>
851 `headersHelper` exécute des commandes shell arbitraires. Lorsqu'il est défini à portée de projet ou locale, il ne s'exécute qu'après que vous ayez accepté la boîte de dialogue de confiance de l'espace de travail.
852</Note>
853
854## Ajouter des serveurs MCP à partir de la configuration JSON
855
856Si vous avez une configuration JSON pour un serveur MCP, vous pouvez l'ajouter directement :
857
858<Steps>
859 <Step title="Ajouter un serveur MCP à partir de JSON">
860 ```bash theme={null}
861 # Syntaxe de base
862 claude mcp add-json <name> '<json>'
863
864 # Exemple : Ajouter un serveur HTTP avec configuration JSON
865 claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'
866
867 # Exemple : Ajouter un serveur stdio avec configuration JSON
868 claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'
869
870 # Exemple : Ajouter un serveur HTTP avec identifiants OAuth pré-configurés
871 claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret
872 ```
873 </Step>
874
875 <Step title="Vérifier que le serveur a été ajouté">
876 ```bash theme={null}
877 claude mcp get weather-api
878 ```
879 </Step>
880</Steps>
881
882<Tip>
883 Conseils :
884
885 * Assurez-vous que le JSON est correctement échappé dans votre shell
886 * Le JSON doit se conformer au schéma de configuration du serveur MCP
887 * Vous pouvez utiliser `--scope user` pour ajouter le serveur à votre configuration utilisateur au lieu de celle spécifique au projet
888</Tip>
889
890## Importer les serveurs MCP à partir de Claude Desktop
891
892Si vous avez déjà configuré des serveurs MCP dans Claude Desktop, vous pouvez les importer :
893
894<Steps>
895 <Step title="Importer les serveurs à partir de Claude Desktop">
896 ```bash theme={null}
897 # Syntaxe de base
898 claude mcp add-from-claude-desktop
899 ```
900 </Step>
901
902 <Step title="Sélectionner les serveurs à importer">
903 Après avoir exécuté la commande, vous verrez une boîte de dialogue interactive qui vous permet de sélectionner les serveurs que vous souhaitez importer.
904 </Step>
905
906 <Step title="Vérifier que les serveurs ont été importés">
907 ```bash theme={null}
908 claude mcp list
909 ```
910 </Step>
911</Steps>
912
913<Tip>
914 Conseils :
915
916 * Cette fonctionnalité ne fonctionne que sur macOS et Windows Subsystem for Linux (WSL)
917 * Elle lit le fichier de configuration de Claude Desktop à partir de son emplacement standard sur ces plates-formes
918 * Utilisez le drapeau `--scope user` pour ajouter les serveurs à votre configuration utilisateur
919 * Les serveurs importés auront les mêmes noms que dans Claude Desktop
920 * Si des serveurs portant les mêmes noms existent déjà, ils recevront un suffixe numérique (par exemple, `server_1`)
921</Tip>
922
923## Utiliser les serveurs MCP à partir de Claude.ai
924
925Si vous vous êtes connecté à Claude Code avec un compte [Claude.ai](https://claude.ai), les serveurs MCP que vous avez ajoutés dans Claude.ai sont automatiquement disponibles dans Claude Code :
926
927<Steps>
928 <Step title="Configurer les serveurs MCP dans Claude.ai">
929 Ajoutez les serveurs à [claude.ai/customize/connectors](https://claude.ai/customize/connectors). Sur les plans Team et Enterprise, seuls les administrateurs peuvent ajouter des serveurs.
930 </Step>
931
932 <Step title="Authentifier le serveur MCP">
933 Complétez les étapes d'authentification requises dans Claude.ai.
934 </Step>
935
936 <Step title="Afficher et gérer les serveurs dans Claude Code">
937 Dans Claude Code, utilisez la commande :
938
939 ```text theme={null}
940 /mcp
941 ```
942
943 Les serveurs Claude.ai apparaissent dans la liste avec des indicateurs montrant qu'ils proviennent de Claude.ai.
944 </Step>
945</Steps>
946
947Pour désactiver les serveurs MCP de Claude.ai dans Claude Code, définissez la variable d'environnement `ENABLE_CLAUDEAI_MCP_SERVERS` sur `false` :
948
949```bash theme={null}
950ENABLE_CLAUDEAI_MCP_SERVERS=false claude
951```
952
953## Utiliser Claude Code comme serveur MCP
954
955Vous pouvez utiliser Claude Code lui-même comme serveur MCP auquel d'autres applications peuvent se connecter :
956
957```bash theme={null}
958# Démarrer Claude en tant que serveur MCP stdio
959claude mcp serve
960```
961
962Vous pouvez l'utiliser dans Claude Desktop en ajoutant cette configuration à claude\_desktop\_config.json :
963
964```json theme={null}
965{
966 "mcpServers": {
967 "claude-code": {
968 "type": "stdio",
969 "command": "claude",
970 "args": ["mcp", "serve"],
971 "env": {}
972 }
973 }
974}
975```
976
977<Warning>
978 **Configuration du chemin de l'exécutable** : Le champ `command` doit référencer l'exécutable Claude Code. Si la commande `claude` n'est pas dans le PATH de votre système, vous devrez spécifier le chemin complet de l'exécutable.
979
980 Pour trouver le chemin complet :
981
982 ```bash theme={null}
983 which claude
984 ```
985
986 Ensuite, utilisez le chemin complet dans votre configuration :
987
988 ```json theme={null}
989 {
990 "mcpServers": {
991 "claude-code": {
992 "type": "stdio",
993 "command": "/full/path/to/claude",
994 "args": ["mcp", "serve"],
995 "env": {}
996 }
997 }
998 }
999 ```
1000
1001 Sans le chemin d'exécutable correct, vous rencontrerez des erreurs comme `spawn claude ENOENT`.
1002</Warning>
1003
1004<Tip>
1005 Conseils :
1006
1007 * Le serveur fournit l'accès aux outils de Claude comme View, Edit, LS, etc.
1008 * Dans Claude Desktop, essayez de demander à Claude de lire les fichiers dans un répertoire, de faire des modifications, et plus encore.
1009 * Notez que ce serveur MCP expose uniquement les outils de Claude Code à votre client MCP, donc votre propre client est responsable de l'implémentation de la confirmation de l'utilisateur pour les appels d'outils individuels.
1010</Tip>
1011
1012## Limites de sortie MCP et avertissements
1013
1014Lorsque les outils MCP produisent de grandes sorties, Claude Code aide à gérer l'utilisation des jetons pour éviter de surcharger votre contexte de conversation :
1015
1016* **Seuil d'avertissement de sortie** : Claude Code affiche un avertissement lorsque la sortie de tout outil MCP dépasse 10 000 jetons
1017* **Limite configurable** : vous pouvez ajuster le nombre maximum de jetons de sortie MCP autorisés en utilisant la variable d'environnement `MAX_MCP_OUTPUT_TOKENS`
1018* **Limite par défaut** : la limite maximale par défaut est de 25 000 jetons
1019* **Portée** : la variable d'environnement s'applique aux outils qui ne déclarent pas leur propre limite. Les outils qui définissent [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) utilisent cette valeur à la place pour le contenu texte, indépendamment de ce que `MAX_MCP_OUTPUT_TOKENS` est défini. Les outils qui retournent des données d'image sont toujours soumis à `MAX_MCP_OUTPUT_TOKENS`
1020
1021Pour augmenter la limite pour les outils qui produisent de grandes sorties :
1022
1023```bash theme={null}
1024export MAX_MCP_OUTPUT_TOKENS=50000
1025claude
1026```
1027
1028Ceci est particulièrement utile lorsque vous travaillez avec des serveurs MCP qui :
1029
1030* Interrogent de grands ensembles de données ou des bases de données
1031* Génèrent des rapports ou des documentations détaillés
1032* Traitent des fichiers journaux ou des informations de débogage étendus
1033
1034### Augmenter la limite pour un outil spécifique
1035
1036Si vous créez un serveur MCP, vous pouvez permettre aux outils individuels de retourner des résultats plus grands que le seuil par défaut de persistance sur disque en définissant `_meta["anthropic/maxResultSizeChars"]` dans l'entrée de l'outil dans la réponse `tools/list`. Claude Code augmente le seuil de cet outil à la valeur annotée, jusqu'à un plafond dur de 500 000 caractères.
1037
1038Ceci est utile pour les outils qui retournent des sorties intrinsèquement grandes mais nécessaires, telles que les schémas de base de données ou les arbres de fichiers complets. Sans l'annotation, les résultats qui dépassent le seuil par défaut sont persistés sur disque et remplacés par une référence de fichier dans la conversation.
1039
1040```json theme={null}
1041{
1042 "name": "get_schema",
1043 "description": "Returns the full database schema",
1044 "_meta": {
1045 "anthropic/maxResultSizeChars": 200000
1046 }
1047}
1048```
1049
1050L'annotation s'applique indépendamment de `MAX_MCP_OUTPUT_TOKENS` pour le contenu texte, donc les utilisateurs n'ont pas besoin d'augmenter la variable d'environnement pour les outils qui la déclarent. Les outils qui retournent des données d'image sont toujours soumis à la limite de jetons.
1051
1052<Warning>
1053 Si vous rencontrez fréquemment des avertissements de sortie avec des serveurs MCP spécifiques que vous ne contrôlez pas, envisagez d'augmenter la limite `MAX_MCP_OUTPUT_TOKENS`. Vous pouvez également demander à l'auteur du serveur d'ajouter l'annotation `anthropic/maxResultSizeChars` ou de paginer ses réponses. L'annotation n'a aucun effet sur les outils qui retournent du contenu d'image ; pour ceux-ci, augmenter `MAX_MCP_OUTPUT_TOKENS` est la seule option.
1054</Warning>
1055
1056## Répondre aux demandes d'élicitation MCP
1057
1058Les serveurs MCP peuvent demander une entrée structurée de votre part au cours d'une tâche en utilisant l'élicitation. Lorsqu'un serveur a besoin d'informations qu'il ne peut pas obtenir par lui-même, Claude Code affiche une boîte de dialogue interactive et transmet votre réponse au serveur. Aucune configuration n'est requise de votre côté : les boîtes de dialogue d'élicitation apparaissent automatiquement lorsqu'un serveur les demande.
1059
1060Les serveurs peuvent demander une entrée de deux façons :
1061
1062* **Mode formulaire** : Claude Code affiche une boîte de dialogue avec des champs de formulaire définis par le serveur (par exemple, une invite de nom d'utilisateur et de mot de passe). Remplissez les champs et soumettez.
1063* **Mode URL** : Claude Code ouvre une URL de navigateur pour l'authentification ou l'approbation. Complétez le flux dans le navigateur, puis confirmez dans l'interface de ligne de commande.
1064
1065Pour répondre automatiquement aux demandes d'élicitation sans afficher de boîte de dialogue, utilisez le [hook `Elicitation`](/fr/hooks#Elicitation).
1066
1067Si vous créez un serveur MCP qui utilise l'élicitation, consultez la [spécification d'élicitation MCP](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) pour les détails du protocole et les exemples de schéma.
1068
1069## Utiliser les ressources MCP
1070
1071Les serveurs MCP peuvent exposer des ressources que vous pouvez référencer en utilisant des mentions @, similaire à la façon dont vous référencez les fichiers.
1072
1073### Référencer les ressources MCP
1074
1075<Steps>
1076 <Step title="Lister les ressources disponibles">
1077 Tapez `@` dans votre prompt pour voir les ressources disponibles de tous les serveurs MCP connectés. Les ressources apparaissent aux côtés des fichiers dans le menu d'autocomplétion.
1078 </Step>
1079
1080 <Step title="Référencer une ressource spécifique">
1081 Utilisez le format `@server:protocol://resource/path` pour référencer une ressource :
1082
1083 ```text theme={null}
1084 Pouvez-vous analyser @github:issue://123 et suggérer un correctif ?
1085 ```
1086
1087 ```text theme={null}
1088 Veuillez examiner la documentation API à @docs:file://api/authentication
1089 ```
1090 </Step>
1091
1092 <Step title="Références de ressources multiples">
1093 Vous pouvez référencer plusieurs ressources dans un seul prompt :
1094
1095 ```text theme={null}
1096 Comparez @postgres:schema://users avec @docs:file://database/user-model
1097 ```
1098 </Step>
1099</Steps>
1100
1101<Tip>
1102 Conseils :
1103
1104 * Les ressources sont automatiquement récupérées et incluses en tant que pièces jointes lorsqu'elles sont référencées
1105 * Les chemins des ressources sont recherchables par correspondance floue dans l'autocomplétion de mention @
1106 * Claude Code fournit automatiquement des outils pour lister et lire les ressources MCP lorsque les serveurs les supportent
1107 * Les ressources peuvent contenir n'importe quel type de contenu fourni par le serveur MCP (texte, JSON, données structurées, etc.)
1108</Tip>
1109
1110## Mettre à l'échelle avec la recherche d'outils MCP
1111
1112La recherche d'outils maintient l'utilisation du contexte MCP faible en différant les définitions d'outils jusqu'à ce que Claude en ait besoin. Seuls les noms d'outils se chargent au démarrage de la session, donc l'ajout de plus de serveurs MCP a un impact minimal sur votre fenêtre de contexte.
1113
1114### Comment cela fonctionne
1115
1116La recherche d'outils est activée par défaut. Les outils MCP sont différés plutôt que chargés dans le contexte à l'avance, et Claude utilise un outil de recherche pour découvrir les outils pertinents lorsqu'une tâche en a besoin. Seuls les outils que Claude utilise réellement entrent dans le contexte. De votre point de vue, les outils MCP fonctionnent exactement comme avant.
1117
1118Si vous préférez le chargement basé sur un seuil, définissez `ENABLE_TOOL_SEARCH=auto` pour charger les schémas à l'avance lorsqu'ils s'ajustent dans 10 % de la fenêtre de contexte et différer uniquement le débordement. Consultez [Configurer la recherche d'outils](#configure-tool-search) pour toutes les options.
1119
1120### Pour les auteurs de serveurs MCP
1121
1122Si vous créez un serveur MCP, le champ des instructions du serveur devient plus utile avec la recherche d'outils activée. Les instructions du serveur aident Claude à comprendre quand rechercher vos outils, similaire à la façon dont les [skills](/fr/skills) fonctionnent.
1123
1124Ajoutez des instructions de serveur claires et descriptives qui expliquent :
1125
1126* Quelle catégorie de tâches vos outils gèrent
1127* Quand Claude doit rechercher vos outils
1128* Les capacités clés de votre serveur
1129
1130Claude Code tronque les descriptions d'outils et les instructions du serveur à 2 Ko chacune. Gardez-les concis pour éviter la troncature, et mettez les détails critiques près du début.
1131
1132### Configurer la recherche d'outils
1133
1134La recherche d'outils est activée par défaut : les outils MCP sont différés et découverts à la demande. Elle est désactivée par défaut sur Vertex AI, qui n'accepte pas l'en-tête bêta de recherche d'outils, et lorsque `ANTHROPIC_BASE_URL` pointe vers un hôte non-propriétaire, car la plupart des proxies ne transfèrent pas les blocs `tool_reference`. Définissez `ENABLE_TOOL_SEARCH` explicitement pour opter pour. Cette fonctionnalité nécessite des modèles qui supportent les blocs `tool_reference` : Sonnet 4 et ultérieur, ou Opus 4 et ultérieur. Les modèles Haiku ne supportent pas la recherche d'outils.
1135
1136Contrôlez le comportement de la recherche d'outils avec la variable d'environnement `ENABLE_TOOL_SEARCH` :
1137
1138| Valeur | Comportement |
1139| :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1140| (non défini) | Tous les outils MCP différés et chargés à la demande. Revient au chargement à l'avance sur Vertex AI ou lorsque `ANTHROPIC_BASE_URL` est un hôte non-propriétaire |
1141| `true` | Tous les outils MCP différés, y compris sur Vertex AI et pour `ANTHROPIC_BASE_URL` non-propriétaire |
1142| `auto` | Mode seuil : les outils se chargent à l'avance s'ils s'ajustent dans 10 % de la fenêtre de contexte, différés sinon |
1143| `auto:<N>` | Mode seuil avec un pourcentage personnalisé, où `<N>` est 0-100 (par exemple, `auto:5` pour 5 %) |
1144| `false` | Tous les outils MCP chargés à l'avance, pas de différé |
1145
1146```bash theme={null}
1147# Utiliser un seuil personnalisé de 5 %
1148ENABLE_TOOL_SEARCH=auto:5 claude
1149
1150# Désactiver complètement la recherche d'outils
1151ENABLE_TOOL_SEARCH=false claude
1152```
1153
1154Ou définissez la valeur dans le champ `env` de votre [settings.json](/fr/settings#available-settings).
1155
1156Vous pouvez également désactiver l'outil `ToolSearch` spécifiquement :
1157
1158```json theme={null}
1159{
1160 "permissions": {
1161 "deny": ["ToolSearch"]
1162 }
1163}
1164```
1165
1166### Exempter un serveur du différé
1167
1168Si les outils d'un serveur doivent toujours être visibles pour Claude sans une étape de recherche, définissez `alwaysLoad` à `true` dans la configuration de ce serveur. Chaque outil de ce serveur se charge alors dans le contexte au démarrage de la session indépendamment du paramètre `ENABLE_TOOL_SEARCH`. Utilisez ceci pour un petit nombre d'outils que Claude doit utiliser à chaque tour, car chaque outil à l'avance consomme du contexte qui serait autrement disponible pour votre conversation.
1169
1170L'entrée `.mcp.json` suivante exempte un serveur HTTP tout en laissant les autres serveurs différés :
1171
1172```json theme={null}
1173{
1174 "mcpServers": {
1175 "core-tools": {
1176 "type": "http",
1177 "url": "https://mcp.example.com/mcp",
1178 "alwaysLoad": true
1179 }
1180 }
1181}
1182```
1183
1184Le champ `alwaysLoad` est disponible sur tous les types de serveurs et nécessite Claude Code v2.1.121 ou ultérieur. Un serveur MCP peut également marquer les outils individuels comme toujours chargés en incluant `"anthropic/alwaysLoad": true` dans l'objet `_meta` de l'outil, ce qui a le même effet pour cet outil uniquement.
1185
1186## Utiliser les prompts MCP comme commandes
1187
1188Les serveurs MCP peuvent exposer des prompts qui deviennent disponibles en tant que commandes dans Claude Code.
1189
1190### Exécuter les prompts MCP
1191
1192<Steps>
1193 <Step title="Découvrir les prompts disponibles">
1194 Tapez `/` pour voir toutes les commandes disponibles, y compris celles des serveurs MCP. Les prompts MCP apparaissent au format `/mcp__servername__promptname`.
1195 </Step>
1196
1197 <Step title="Exécuter un prompt sans arguments">
1198 ```text theme={null}
1199 /mcp__github__list_prs
1200 ```
1201 </Step>
1202
1203 <Step title="Exécuter un prompt avec des arguments">
1204 De nombreux prompts acceptent des arguments. Passez-les séparés par des espaces après la commande :
1205
1206 ```text theme={null}
1207 /mcp__github__pr_review 456
1208 ```
1209
1210 ```text theme={null}
1211 /mcp__jira__create_issue "Bug in login flow" high
1212 ```
1213 </Step>
1214</Steps>
1215
1216<Tip>
1217 Conseils :
1218
1219 * Les prompts MCP sont découverts dynamiquement à partir des serveurs connectés
1220 * Les arguments sont analysés en fonction des paramètres définis du prompt
1221 * Les résultats du prompt sont injectés directement dans la conversation
1222 * Les noms de serveur et de prompt sont normalisés (les espaces deviennent des traits de soulignement)
1223</Tip>
1224
1225## Configuration MCP gérée
1226
1227Pour les organisations qui ont besoin d'un contrôle centralisé sur les serveurs MCP, Claude Code supporte deux options de configuration :
1228
12291. **Contrôle exclusif avec `managed-mcp.json`** : Déployer un ensemble fixe de serveurs MCP que les utilisateurs ne peuvent pas modifier ou étendre
12302. **Contrôle basé sur les politiques avec listes blanches/noires** : Permettre aux utilisateurs d'ajouter leurs propres serveurs, mais restreindre lesquels sont autorisés
1231
1232Ces options permettent aux administrateurs informatiques de :
1233
1234* **Contrôler les serveurs MCP auxquels les employés peuvent accéder** : Déployer un ensemble standardisé de serveurs MCP approuvés dans toute l'organisation
1235* **Empêcher les serveurs MCP non autorisés** : Restreindre les utilisateurs d'ajouter des serveurs MCP non approuvés
1236* **Désactiver complètement MCP** : Supprimer complètement la fonctionnalité MCP si nécessaire
1237
1238### Option 1 : Contrôle exclusif avec managed-mcp.json
1239
1240Lorsque vous déployez un fichier `managed-mcp.json`, il prend le **contrôle exclusif** de tous les serveurs MCP. Les utilisateurs ne peuvent pas ajouter, modifier ou utiliser d'autres serveurs MCP que ceux définis dans ce fichier. C'est l'approche la plus simple pour les organisations qui veulent un contrôle complet.
1241
1242Les administrateurs système déploient le fichier de configuration dans un répertoire à l'échelle du système :
1243
1244* macOS : `/Library/Application Support/ClaudeCode/managed-mcp.json`
1245* Linux et WSL : `/etc/claude-code/managed-mcp.json`
1246* Windows : `C:\Program Files\ClaudeCode\managed-mcp.json`
1247
1248<Note>
1249 Ce sont des chemins à l'échelle du système (pas des répertoires personnels comme `~/Library/...`) qui nécessitent des privilèges d'administrateur. Ils sont conçus pour être déployés par les administrateurs informatiques.
1250</Note>
1251
1252Le fichier `managed-mcp.json` utilise le même format qu'un fichier `.mcp.json` standard :
1253
1254```json theme={null}
1255{
1256 "mcpServers": {
1257 "github": {
1258 "type": "http",
1259 "url": "https://api.githubcopilot.com/mcp/"
1260 },
1261 "sentry": {
1262 "type": "http",
1263 "url": "https://mcp.sentry.dev/mcp"
1264 },
1265 "company-internal": {
1266 "type": "stdio",
1267 "command": "/usr/local/bin/company-mcp-server",
1268 "args": ["--config", "/etc/company/mcp-config.json"],
1269 "env": {
1270 "COMPANY_API_URL": "https://internal.company.com"
1271 }
1272 }
1273 }
1274}
1275```
1276
1277### Option 2 : Contrôle basé sur les politiques avec listes blanches et noires
1278
1279Au lieu de prendre le contrôle exclusif, les administrateurs peuvent permettre aux utilisateurs de configurer leurs propres serveurs MCP tout en appliquant des restrictions sur les serveurs autorisés. Cette approche utilise `allowedMcpServers` et `deniedMcpServers` dans le [fichier de paramètres gérés](/fr/settings#settings-files).
1280
1281<Note>
1282 **Choisir entre les options** : Utilisez l'option 1 (`managed-mcp.json`) lorsque vous souhaitez déployer un ensemble fixe de serveurs sans personnalisation utilisateur. Utilisez l'option 2 (listes blanches/noires) lorsque vous souhaitez permettre aux utilisateurs d'ajouter leurs propres serveurs dans le respect des contraintes de politique.
1283</Note>
1284
1285#### Options de restriction
1286
1287Chaque entrée dans la liste blanche ou noire peut restreindre les serveurs de trois façons :
1288
12891. **Par nom de serveur** (`serverName`) : Correspond au nom configuré du serveur
12902. **Par commande** (`serverCommand`) : Correspond à la commande exacte et aux arguments utilisés pour démarrer les serveurs stdio
12913. **Par modèle d'URL** (`serverUrl`) : Correspond aux URL des serveurs distants avec support des caractères génériques
1292
1293**Important** : Chaque entrée doit avoir exactement un de `serverName`, `serverCommand` ou `serverUrl`.
1294
1295#### Exemple de configuration
1296
1297```json theme={null}
1298{
1299 "allowedMcpServers": [
1300 // Autoriser par nom de serveur
1301 { "serverName": "github" },
1302 { "serverName": "sentry" },
1303
1304 // Autoriser par commande exacte (pour les serveurs stdio)
1305 { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },
1306 { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },
1307
1308 // Autoriser par modèle d'URL (pour les serveurs distants)
1309 { "serverUrl": "https://mcp.company.com/*" },
1310 { "serverUrl": "https://*.internal.corp/*" }
1311 ],
1312 "deniedMcpServers": [
1313 // Bloquer par nom de serveur
1314 { "serverName": "dangerous-server" },
1315
1316 // Bloquer par commande exacte (pour les serveurs stdio)
1317 { "serverCommand": ["npx", "-y", "unapproved-package"] },
1318
1319 // Bloquer par modèle d'URL (pour les serveurs distants)
1320 { "serverUrl": "https://*.untrusted.com/*" }
1321 ]
1322}
1323```
1324
1325#### Comment fonctionnent les restrictions basées sur les commandes
1326
1327**Correspondance exacte** :
1328
1329* Les tableaux de commandes doivent correspondre **exactement** - à la fois la commande et tous les arguments dans le bon ordre
1330* Exemple : `["npx", "-y", "server"]` ne correspondra PAS à `["npx", "server"]` ou `["npx", "-y", "server", "--flag"]`
1331
1332**Comportement du serveur stdio** :
1333
1334* Lorsque la liste blanche contient **n'importe quelle** entrée `serverCommand`, les serveurs stdio **doivent** correspondre à l'une de ces commandes
1335* Les serveurs stdio ne peuvent pas passer par le nom seul lorsque des restrictions de commande sont présentes
1336* Cela garantit que les administrateurs peuvent appliquer les commandes autorisées à s'exécuter
1337
1338**Comportement du serveur non-stdio** :
1339
1340* Les serveurs distants (HTTP, SSE, WebSocket) utilisent la correspondance basée sur l'URL lorsque des entrées `serverUrl` existent dans la liste blanche
1341* Si aucune entrée d'URL n'existe, les serveurs distants reviennent à la correspondance basée sur le nom
1342* Les restrictions de commande ne s'appliquent pas aux serveurs distants
1343
1344#### Comment fonctionnent les restrictions basées sur l'URL
1345
1346Les modèles d'URL supportent les caractères génériques en utilisant `*` pour correspondre à n'importe quelle séquence de caractères. Ceci est utile pour autoriser des domaines ou des sous-domaines entiers.
1347
1348**Exemples de caractères génériques** :
1349
1350* `https://mcp.company.com/*` - Autoriser tous les chemins sur un domaine spécifique
1351* `https://*.example.com/*` - Autoriser n'importe quel sous-domaine de example.com
1352* `http://localhost:*/*` - Autoriser n'importe quel port sur localhost
1353
1354**Comportement du serveur distant** :
1355
1356* Lorsque la liste blanche contient **n'importe quelle** entrée `serverUrl`, les serveurs distants **doivent** correspondre à l'un de ces modèles d'URL
1357* Les serveurs distants ne peuvent pas passer par le nom seul lorsque des restrictions d'URL sont présentes
1358* Cela garantit que les administrateurs peuvent appliquer les points de terminaison distants autorisés
1359
1360<Accordion title="Exemple : Liste blanche URL uniquement">
1361 ```json theme={null}
1362 {
1363 "allowedMcpServers": [
1364 { "serverUrl": "https://mcp.company.com/*" },
1365 { "serverUrl": "https://*.internal.corp/*" }
1366 ]
1367 }
1368 ```
1369
1370 **Résultat** :
1371
1372 * Serveur HTTP à `https://mcp.company.com/api` : ✅ Autorisé (correspond au modèle d'URL)
1373 * Serveur HTTP à `https://api.internal.corp/mcp` : ✅ Autorisé (correspond au sous-domaine générique)
1374 * Serveur HTTP à `https://external.com/mcp` : ❌ Bloqué (ne correspond à aucun modèle d'URL)
1375 * Serveur stdio avec n'importe quelle commande : ❌ Bloqué (aucune entrée de nom ou de commande à correspondre)
1376</Accordion>
1377
1378<Accordion title="Exemple : Liste blanche commande uniquement">
1379 ```json theme={null}
1380 {
1381 "allowedMcpServers": [
1382 { "serverCommand": ["npx", "-y", "approved-package"] }
1383 ]
1384 }
1385 ```
1386
1387 **Résultat** :
1388
1389 * Serveur stdio avec `["npx", "-y", "approved-package"]` : ✅ Autorisé (correspond à la commande)
1390 * Serveur stdio avec `["node", "server.js"]` : ❌ Bloqué (ne correspond pas à la commande)
1391 * Serveur HTTP nommé « my-api » : ❌ Bloqué (aucune entrée de nom à correspondre)
1392</Accordion>
1393
1394<Accordion title="Exemple : Liste blanche mixte nom et commande">
1395 ```json theme={null}
1396 {
1397 "allowedMcpServers": [
1398 { "serverName": "github" },
1399 { "serverCommand": ["npx", "-y", "approved-package"] }
1400 ]
1401 }
1402 ```
1403
1404 **Résultat** :
1405
1406 * Serveur stdio nommé « local-tool » avec `["npx", "-y", "approved-package"]` : ✅ Autorisé (correspond à la commande)
1407 * Serveur stdio nommé « local-tool » avec `["node", "server.js"]` : ❌ Bloqué (les entrées de commande existent mais ne correspondent pas)
1408 * Serveur stdio nommé « github » avec `["node", "server.js"]` : ❌ Bloqué (les serveurs stdio doivent correspondre aux commandes lorsque les entrées de commande existent)
1409 * Serveur HTTP nommé « github » : ✅ Autorisé (correspond au nom)
1410 * Serveur HTTP nommé « other-api » : ❌ Bloqué (le nom ne correspond pas)
1411</Accordion>
1412
1413<Accordion title="Exemple : Liste blanche nom uniquement">
1414 ```json theme={null}
1415 {
1416 "allowedMcpServers": [
1417 { "serverName": "github" },
1418 { "serverName": "internal-tool" }
1419 ]
1420 }
1421 ```
1422
1423 **Résultat** :
1424
1425 * Serveur stdio nommé « github » avec n'importe quelle commande : ✅ Autorisé (aucune restriction de commande)
1426 * Serveur stdio nommé « internal-tool » avec n'importe quelle commande : ✅ Autorisé (aucune restriction de commande)
1427 * Serveur HTTP nommé « github » : ✅ Autorisé (correspond au nom)
1428 * N'importe quel serveur nommé « other » : ❌ Bloqué (le nom ne correspond pas)
1429</Accordion>
1430
1431#### Comportement de la liste blanche (`allowedMcpServers`)
1432
1433* `undefined` (par défaut) : Aucune restriction - les utilisateurs peuvent configurer n'importe quel serveur MCP
1434* Tableau vide `[]` : Verrouillage complet - les utilisateurs ne peuvent configurer aucun serveur MCP
1435* Liste d'entrées : Les utilisateurs ne peuvent configurer que les serveurs qui correspondent par nom, commande ou modèle d'URL
1436
1437#### Comportement de la liste noire (`deniedMcpServers`)
1438
1439* `undefined` (par défaut) : Aucun serveur n'est bloqué
1440* Tableau vide `[]` : Aucun serveur n'est bloqué
1441* Liste d'entrées : Les serveurs spécifiés sont explicitement bloqués dans toutes les portées
1442
1443#### Notes importantes
1444
1445* **L'option 1 et l'option 2 peuvent être combinées** : Si `managed-mcp.json` existe, il a le contrôle exclusif et les utilisateurs ne peuvent pas ajouter de serveurs. Les listes blanches/noires s'appliquent toujours aux serveurs gérés eux-mêmes.
1446* **La liste noire a une précédence absolue** : Si un serveur correspond à une entrée de liste noire (par nom, commande ou URL), il sera bloqué même s'il est sur la liste blanche
1447* **Les restrictions basées sur le nom, la commande et l'URL fonctionnent ensemble** : un serveur passe s'il correspond à **soit** une entrée de nom, une entrée de commande, ou un modèle d'URL (sauf s'il est bloqué par la liste noire)
1448
1449<Note>
1450 **Lors de l'utilisation de `managed-mcp.json`** : Les utilisateurs ne peuvent pas ajouter de serveurs MCP via `claude mcp add` ou les fichiers de configuration. Les paramètres `allowedMcpServers` et `deniedMcpServers` s'appliquent toujours pour filtrer les serveurs gérés qui sont réellement chargés.
1451</Note>