Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Gouvernance MCP pour Q Developer
Les clients professionnels qui utilisent IAM Identity Center comme méthode de connexion peuvent contrôler l'accès MCP pour les utilisateurs au sein de leur organisation. Par défaut, vos utilisateurs peuvent utiliser n'importe quel serveur MCP dans leur client Q. En tant qu'administrateur, vous pouvez soit désactiver complètement l'utilisation des serveurs MCP par vos utilisateurs, soit spécifier une liste approuvée de serveurs MCP autorisés à utiliser par vos utilisateurs.
Ces restrictions sont contrôlées par le biais d'une on/off bascule MCP et d'un registre MCP, respectivement. Le bouton MCP et les attributs de registre font partie du profil Q Developer, qui peut être défini au niveau de l'organisation ou au niveau du compte, le profil au niveau du compte remplaçant le profil au niveau de l'organisation. Cela vous permet de définir une politique MCP par défaut pour l'ensemble de votre organisation, puis de remplacer cette politique par défaut pour des comptes spécifiques ; par exemple, désactiver le MCP pour l'ensemble de l'organisation, mais activé avec une liste autorisée pour certaines équipes (comptes).
Note
La bascule et les paramètres de registre sont tous deux appliqués côté client. Sachez que vos utilisateurs finaux peuvent le contourner.
Désactivation des serveurs MCP de votre organisation
Pour désactiver MCP pour votre compte ou votre organisation, procédez comme suit :
-
Ouvrez la console Amazon Q Developer.
-
Sélectionnez Paramètres.
-
Sous Préférences, choisissez Modifier.
-
Dans la fenêtre contextuelle Modifier les préférences, réglez le Model Context Protocol (MCP) sur Désactivé.
-
Choisissez Enregistrer.
Spécification d'une liste d'autorisation MCP pour votre organisation
Pour contrôler les serveurs MCP que les utilisateurs de votre organisation sont autorisés à utiliser, vous pouvez spécifier une liste de serveurs MCP autorisés dans un fichier JSON, diffuser ce fichier JSON via HTTPS et saisir cette URL dans le profil de développeur Q souhaité. Tous les clients Q Developer utilisant ce profil feront alors en sorte que les utilisateurs ne puissent utiliser que les serveurs MCP que vous avez autorisés dans le fichier JSON.
Spécification de l'URL du registre MCP
Ouvrez la console Amazon Q Developer.
Sélectionnez Paramètres.
Sous Préférences, choisissez Modifier.
Dans la fenêtre contextuelle Modifier les préférences, assurez-vous que le protocole MCP (Model Context Protocol) est activé.
Dans le champ URL du registre MCP, entrez l'URL d'un fichier JSON du registre MCP contenant les serveurs MCP autorisés.
Choisissez Enregistrer.
Notez que l'URL du registre MCP est cryptée à la fois en transit et au repos conformément à notre politique de chiffrement des données.
Format de fichier de registre MCP
Le format du fichier JSON de registre est un sous-ensemble du schéma de serveur JSON de la norme de registre MCP v0.1
Vous trouverez ci-dessous un exemple simple et artificiel de fichier de registre MCP contenant à la fois une définition de serveur MCP distant (HTTP) et une définition de serveur MCP local (stdio).
{ "servers": [ { "server": { "name": "my-remote-server", "title": "My server", "description": "My server description", "version": "1.0.0", "remotes": [ { "type": "streamable-http", "url": "https://acme.com/my-server", "headers": [ { "name": "X-My-Header", "value": "SomeValue" } ] } ] } }, { "server": { "name": "my-local-server", "title": "My server", "description": "My server description", "version": "1.0.0", "packages": [ { "registryType": "npm", "registryBaseUrl": "https://npm.acme.com", "identifier": "@acme/my-server", "transport": { "type": "stdio" }, "runtimeArguments": [ { "type": "positional", "value": "-q" } ], "packageArguments": [ { "type": "positional", "value": "start" } ], "environmentVariables": [ { "name": "ENV_VAR", "value": "ENV_VAR_VALUE" } ] } ] } } ] }
Le tableau suivant décrit chaque propriété du fichier JSON de registre. Toutes les propriétés sont obligatoires, sauf indication contraire. Consultez la section sur le schéma de registre pour le schéma JSON complet.
Les attributs imbriqués sont affichés avec un décalage horizontal par rapport à leur parent. Par exemple, « en-têtes » est un attribut enfant des « télécommandes », et « nom » et « valeur » sont des attributs enfants des « en-têtes ».
| Attribut | Description | Facultatif ? | Exemple de valeur |
|---|---|---|---|
| Attributs communs | |||
| nom | Nom du serveur. Doit être unique dans un fichier de registre donné. | "aws-ccapi-mcp" | |
| title | Nom de serveur lisible par l'homme. | Oui | « API AWS CC » |
| description | Description du serveur | « Gérez l'infrastructure AWS via le langage naturel. » | |
| version | Version du serveur. Le versionnement sémantique (x.y.z) est fortement recommandé. | « 1,0,2 » | |
| Attributs du serveur distant (HTTP) | |||
| télécommandes | Tableau contenant exactement une entrée spécifiant le point de terminaison distant. | - | |
| type | Doit être l'un des types « streamable-http » ou « sse ». | « streamable-http » | |
| url | URL du point de terminaison du serveur MCP. | « https://mcp.figma.com /mcp » | |
| headers | Tableau d'en-têtes HTTP à inclure dans chaque requête. | Oui | - |
| nom | Nom de l'en-tête HTTP. | « Autorisation » | |
| value | Valeur d'en-tête HTTP. | « Porteur MF_9.B5F-4.1jqm » | |
| Attributs du serveur local (stdio) | |||
| packages | Tableau contenant exactement une entrée contenant la définition du serveur MCP. | - | |
| Type de registre |
Doit être l'un des types « npm », « pypi » ou « oci ». Les exécuteurs de packages suivants sont utilisés pour télécharger et exécuter le package du serveur MCP :
Les machines clientes doivent être préinstallées sur les machines clientes appropriées. |
« npm » | |
| registryBaseUrl | URL du registre du package. | Oui | "https://npm.acme.com" |
| identifiant | Identifiant du package du serveur. | « @acme /mon-serveur » | |
| transport | Objet avec une seule propriété, « type ». | - | |
| type | Ça doit être « studio ». | « studio » | |
| Arguments d'exécution | Tableau d'arguments fournis au runtime, c'est-à-dire à npx, uvx ou docker. | Oui | - |
| type | Doit être « positionnel ». | « positionnel » | |
| value | Valeur de l'argument d'exécution. | « -q » | |
| Arguments du package | Tableau d'arguments fourni au serveur MCP. | Oui | - |
| type | Doit être « positionnel ». | « positionnel » | |
| value | Valeur de l'argument du package. | « démarrer » | |
| Variables d'environnement | Tableau de variables d'environnement à définir avant de démarrer le serveur. | Oui | - |
| nom | Nom de la variable d'environnement. | « LOG_LEVEL » | |
| value | Valeur de la variable d'environnement. | « INFORMATIONS » | |
Service du fichier de registre MCP
Le fichier JSON du registre MCP doit être diffusé via HTTPS. Vous pouvez le servir comme vous le souhaitez, par exemple en utilisant S3, Apache/Nginx, etc. Cette URL doit être accessible aux clients Q Developer exécutés sur vos utilisateurs PCs. Il n'est toutefois pas nécessaire qu'il soit accessible depuis la console AWS, ce qui signifie qu'il peut être privé sur le réseau de votre entreprise.
Pour des raisons de sécurité, le point de terminaison HTTPS doit disposer d'un certificat SSL valide signé par une autorité de certification fiable. En particulier, vous ne pouvez pas utiliser de certificat auto-signé pour le point de terminaison du registre.
Q récupérera le registre MCP au démarrage et périodiquement (toutes les 24 heures). Si, au cours de la synchronisation périodique, Q remarque qu'un serveur MCP installé localement n'est plus présent dans le registre, il mettra fin à ce serveur et empêchera l'utilisateur de le rajouter. S'il remarque que le serveur installé localement possède une version différente de celle du serveur du registre, il relancera le serveur avec la version définie dans le registre.
Plug-ins pour développeurs Q
Lorsqu'un utilisateur lance Q Developer, il vérifie si une URL de registre est définie sur le profil. Si tel est le cas, il récupérera le JSON du registre à cette URL et veillera à ce que les utilisateurs ne puissent utiliser que les serveurs MCP définis dans le registre. Lorsque les utilisateurs tentent d'ajouter un serveur MCP, ils peuvent sélectionner une liste de serveurs définis dans le registre.
Les utilisateurs ne peuvent modifier aucun des paramètres (URL, identifiant de package, arguments d'exécution, etc.) d'un serveur MCP de registre. Toutefois, ils peuvent toujours effectuer les opérations suivantes :
Ajustez les autorisations de l'outil MCP (« Demander l'exécution », « Toujours exécuter » ou « Refuser »).
Sélectionnez l'étendue du serveur MCP (Global ou Workspace).
Modifiez le délai d'expiration de la demande.
Spécifiez des variables d'environnement supplémentaires pour les serveurs MCP locaux.
Spécifiez des en-têtes HTTP supplémentaires pour les serveurs MCP distants.
Note
Si l'utilisateur spécifie une variable d'environnement ou un en-tête HTTP déjà défini dans le registre, la définition de l'utilisateur prévaut. Cela permet aux utilisateurs de spécifier des attributs spécifiques à leur configuration, par exemple des clés d'authentification ou des chemins de dossiers locaux.
Schéma JSON du registre MCP
Vous trouverez ci-dessous la définition du schéma JSON pour les fichiers JSON du registre MCP pris en charge par Q Developer. Vous pouvez utiliser ce schéma pour valider les fichiers de registre que vous créez.
{ "$schema": "https://json-schema.org/draft-07/schema", "properties": { "servers": { "type": "array", "items": { "type": "object", "properties": { "server": { "$ref": "#/definitions/ServerDetail" } }, "required": [ "server" ] } } }, "definitions": { "ServerDetail": { "properties": { "name": { "description": "Server name. Must be unique within a given registry file.", "example": "weather-mcp", "maxLength": 200, "minLength": 3, "pattern": "^[a-zA-Z0-9._-]+$", "type": "string" }, "title": { "description": "Optional human-readable title or display name for the MCP server. MCP subregistries or clients MAY choose to use this for display purposes.", "example": "Weather API", "maxLength": 100, "minLength": 1, "type": "string" }, "description": { "description": "Clear human-readable explanation of server functionality. Should focus on capabilities, not implementation details.", "example": "MCP server providing weather data and forecasts via OpenWeatherMap API", "maxLength": 100, "minLength": 1, "type": "string" }, "version": { "description": "Version string for this server. SHOULD follow semantic versioning (e.g., '1.0.2', '2.1.0-alpha'). Equivalent of Implementation.version in MCP specification. Non-semantic versions are allowed but may not sort predictably. Version ranges are rejected (e.g., '^1.2.3', '~1.2.3', '\u003e=1.2.3', '1.x', '1.*').", "example": "1.0.2", "maxLength": 255, "type": "string" }, "packages": { "items": { "$ref": "#/definitions/Package" }, "type": "array" }, "remotes": { "items": { "anyOf": [ { "$ref": "#/definitions/StreamableHttpTransport" }, { "$ref": "#/definitions/SseTransport" } ] }, "type": "array" } }, "required": [ "name", "description", "version" ], "type": "object" }, "Package": { "properties": { "registryType": { "description": "Registry type indicating how to download packages (e.g., 'npm', 'pypi', 'oci')", "enum": [ "npm", "pypi", "oci" ], "type": "string" }, "registryBaseUrl": { "description": "Base URL of the package registry", "examples": [ "https://registry.npmjs.org", "https://pypi.org", "https://docker.io" ], "format": "uri", "type": "string" }, "identifier": { "description": "Package identifier - either a package name (for registries) or URL (for direct downloads)", "examples": [ "@modelcontextprotocol/server-brave-search", "https://github.com/example/releases/download/v1.0.0/package.mcpb" ], "type": "string" }, "transport": { "anyOf": [ { "$ref": "#/definitions/StdioTransport" }, { "$ref": "#/definitions/StreamableHttpTransport" }, { "$ref": "#/definitions/SseTransport" } ], "description": "Transport protocol configuration for the package" }, "runtimeArguments": { "description": "A list of arguments to be passed to the package's runtime command (such as docker or npx).", "items": { "$ref": "#/definitions/PositionalArgument" }, "type": "array" }, "packageArguments": { "description": "A list of arguments to be passed to the package's binary.", "items": { "$ref": "#/definitions/PositionalArgument" }, "type": "array" }, "environmentVariables": { "description": "A mapping of environment variables to be set when running the package.", "items": { "$ref": "#/definitions/KeyValueInput" }, "type": "array" } }, "required": [ "registryType", "identifier", "transport" ], "type": "object" }, "StdioTransport": { "properties": { "type": { "description": "Transport type", "enum": [ "stdio" ], "example": "stdio", "type": "string" } }, "required": [ "type" ], "type": "object" }, "StreamableHttpTransport": { "properties": { "type": { "description": "Transport type", "enum": [ "streamable-http" ], "example": "streamable-http", "type": "string" }, "url": { "description": "URL template for the streamable-http transport. Variables in {curly_braces} reference argument valueHints, argument names, or environment variable names. After variable substitution, this should produce a valid URI.", "example": "https://api.example.com/mcp", "type": "string" }, "headers": { "description": "HTTP headers to include", "items": { "$ref": "#/definitions/KeyValueInput" }, "type": "array" } }, "required": [ "type", "url" ], "type": "object" }, "SseTransport": { "properties": { "type": { "description": "Transport type", "enum": [ "sse" ], "example": "sse", "type": "string" }, "url": { "description": "Server-Sent Events endpoint URL", "example": "https://mcp-fs.example.com/sse", "format": "uri", "type": "string" }, "headers": { "description": "HTTP headers to include", "items": { "$ref": "#/definitions/KeyValueInput" }, "type": "array" } }, "required": [ "type", "url" ], "type": "object" }, "PositionalArgument": { "properties": { "value": { "description": "The value for the input.", "type": "string" } }, "required": [ "value" ], "type": "object" }, "KeyValueInput": { "properties": { "name": { "description": "Name of the header or environment variable.", "example": "SOME_VARIABLE", "type": "string" }, "value": { "description": "The value for the input.", "type": "string" } }, "required": [ "name" ], "type": "object" } }, "required": [ "servers" ], "type": "object" }