Governance MCP per Q Developer - Amazon Q Developer

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Governance MCP per Q Developer

I clienti di livello professionale che utilizzano IAM Identity Center come metodo di accesso possono controllare l'accesso MCP per gli utenti all'interno della propria organizzazione. Per impostazione predefinita, gli utenti possono utilizzare qualsiasi server MCP nel loro client Q. In qualità di amministratore, hai la possibilità di disabilitare completamente l'uso dei server MCP da parte dei tuoi utenti o di specificare un elenco controllato di server MCP che i tuoi utenti possono utilizzare.

Queste restrizioni sono controllate rispettivamente tramite un on/off interruttore MCP e un registro MCP. L'interruttore MCP e gli attributi di registro fanno parte del profilo Q Developer, che può essere definito a livello di organizzazione o a livello di account, con il profilo a livello di account che sostituisce il profilo a livello di organizzazione. Ciò consente di specificare una politica MCP predefinita per l'intera organizzazione e quindi sostituirla per account specifici; ad esempio, disattivare MCP per l'intera organizzazione, ma abilitare una lista di autorizzazioni per determinati team (account).

Nota

Sia l'interruttore che le impostazioni del registro vengono applicate sul lato client. Tieni presente che i tuoi utenti finali potrebbero aggirarla.

Disabilitazione di MCP per l’organizzazione

Per disabilitare MCP per il tuo account o la tua organizzazione:

  1. Apri la console Amazon Q Developer.

  2. Seleziona Impostazioni.

  3. In Preferenze, scegli Modifica.

  4. Nel pop-up Modifica preferenze, imposta Model Context Protocol (MCP) su Off.

  5. Scegli Save (Salva).

Specificare una lista di autorizzazioni MCP per la propria organizzazione

Per controllare quali server MCP possono essere utilizzati dagli utenti dell'organizzazione, è possibile specificare un elenco di server MCP consentiti in un file JSON, pubblicare questo file JSON su HTTPS e immettere tale URL nel profilo di sviluppatore Q desiderato. Tutti i client Q Developer che utilizzano questo profilo impongono quindi agli utenti di utilizzare solo i server MCP consentiti elencati nel file JSON.

Specificare l'URL del registro MCP

  1. Apri la console Amazon Q Developer.

  2. Seleziona Impostazioni.

  3. In Preferenze, scegli Modifica.

  4. Nel pop-up Modifica preferenze, assicurati che Model Context Protocol (MCP) sia attivo.

  5. Nel campo URL del registro MCP, immettete l'URL di un file JSON del registro MCP contenente i server MCP elencati nell'elenco consentito.

  6. Scegli Save (Salva).

Tieni presente che l'URL del registro MCP è crittografato sia in transito che a riposo in conformità alla nostra politica di crittografia dei dati.

Formato del file di registro MCP

Il formato del file JSON di registro è un sottoinsieme dello schema del server JSON nello standard di registro MCP v0.1. La definizione dello schema JSON per il sottoinsieme supportato da Q Developer è disponibile nella sezione dello schema del registro alla fine di questo documento.

