Q Developer の MCP ガバナンス - Amazon Q Developer

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Q Developer の MCP ガバナンス

サインイン方法として IAM アイデンティティセンターを使用するプロティアのお客様は、組織内のユーザーの MCP アクセスを制御できます。デフォルトでは、ユーザーは Q クライアントで任意の MCP サーバーを使用できます。管理者は、ユーザーによる MCP サーバーの使用を完全に無効にするか、ユーザーが使用できる MCP サーバーの詳細なリストを指定できます。

これらの制限は、それぞれ MCP のオン/オフ切り替えと MCP レジストリを介して制御されます。MCP トグル属性とレジストリ属性は Q Developer プロファイルの一部であり、組織レベルまたはアカウントレベルで定義でき、アカウントレベルのプロファイルは組織レベルのプロファイルよりも優先されます。これにより、組織全体のデフォルトの MCP ポリシーを指定し、特定のアカウントでそのデフォルトを上書きできます。たとえば、組織全体では MCP が無効になっていますが、特定のチーム (アカウント) では許可リストが有効になります。

注記

トグルとレジストリ設定の両方がクライアント側に適用されます。エンドユーザーが回避できることに注意してください。

組織の MCP を無効にする

アカウントまたは組織の MCP を無効にするには:

  1. Amazon Q Developer コンソールを開きます。

  2. [設定] を選択します。

  3. [環境設定] で、[編集] を選択します。

  4. 設定の編集ポップアップで、モデルコンテキストプロトコル (MCP) をオフに切り替えます

  5. [保存] を選択します。

組織の MCP 許可リストの指定

組織内のユーザーが使用できる MCP サーバーを制御するには、JSON ファイルで許可された MCP サーバーのリストを指定し、この JSON ファイルを HTTPS 経由で提供して、目的の Q Developer Profile にその URL を入力します。このプロファイルを使用する Q Developer クライアントは、ユーザーが JSON ファイルで許可リストに登録した MCP サーバーのみを使用できるようにします。

MCP レジストリ URL の指定

  1. Amazon Q Developer コンソールを開きます。

  2. [設定] を選択します。

  3. [環境設定] で、[編集] を選択します。

  4. 設定の編集ポップアップで、モデルコンテキストプロトコル (MCP) オンになっていることを確認します。

  5. MCP レジストリ URL フィールドに、許可リストに登録された MCP サーバーを含む MCP レジストリ JSON ファイルの URL を入力します。

  6. [保存] を選択します。

MCP レジストリ URL は、データ暗号化ポリシーに従って、転送中と保管時に暗号化されることに注意してください。

MCP レジストリファイル形式

レジストリ JSON ファイルの形式は、MCP レジストリ標準 v0.1 のサーバースキーマ JSON のサブセットです。Q Developer でサポートされているサブセットの JSON スキーマ定義は、このドキュメントの最後にあるレジストリスキーマセクションで確認できます。

以下は、リモート (HTTP) とローカル (stdio) の両方の MCP サーバー定義を含む MCP レジストリファイルの簡単な例です。

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

次の表に、レジストリ JSON ファイルの各プロパティを示します。特に明記されていない限り、すべてのプロパティは必須です。完全な JSON スキーマについては、レジストリスキーマセクションを参照してください。

ネストされた属性は、親からの水平オフセットで表示されます。たとえば、「ヘッダー」は「リモート」の子属性で、「名前」と「値」は「ヘッダー」の子属性です。

属性 説明 オプション? 値の例
一般的な属性
名前 サーバー名。特定のレジストリファイル内で一意である必要があります。 「aws-ccapi-mcp」
title 人間が読めるサーバー名。 はい 「AWS CC API」
description サーバーの説明。 「自然言語による AWS infra の管理」
バージョン サーバーのバージョン。セマンティックバージョニング (x.y.z) を強くお勧めします。 「1.0.2」
リモート (HTTP) サーバー属性
リモート リモートエンドポイントを指定するエントリが 1 つだけの配列。 -
  type 「streamable-http」または「sse」のいずれかである必要があります。 「streamable-http」
  url MCP サーバーエンドポイント URL。 「https://mcp.figma.com/mcp」
  headers 各リクエストに含める HTTP ヘッダーの配列。 はい -
    名前 HTTP ヘッダー名。 「認可」
    値 HTTP ヘッダー値。 「ベアラー mF_9.B5f-4.1JqM」
