Tata kelola MCP untuk Pengembang Q - Amazon Q Developer

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tata kelola MCP untuk Pengembang Q

Pelanggan pro-tier yang menggunakan IAM Identity Center sebagai metode masuk dapat mengontrol akses MCP untuk pengguna dalam organisasi mereka. Secara default, pengguna Anda dapat menggunakan server MCP apa pun di klien Q mereka. Sebagai administrator, Anda memiliki kemampuan untuk sepenuhnya menonaktifkan penggunaan server MCP oleh pengguna Anda, atau menentukan daftar server MCP yang diperiksa yang diizinkan digunakan oleh pengguna Anda.

Pembatasan ini dikendalikan melalui on/off sakelar MCP dan registri MCP, masing-masing. Sakelar MCP dan atribut registri adalah bagian dari profil Pengembang Q, yang dapat didefinisikan di tingkat organisasi atau pada tingkat akun, dengan profil tingkat akun menggantikan profil tingkat organisasi. Ini memungkinkan Anda menentukan kebijakan MCP default untuk keseluruhan organisasi Anda dan kemudian mengganti default tersebut untuk akun tertentu; misalnya, menonaktifkan MCP untuk organisasi secara keseluruhan, tetapi diaktifkan dengan daftar izin untuk tim (akun) tertentu.

catatan

Baik sakelar dan pengaturan registri diberlakukan di sisi klien. Ketahuilah bahwa pengguna akhir Anda dapat menghindarinya.

Menonaktifkan MCP untuk organisasi Anda

Untuk menonaktifkan MCP untuk akun atau organisasi Anda:

  1. Buka konsol Pengembang Amazon Q.

  2. Pilih Pengaturan.

  3. Di bawah Preferensi, pilih Edit.

  4. Dalam pop-up Edit Preferences, alihkan Model Context Protocol (MCP) ke Off.

  5. Pilih Simpan.

Menentukan daftar izin MCP untuk organisasi Anda

Untuk mengontrol server MCP mana yang diizinkan untuk digunakan oleh pengguna di organisasi Anda, Anda dapat menentukan daftar server MCP yang diizinkan dalam file JSON, menyajikan file JSON ini melalui HTTPS, dan memasukkan URL tersebut di Profil Pengembang Q yang diinginkan. Setiap klien Pengembang Q yang menggunakan profil ini kemudian akan memberlakukan bahwa pengguna hanya dapat menggunakan server MCP yang Anda izinkan terdaftar dalam file JSON.

Menentukan URL registri MCP

  1. Buka konsol Pengembang Amazon Q.

  2. Pilih Pengaturan.

  3. Di bawah Preferensi, pilih Edit.

  4. Dalam pop-up Edit Preferences, pastikan Model Context Protocol (MCP) Aktif.

  5. Di bidang URL Registri MCP, masukkan URL file JSON registri MCP yang berisi server MCP yang terdaftar yang diizinkan.

  6. Pilih Simpan.

Perhatikan bahwa URL registri MCP dienkripsi baik dalam perjalanan maupun saat istirahat sesuai dengan kebijakan enkripsi data kami.

Format file registri MCP

Format file JSON registri adalah bagian dari skema server JSON dalam standar registri MCP v0.1. Definisi skema JSON untuk subset yang didukung oleh Q Developer tersedia di bagian skema registri di akhir dokumen ini.

Di bawah ini adalah contoh sederhana dari file registri MCP yang berisi definisi server MCP jarak jauh (HTTP) dan lokal (stdio) MCP server.

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

Tabel berikut menjelaskan setiap properti dari file JSON registri. Semua properti wajib, kecuali dinyatakan lain. Lihat bagian skema registri untuk skema JSON lengkap.

Atribut bersarang ditampilkan dengan offset horizontal dari induknya. Misalnya, “header” adalah atribut anak dari “remote”, dan “name” dan “value” adalah atribut anak dari “header”.

Atribut Deskripsi Opsional? Nilai contoh
Atribut umum
name Nama server. Harus unik dalam file registri yang diberikan. "aws-ccapi-mcp"
title Nama server yang dapat dibaca manusia. Ya “AWS CC API”
deskripsi Deskripsi server. “Kelola infra AWS melalui bahasa alami.”
versi Versi server. Versi semantik (x.y.z) sangat disarankan. “1.0.2"
Atribut server jarak jauh (HTTP)
remote Array dengan tepat satu entri yang menentukan titik akhir jarak jauh. -
  jenis Harus salah satu dari “streamable-http” atau “sse”. “streamable-http”
  url URL titik akhir server MCP. “https://mcp.figma.com/mcp”
  headers Array header HTTP untuk disertakan dalam setiap permintaan. Ya -
    name Nama header HTTP. “Otorisasi”
    nilai Nilai header HTTP. “Pembawa MF_9.B5F-4.1Jqm”