Di seguito è riportato un esempio semplice e artificioso di un file di registro MCP contenente una definizione di server MCP remoto (HTTP) e locale (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" } ] } ] } } ] }

La tabella seguente descrive ogni proprietà del file JSON di registro. Tutte le proprietà sono obbligatorie, se non diversamente specificato. Vedi la sezione relativa allo schema del registro per lo schema JSON completo.

Gli attributi annidati vengono mostrati con un offset orizzontale rispetto ai rispettivi attributi principali. Ad esempio, «headers» è un attributo figlio di «remotes» e «name» e «value» sono attributi secondari di «headers».

Attributo Description Facoltativo? Valore di esempio
Attributi comuni
name Nome del server. Deve essere univoco all'interno di un determinato file di registro. "aws-ccapi-mcp"
titolo Nome del server leggibile dall'uomo. «API AWS CC»
description Descrizione del server. «Gestisci AWS infra tramite linguaggio naturale».
version Versione del server. Il controllo delle versioni semantiche (x.y.z) è fortemente consigliato. «1.0.2"
Attributi del server remoto (HTTP)
telecomandi Array con esattamente una voce che specifica l'endpoint remoto. -
  tipo Deve essere uno tra «streamable-http» o «sse». «streamable-http»
  url URL dell'endpoint del server MCP. «/mcp» https://mcp.figma.com
  headers Matrice di intestazioni HTTP da includere in ogni richiesta. -
    name Nome dell'intestazione HTTP. «Autorizzazione»
    value Valore dell'intestazione HTTP. «Portatore MF_9.b5f-4.1jqm»
Attributi del server locale (stdio)
packages Array con esattamente una voce contenente la definizione del server MCP. -
  Tipo di registro

Deve essere uno tra «npm», «pypi» o «oci».

I seguenti pacchetti runner vengono utilizzati per scaricare ed eseguire il pacchetto server MCP:

  • Per il tipo di registro «npm», viene utilizzato il runner «npx»

  • Per «pypi», viene usato «uvx»

  • Per «oci», viene utilizzato «docker»

Le macchine client devono avere i pacchetti runner appropriati preinstallati.

«npm»
  registryBaseUrl URL del registro del pacchetto. "https://npm.acme.com"
  identificatore Identificatore del pacchetto del server. "@acme /mio-server»
  Trasporto Oggetto con esattamente una proprietà, «tipo». -
    tipo Deve essere «stdio». «stdio»
  Argomenti di runtime Matrice di argomenti forniti al runtime, ad esempio a npx, uvx o docker. -
    tipo Deve essere «posizionale». «posizionale»
    value Valore dell'argomento di runtime. «-q»
  Argomenti del pacchetto Matrice di argomenti fornita al server MCP. -
    tipo Deve essere «posizionale». «posizionale»
    value Valore dell'argomento del Package. «inizio»
  Variabili d'ambiente Matrice di variabili di ambiente da impostare prima di avviare il server. -
    name Nome della variabile di ambiente. «LOG_LEVEL»
    value Valore della variabile d'ambiente. «INFORMAZIONI»

Servire il file di registro MCP

Il file JSON del registro MCP deve essere servito tramite HTTPS. Puoi servirlo come preferisci, ad esempio usando S3, Apache/nginx, ecc. Questo URL deve essere accessibile dai client Q Developer in esecuzione su quelli dei tuoi utenti. PCs Tuttavia, non è necessario che sia accessibile dalla console AWS, il che significa che può essere privato sulla rete aziendale.

Per motivi di sicurezza, l'endpoint HTTPS deve disporre di un certificato SSL valido firmato da un'autorità di certificazione affidabile. In particolare, non è possibile utilizzare un certificato autofirmato per l'endpoint del registro.

Q recupererà il registro MCP all'avvio e periodicamente (ogni 24 ore). Se, durante la sincronizzazione periodica, Q nota che un server MCP installato localmente non è più presente nel registro, interromperà quel server e impedirà all'utente di aggiungerlo nuovamente. Se rileva che il server installato localmente ha una versione diversa da quella del server nel registro, riavvierà il server con la versione definita nel registro.

Q Plugin per sviluppatori

Quando un utente avvia Q Developer, verificherà se nel profilo è definito un URL di registro. In tal caso, recupererà il JSON del registro in quell'URL e imporrà agli utenti di utilizzare solo i server MCP definiti nel registro. Quando gli utenti tentano di aggiungere un server MCP, viene loro mostrato un elenco di server definiti nel registro tra cui possono scegliere.

Schermata che mostra l'aggiunta dei server MCP definiti nel registro.

Gli utenti non possono modificare nessuno dei parametri (URL, identificatore del pacchetto, RuntimeArguments, ecc.) di un server MCP del registro. Tuttavia, possono comunque eseguire le seguenti operazioni:

  1. Regola le autorizzazioni dello strumento MCP («Chiedi di eseguire», «Esegui sempre» o «Nega»).

  2. Seleziona l'ambito del server MCP (globale o Workspace).

  3. Modifica il timeout della richiesta.

  4. Specificate variabili di ambiente aggiuntive per i server MCP locali.

  5. Specificate intestazioni HTTP aggiuntive per i server MCP remoti.

Nota

Se l'utente specifica un'intestazione env var o HTTP già definita nel registro, la definizione dell'utente avrà la precedenza. Ciò consente agli utenti di specificare attributi specifici della loro configurazione, ad esempio chiavi di autenticazione o percorsi delle cartelle locali.

Schema JSON del registro MCP

Di seguito è riportata la definizione dello schema JSON per i file JSON del registro MCP supportati da Q Developer. È possibile utilizzare questo schema per convalidare qualsiasi file di registro creato.

{ "$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" }