ローカル (stdio) サーバー属性
パッケージ MCP サーバー定義を含むエントリが 1 つだけある配列。 -
  registryType

「npm」、「pypi」、または「oci」のいずれかである必要があります。

MCP サーバーパッケージをダウンロードして実行するには、次のパッケージランナーを使用します。

  • レジストリタイプ「npm」の場合、「npx」ランナーが使用されます。

  • 「pypi」の場合、「uvx」が使用されます

  • 「oci」の場合、「docker」が使用されます。

クライアントマシンには、適切なパッケージランナーがプリインストールされている必要があります。

「npm」
  registryBaseUrl パッケージレジストリ URL。 はい 「https://npm.acme.com」
  識別子 サーバーパッケージ識別子。 「@acme/my-server」
  トランスポート プロパティ「type」が 1 つだけあるオブジェクト。 -
    type 「stdio」である必要があります。 「stdio」
  runtimeArguments ランタイム、つまり npx、uvx、または docker に提供される引数の配列。 はい -
    type 「位置」である必要があります。 「位置」
    値 ランタイム引数値。 「-q」
  packageArguments MCP サーバーに提供される引数の配列。 はい -
    type 「位置」である必要があります。 「位置」
    値 パッケージ引数値。 「開始」
  environmentVariables サーバーを起動する前に設定する env vars の配列。 はい -
    名前 環境変数名。 「LOG_LEVEL」
    値 環境変数の値。 「INFO」

MCP レジストリファイルの供給

MCP レジストリ JSON ファイルは HTTPS 経由で提供する必要があります。これは、S3、Apache/nginx などを使用して、必要に応じて提供できます。この URL は、ユーザーの PCs で実行されている Q Developer クライアントがアクセスできる必要があります。ただし、AWS コンソールからアクセスする必要はありません。つまり、企業ネットワークに対してプライベートにすることができます。

セキュリティ上の理由から、HTTPS エンドポイントには、信頼できる認証機関によって署名された有効な SSL 証明書が必要です。特に、レジストリエンドポイントに自己署名証明書を使用することはできません。

Q は起動時および定期的に (24 時間ごと) MCP レジストリを取得します。定期的な同期中に、Q がローカルにインストールされた MCP サーバーがレジストリに存在しなくなったことに気付いた場合、Q はそのサーバーを終了し、ユーザーによる追加を禁止します。ローカルにインストールされたサーバーにレジストリ内のサーバーとは異なるバージョンがあることに気付いた場合、レジストリで定義されているバージョンでサーバーを再起動します。

Q Developer プラグイン

ユーザーが Q Developer を起動すると、レジストリ URL がプロファイルで定義されているかどうかを確認します。その場合、その URL でレジストリ JSON を取得し、ユーザーがレジストリで定義された MCP サーバーのみを使用できるようにします。ユーザーが MCP サーバーを追加しようとすると、選択できるレジストリで定義されたサーバーのリストが表示されます。

レジストリで定義された MCP サーバーの追加を示すスクリーンショット。

ユーザーは、レジストリ MCP サーバーのパラメータ (URL、パッケージ識別子、runtimeArguments など) を変更することはできません。ただし、引き続き以下を実行できます。

  1. MCP ツールのアクセス許可を調整します (「実行を依頼」、「常に実行」、または「拒否」)。

  2. MCP サーバースコープ (グローバルまたは Workspace) を選択します。

  3. リクエストのタイムアウトを変更します。

  4. ローカル MCP サーバーの追加の環境変数を指定します。

  5. リモート MCP サーバーの追加の HTTP ヘッダーを指定します。

注記

レジストリで既に定義されている env var または HTTP ヘッダーをユーザーが指定した場合、ユーザーの定義が優先されます。これにより、ユーザーは、認証キーやローカルフォルダパスなど、設定に固有の属性を指定できます。

MCP レジストリ JSON スキーマ

以下は、Q Developer でサポートされている MCP レジストリ JSON ファイルの JSON スキーマ定義です。このスキーマを使用して、作成したレジストリファイルを検証できます。

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