Ce guide fournit des renseignements détaillés sur la configuration des serveurs Model Context Protocol (MCP) avec Kiro, y compris la structure du fichier de configuration, la configuration des serveurs et leur gestion sur toutes les surfaces.
Les fichiers de configuration MCP utilisent le format JSON avec la structure suivante :
{ "mcpServers": { "local-server-name": { "command": "command-to-run-server", "args": ["arg1", "arg2"], "env": { "ENV_VAR1": "hard-coded-variable", "ENV_VAR2": "${EXPANDED_VARIABLE}" }, "disabled": false, "autoApprove": ["tool_name1", "tool_name2"], "disabledTools": ["tool_name3"] }, "remote-server-name": { "url": "https://endpoint.to.connect.to", "headers": { "HEADER1": "value1", "HEADER2": "value2" }, "disabled": false, "autoApprove": ["tool_name1", "tool_name2"], "disabledTools": ["tool_name3"] } } }
| Propriété | Type | Requis | Description |
|---|---|---|---|
command | String | Oui | La commande pour exécuter le serveur MCP |
args | Array | Non | Arguments à passer à la commande |
env | Object | Non | Variables d'environnement pour le processus du serveur |
disabled | Boolean | Non | Indique si le serveur est désactivé (par défaut : false) |
autoApprove | Array | Non | Noms d'outils à approuver automatiquement sans demande (utilisez "*" pour approuver automatiquement tous les outils) |
disabledTools | Array | Non | Noms d'outils à omettre lors de l'appel de l'Agent |
| Propriété | Type | Requis | Description |
|---|---|---|---|
url | String | Oui | Point de terminaison HTTPS pour le serveur MCP distant (ou point de terminaison HTTP pour localhost) |
headers | Object | Non | En-têtes à transmettre au serveur MCP pendant la connexion |
env | Object | Non | Variables d'environnement pour le processus du serveur |
oauth | Object | Non | Configuration OAuth pour les serveurs qui exigent une authentification (voir Configuration OAuth) |
oauthScopes | Array | Non | Portées OAuth à demander (repli; remplacé par oauth.oauthScopes si les deux sont définis) |
disabled | Boolean | Non | Indique si le serveur est désactivé (par défaut : false) |
autoApprove | Array | Non | Noms d'outils à approuver automatiquement sans demande (utilisez "*" pour approuver automatiquement tous les outils) |
disabledTools | Array | Non | Noms d'outils à omettre lors de l'appel de l'Agent |
Vous pouvez configurer les serveurs MCP à deux niveaux :
Niveau espace de travail : .kiro/settings/mcp.json
Niveau utilisateur : ~/.kiro/settings/mcp.json
Si les deux fichiers existent, les configurations sont fusionnées, les paramètres de l'espace de travail ayant priorité.
Avec la palette de commandes :
Cmd + Shift + P sur Mac, Ctrl + Shift + P sur Windows/Linux)Avec le panneau Kiro :
Cmd + , (Mac) ou Ctrl + , (Windows/Linux)Les changements à la configuration MCP s'appliquent automatiquement lorsque vous enregistrez le fichier. Enregistrez le fichier de configuration (Cmd+S) et les serveurs se reconnecteront.
Lorsque plusieurs configurations définissent le même serveur MCP, elles sont chargées selon cette hiérarchie (priorité la plus élevée à la plus faible) :
mcpServers dans le JSON de l'agent.kiro/settings/mcp.json~/.kiro/settings/mcp.jsonRemplacement complet :
Agent config: { "fetch": { command: "fetch-v2" } } Workspace config: { "fetch": { command: "fetch-v1" } } Global config: { "fetch": { command: "fetch-old" } } Result: Only "fetch-v2" from agent config is used
Additif (noms différents) :
Agent config: { "fetch": {...} } Workspace config: { "git": {...} } Global config: { "aws": {...} } Result: All three servers are used (fetch, git, aws)
Désactivation par remplacement :
Agent config: { "fetch": { command: "...", disabled: true } } Workspace config: { "fetch": { command: "..." } } Result: No fetch server is launched
{ "mcpServers": { "web-search": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-bravesearch" ], "env": { "BRAVE_API_KEY": "${BRAVE_API_KEY}" } } } }
{ "mcpServers": { "api-server": { "url": "https://api.example.com/mcp", "headers": { "Authorization": "Bearer ${API_TOKEN}", "X-Custom-Header": "value" } } } }
{ "mcpServers": { "fetch": { "command": "uvx", "args": ["mcp-server-fetch"] }, "git": { "command": "uvx", "args": ["mcp-server-git"], "env": { "GIT_CONFIG_GLOBAL": "/dev/null" } }, "aws-docs": { "command": "npx", "args": ["-y", "@aws/aws-documentation-mcp-server"] } } }
De nombreux serveurs MCP exigent des variables d'environnement pour l'authentification ou la configuration. Utilisez la syntaxe ${VARIABLE_NAME} pour référencer des variables d'environnement :
{ "mcpServers": { "server-name": { "env": { "API_KEY": "${YOUR_API_KEY}", "DEBUG": "true", "TIMEOUT": "30000" } } } }
Pour des raisons de sécurité, Kiro ne développe que les variables d'environnement explicitement approuvées. Lorsque vous ajoutez ou modifiez une configuration de serveur MCP qui comprend des variables d'environnement non approuvées, Kiro affiche une fenêtre d'avertissement de sécurité énumérant les variables qui nécessitent une approbation.
Pour gérer les variables d'environnement approuvées :
Les serveurs MCP distants qui exigent une authentification OAuth sont pris en charge. Kiro gère automatiquement le flux OAuth basé sur le navigateur lors de la connexion à un serveur protégé par OAuth.
{ "mcpServers": { "remote-server-with-oauth": { "url": "https://api.example.com/mcp", "oauth": { "clientId": "your-client-id", "redirectUri": "http://127.0.0.1:8080/oauth/callback", "oauthScopes": ["read", "write"] } } } }
Si vous rencontrez des erreurs de portée OAuth, utilisez un tableau vide : "oauthScopes": []
La plupart des serveurs utilisent l'enregistrement dynamique de client (DCR) et n'ont besoin d'aucune configuration supplémentaire - connectez-vous simplement, et Kiro ouvre la page d'autorisation.
Pour les serveurs qui ne prennent pas en charge l'enregistrement dynamique de client (DCR) - comme Figma, Slack ou GitHub - vous pouvez fournir vos propres identifiants OAuth dans l'objet oauth. Cela fonctionne avec des serveurs d'authentification comme Cognito, Auth0 et Okta.
{ "mcpServers": { "figma": { "url": "https://mcp.figma.com/mcp", "oauth": { "clientId": "my-figma-client-id", "clientSecret": "my-figma-client-secret", "redirectUri": "http://localhost:7778/oauth/callback", "oauthScopes": ["files:read"] } } } }
Pour utiliser cette configuration, enregistrez une application OAuth dans la console des développeurs Figma. Définissez l'URI de redirection dans les paramètres de votre application à http://localhost:7778/oauth/callback - le port et le chemin doivent correspondre exactement. Figma exige un client confidentiel, donc clientId et clientSecret sont tous les deux nécessaires.
| Propriété | Type | Requis | Description |
|---|---|---|---|
oauth.clientId | String | Non | ID de client OAuth préenregistré. Lorsqu'il est défini, l'enregistrement dynamique de client est entièrement ignoré. |
oauth.clientSecret | String | Non | Secret client pour les serveurs qui en exigent un. N'a de sens qu'avec clientId. |
oauth.redirectUri | String | Non | URI de redirection en boucle locale personnalisée pour le rappel OAuth. Voir formats d'URI de redirection ci-dessous. |
oauth.oauthScopes | Array | Non | Portées OAuth à demander au serveur d'autorisation. A priorité sur le oauthScopes de premier niveau. |
clientId non défini - Kiro tente un enregistrement dynamique de client avec le serveur. Si le DCR échoue, il se replie sur une configuration de client par défaut.clientId défini (sans clientSecret) - Kiro ignore le DCR et s'authentifie comme un client OAuth public en utilisant votre ID de client enregistré.clientId et clientSecret définis tous les deux (CLI seulement) - Kiro ignore le DCR et s'authentifie comme un client confidentiel, en envoyant le secret au point de terminaison des jetons. Cela est requis pour des serveurs comme Figma qui n'émettent des jetons qu'à des clients confidentiels.Si vous apportez votre propre fournisseur d'identité, votre serveur MCP doit servir un document de métadonnées /.well-known/oauth-authorization-server pointant vers les points de terminaison du fournisseur, et valider les jetons Bearer par rapport aux JWKS du fournisseur.
Le champ redirectUri accepte plusieurs formats. L'hôte doit être 127.0.0.1 ou localhost, et le schéma doit être http (le rappel est servi par un serveur en boucle locale local).
| Format | Exemple | Description |
|---|---|---|
| URL complète | http://localhost:7778/oauth/callback | Fixe le port et le chemin pour correspondre à une application préenregistrée |
| Hôte et port | 127.0.0.1:7778 | Fixe le port; le chemin est par défaut / |
| Port seulement | :7778 | Fixe le port sur 127.0.0.1 |
| Omis | (non défini) | Le système d'exploitation attribue un port disponible aléatoire |
Utilisez une URL complète avec un chemin personnalisé lorsque votre application OAuth a un URI de redirection préenregistré qui comprend un chemin de rappel particulier.
Vous pouvez spécifier des portées OAuth à deux endroits :
{ "mcpServers": { "server": { "url": "https://mcp.example.com", "oauthScopes": ["openid", "email"], "oauth": { "clientId": "my-id", "oauthScopes": ["read:data", "write:data"] } } } }
Lorsque les deux sont définis, oauth.oauthScopes a priorité. Lorsque ni l'un ni l'autre n'est spécifié, Kiro demande un ensemble par défaut de portées (openid, email, profile, offline_access).
Lorsqu'un jeton OAuth expire pendant une session et qu'aucun jeton de rafraîchissement n'est disponible, Kiro déclenche automatiquement un nouveau flux d'authentification basé sur le navigateur. Vous n'avez pas besoin de redémarrer votre session - la réauthentification se produit de façon transparente et le serveur MCP se reconnecte avec le nouveau jeton. Dans l'IDE, un indicateur d'avertissement et un bouton Re-authenticate apparaissent dans le panneau MCP lorsqu'un jeton expire.
Ceci est particulièrement utile pour les fournisseurs d'identité qui émettent des jetons de courte durée sans jetons de rafraîchissement.
Lorsque le rafraîchissement automatique n'est pas suffisant - par exemple, si un jeton a été révoqué ou que vous devez changer de compte - vous pouvez gérer les identifiants OAuth manuellement dans la CLI :
| Commande | Raccourci clavier | Description |
|---|---|---|
/mcp auth | ^A | Force la réauthentification lorsqu'un jeton est expiré ou invalide |
/mcp cancel-auth | ^X | Interrompt un flux d'authentification en attente bloqué en attendant la confirmation du navigateur |
/mcp logout | ^R | Supprime les identifiants stockés pour un serveur |
Les raccourcis clavier sont disponibles dans la vue d'état du panneau MCP. Voir Slash Commands pour tous les détails d'utilisation.
Les configurations d'agent et de MCP se rechargent à chaud lorsque vous enregistrez des changements sur le disque. Un observateur de fichiers surveille les répertoires .kiro/agents et les fichiers mcp.json, en réconciliant les serveurs en cours d'exécution et l'état de l'agent sans redémarrer votre session ni perdre le contexte de la conversation.
Cela s'applique à :
mcp.jsonFonctionnement de la réconciliation :
/mcp add sont refusionnés pendant la réconciliation.Aucune commande n'est requise pour déclencher un rechargement. Enregistrez le fichier et le changement prend effet à la prochaine limite d'inactivité (entre les tours).
Pour désactiver temporairement un serveur MCP sans supprimer sa configuration, définissez disabled à true :
{ "mcpServers": { "server-name": { "disabled": true } } }
Pour garder un serveur actif tout en empêchant un agent d'utiliser des outils particuliers, utilisez disabledTools :
{ "mcpServers": { "server-name": { "disabledTools": ["delete_file", "execute_command"] } } }
Pour les équipes d'entreprise utilisant IAM Identity Center, l'accès aux serveurs MCP peut être contrôlé de façon centralisée par un registre MCP. Voir la page MCP Registry pour les détails.
Valider la syntaxe JSON
Vérifier les chemins de commande
Vérifier les variables d'environnement
Examiner le chargement de la configuration
# Check workspace config cat .kiro/settings/mcp.json # Check user config cat ~/.kiro/settings/mcp.json
Lors de la configuration des serveurs MCP, suivez ces bonnes pratiques de sécurité :
${API_TOKEN}) plutôt que de codifier en dur les valeurs sensiblesautoApprovedisabledTools pour restreindre l'accès aux opérations dangereusesPour des directives de sécurité complètes, voir la page MCP Security Best Practices.
Configuration