Atribut server lokal (stdio)
paket Array dengan tepat satu entri yang berisi definisi server MCP. -
  RegistryType

Harus salah satu dari “npm”, “pypi”, atau “oci”.

Pelari paket berikut digunakan untuk mengunduh dan menjalankan paket server MCP:

  • Untuk tipe registri “npm”, runner “npx” digunakan

  • Untuk “pypi”, “uvx” digunakan

  • Untuk “oci”, “docker” digunakan

Mesin klien harus memiliki pelari paket yang sesuai yang sudah diinstal sebelumnya.

“npm”
  registryBaseUrl URL registri paket. Ya "https://npm.acme.com"
  pengenal Pengidentifikasi paket server. “@acme /server-saya”
  transport Objek dengan tepat satu properti, “type”. -
    jenis Harus “stdio”. “stdio”
  RuntimeArguments Array argumen yang disediakan untuk runtime, yaitu, ke npx, uvx atau docker. Ya -
    jenis Harus “posisional”. “posisi”
    nilai Nilai argumen runtime. “-q”
  PaketArguments Array argumen yang diberikan ke server MCP. Ya -
    jenis Harus “posisional”. “posisi”
    nilai Nilai argumen Package. “mulai”
  Variabel LingkunganVariabel Array env vars untuk disetel sebelum memulai server. Ya -
    name Nama variabel lingkungan. “LOG_LEVEL”
    nilai Nilai variabel lingkungan. “INFO”

Melayani file registri MCP

File JSON registri MCP harus disajikan melalui HTTPS. Anda dapat menyajikan ini sesuka Anda, misalnya, menggunakan S3, Apache/nginx, dll. URL ini harus dapat diakses oleh klien Pengembang Q yang berjalan pada pengguna PCs Anda. Namun, tidak perlu diakses dari konsol AWS, yang berarti dapat bersifat pribadi untuk jaringan perusahaan Anda.

Untuk alasan keamanan, titik akhir HTTPS harus memiliki sertifikat SSL yang valid yang ditandatangani oleh Otoritas Sertifikat tepercaya. Secara khusus, Anda tidak dapat menggunakan sertifikat yang ditandatangani sendiri untuk titik akhir registri.

Q akan mengambil registri MCP saat startup dan secara berkala (setiap 24 jam). Jika, selama sinkronisasi periodik, Q memperhatikan bahwa server MCP yang diinstal secara lokal tidak lagi ada di registri, itu akan menghentikan server itu dan melarang pengguna menambahkannya kembali. Jika memperhatikan bahwa server yang diinstal secara lokal memiliki versi yang berbeda dari server dalam registri, itu akan meluncurkan kembali server dengan versi seperti yang didefinisikan dalam registri.

Plugin Q Pengembang

Ketika pengguna meluncurkan Q Developer, itu akan memeriksa apakah URL registri ditentukan pada profil. Jika demikian, itu akan mengambil JSON registri di URL itu, dan menegakkan bahwa pengguna hanya dapat menggunakan server MCP yang ditentukan dalam registri. Ketika pengguna mencoba menambahkan server MCP, mereka akan ditampilkan daftar server yang ditentukan dalam registri yang dapat mereka pilih.

Tangkapan layar yang menunjukkan penambahan server MCP yang ditentukan dalam registri.

Pengguna tidak dapat memodifikasi salah satu parameter (URL, pengenal paket, RuntimeArguments, dll.) dari server MCP registri. Namun, mereka masih dapat melakukan hal berikut:

  1. Sesuaikan izin alat MCP (“Minta untuk menjalankan”, “Selalu jalankan”, atau “Tolak”).

  2. Pilih lingkup server MCP (Global atau Workspace).

  3. Ubah batas waktu permintaan.

  4. Tentukan variabel lingkungan tambahan untuk server MCP lokal.

  5. Tentukan header HTTP tambahan untuk server MCP jarak jauh.

catatan

Jika pengguna menentukan env var atau header HTTP yang sudah didefinisikan dalam registri, definisi pengguna akan diutamakan. Ini memungkinkan pengguna untuk menentukan atribut yang spesifik untuk pengaturan mereka, misalnya, kunci autentikasi atau jalur folder lokal.

Skema JSON registri MCP

Di bawah ini adalah definisi skema JSON untuk file JSON registri MCP yang didukung oleh Q Developer. Anda dapat menggunakan skema ini untuk memvalidasi file registri apa pun yang Anda buat.

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