使用 MCP 伺服器

您可以使用 MCP 伺服器存取及執行工具,透過 AI 代理平台建立、管理及查詢Google Cloud 資源。本文說明如何透過 Visual Studio Code 的 Google Cloud Data Agent Kit 擴充功能,連線至 Google Cloud 遠端 Model Context Protocol (MCP) 伺服器。

支援的 MCP 伺服器

VS Code 的 Data Agent Kit 擴充功能支援下列遠端 MCP 伺服器。如需產品特定詳細資料,請參閱下列指南:

啟用對應的 API 時,系統會啟用遠端 MCP 伺服器。舉例來說,在專案中啟用 Spanner API 時,系統會自動啟用 Spanner 遠端 MCP。

Google Cloud 遠端 MCP 伺服器

Google 和 Google Cloud 遠端 MCP 伺服器具備下列功能和優點:

  • 簡化集中式探索作業
  • 代管全域或區域 HTTP 端點
  • 精細授權
  • (選用) 使用 Model Armor 保護提示詞和回覆
  • 集中式稽核記錄

如要瞭解其他 MCP 伺服器,以及 Google Cloud MCP 伺服器適用的安全性與控管措施,請參閱 Google Cloud MCP 伺服器總覽

Model Context Protocol (MCP) 標準可將大型語言模型 (LLM) 和 AI 應用程式/代理程式連結至外部資料來源的方式標準化。MCP 伺服器可讓您使用工具、資源和提示,從後端服務採取行動及取得更新資料。

本機和遠端 MCP 伺服器有何不同?

本機 MCP 伺服器
通常在本機執行,並使用標準輸入和輸出串流 (stdio) 在同一部裝置上的服務之間通訊。
遠端 MCP 伺服器
在服務的基礎架構上執行,並為 AI 應用程式提供 HTTP 端點,供 AI MCP 用戶端與 MCP 伺服器通訊。如要進一步瞭解 MCP 架構,請參閱 MCP 架構

事前準備

  1. 安裝 VS Code 擴充功能的 Data Agent Kit 擴充功能。
  2. 設定及調整擴充功能。請務必啟用所有 API。

必要的角色

如要取得從 IDE 存取 Google Cloud MCP 伺服器所需的權限,請要求管理員授予您目前專案的 MCP 工具使用者 (roles/mcp.toolUser) IAM 角色。

視您打算存取的資源而定,您可能需要擴充功能使用權以外的其他角色。如要查看存取各項支援服務的遠端 MCP 伺服器時,必須具備的最低角色,請參閱產品專屬指南。 Google Cloud

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

服務帳戶模擬

從 VS Code 的 Data Agent Kit 擴充功能連線至 MCP 伺服器時,您可以使用使用者憑證,也可以使用服務帳戶模擬功能。連線至 MCP 伺服器時,建議您使用 gcloud CLI 的服務帳戶模擬功能和應用程式預設憑證 (ADC)。

這包括從您用來登入 VS Code 中Google Cloud 和 gcloud CLI 的憑證開始,通常是您的使用者帳戶。接著,您會為服務帳戶要求短期憑證,並使用服務帳戶憑證,而非使用者憑證。詳情請參閱「使用服務帳戶模擬功能」。

如要瞭解如何使用服務帳戶模擬功能向 MCP 伺服器進行驗證,請參閱「服務帳戶模擬」。

驗證及授權

完成下列驗證和授權步驟。如要進一步瞭解 Google 帳戶授權,請參閱「使用 OAuth 2.0 存取 Google API」。

在 IDE 中啟動驗證程序

如要開始這項程序,請在 IDE 中向代理程式聊天室提交提示。

  1. 如果沒有顯示「Chat」面板,請按下 Cmd/Ctrl+Shift+P 開啟指令面板,然後搜尋並執行「Open Chat」
  2. 在「對話」面板中提交下列提示:

    list BigQuery datasets using mcp server
    

    代理程式會建議下列 gcloud CLI 指令:

    gcloud config get-value project
    
  3. 按一下「Allow」

    畫面上會顯示對話方塊,詢問您是否要提供用戶端 ID。

  4. 按一下「複製 URI 並繼續」

    指令區塊面板會開啟,並要求提供 OAuth 用戶端 ID。

取得 OAuth 用戶端 ID

接著,從 Google Cloud 控制台取得 OAuth 用戶端 ID。

  1. 在瀏覽器中開啟 Google Cloud 控制台
  2. 按一下 [Select a project] (選取專案)。
  3. 選取您在 VS Code 的 Data Agent Kit 擴充功能中使用的專案。
  4. API 導覽選單中,按一下「憑證」
  5. 在「OAuth 2.0 用戶端 ID」下方,按一下要使用的用戶端 ID。
  6. 在詳細資料窗格的「其他資訊」下方,找出並複製「用戶端 ID」的值。

向 VS Code 提供憑證

在 IDE 中輸入用戶端 ID 和用戶端密鑰。

  1. 返回 VS Code。
  2. 將用戶端 ID 貼到「新增用戶端註冊詳細資料」對話方塊。
  3. 按下 Enter 鍵。
  4. 返回控制台,然後複製「Client secret」(用戶端密鑰) 的值。
  5. 返回 VS Code。
  6. 將用戶端密鑰貼到「新增用戶端註冊詳細資料」對話方塊,然後按下 Enter 鍵。

    代理程式會繼續執行,然後顯示對話方塊,指出 MCP 伺服器想要進行驗證。

  7. 按一下「Allow」

  8. 如果系統提示您再次登入 Google 帳戶,請按照指示操作,然後返回 IDE。

    代理程式會從 MCP 伺服器取得您要求的 BigQuery 資料集,並顯示清單。

在擴充功能中設定 Google Cloud 遠端 MCP 伺服器

在 IDE 中使用代理工具,即可例項化 MCP 用戶端,連線至單一 MCP 伺服器。您可以有多個連線至不同 MCP 伺服器的用戶端。如要連線至遠端 MCP 伺服器,MCP 用戶端至少必須知道遠端 MCP 伺服器的網址。

請視需要為每個用戶端使用下列項目。

  • 伺服器名稱SERVER_NAME
  • 端點ENDPOINT
  • 傳輸:HTTP
  • 驗證詳細資料:視驗證方式而定,您可以輸入 Google Cloud 憑證、OAuth 用戶端 ID 和密鑰,或是代理商身分和憑證。
  • OAuth 範圍:連線至 AlloyDB MCP 伺服器時要使用的 OAuth 2.0 範圍

SERVER_NAMEENDPOINT 替換為要連線的服務值。如果是 AlloyDB,您必須指定區域,例如 us-east4

服務

伺服器名稱

端點

AlloyDB

AlloyDB MCP 伺服器

https://alloydb.REGION.rep.googleapis.com/mcp

BigQuery

BigQuery MCP 伺服器

https://bigquery.googleapis.com/mcp

Cloud SQL

Cloud SQL MCP 伺服器

https://sqladmin.googleapis.com/mcp

Knowledge Catalog

Knowledge Catalog MCP 伺服器

https://dataplex.googleapis.com/mcp

Managed Service for Apache Spark

Managed Service for Apache Spark MCP 伺服器

https://dataproc-us-central1.googleapis.com/mcp

Spanner

Spanner MCP 伺服器

https://spanner.googleapis.com/mcp

工具箱和遠端 MCP 伺服器的 MCP 設定

針對要連線的每個 Google Cloud Data Agent Kit 服務,使用下列設定。

AlloyDB

遠端

'alloydb': {
  remote: {
    vscode: {
      'datacloud_alloydb_remote': {
        type: 'http',
        url: 'https://alloydb.REGION.rep.googleapis.com/mcp',
        authProviderType: 'google_credentials',
        oauth: {
          scopes: ['https://www.googleapis.com/auth/cloud-platform'],
        },
      },

本機

'datacloud_alloydb-postgres-admin_toolbox': {
  '$typeName': 'exa.cascade_plugins_pb.CascadePluginCommandTemplate',
  'command': 'npx',
  'args': [
    '-y',
    '@toolbox-sdk/server@>=1.1.0',
    '--prebuilt',
    'alloydb-postgres-admin',
    '--stdio'
  ],
  'env': {},
},
'datacloud_alloydb-postgres_toolbox': {
  '$typeName': 'exa.cascade_plugins_pb.CascadePluginCommandTemplate',
  'command': 'npx',
  'args': [
    '-y',
    '@toolbox-sdk/server@>=1.1.0',
    '--prebuilt',
    'alloydb-postgres',
    '--stdio'
  ],
  'env': {
    'ALLOYDB_POSTGRES_CLUSTER': '',
    'ALLOYDB_POSTGRES_DATABASE': '',
    'ALLOYDB_POSTGRES_INSTANCE': '',
    'ALLOYDB_POSTGRES_IP_TYPE': '',
    'ALLOYDB_POSTGRES_PASSWORD': '',
    'ALLOYDB_POSTGRES_PROJECT': '',
    'ALLOYDB_POSTGRES_REGION': '',
    'ALLOYDB_POSTGRES_USER': '',
  },
},

BigQuery

遠端

'datacloud_bigquery_remote': {
  type: 'http',
  url: 'https://bigquery.googleapis.com/mcp',
  authProviderType: 'google_credentials',
  oauth: {
    scopes: [
      'https://www.googleapis.com/auth/bigquery',
      'https://www.googleapis.com/auth/cloud-platform',
    ],
  },
},

本機

'datacloud_bigquery_toolbox': {
  command: 'npx',
  args: [
    '-y',
    '@toolbox-sdk/server@>=1.1.0',
    '--prebuilt',
    'bigquery',
    '--stdio'
  ],
  env: {
    'BIGQUERY_LOCATION': '',
    'BIGQUERY_PROJECT': '',
  },
},

Cloud SQL

遠端

'datacloud_cloud-sql_remote': {
  type: 'http',
  url: 'https://sqladmin.googleapis.com/mcp',
  authProviderType: 'google_credentials',
  oauth: {
    scopes: ['https://www.googleapis.com/auth/cloud-platform'],
  },
},

本機

'datacloud_cloud-sql-postgresql-admin_toolbox': {
  '$typeName': 'exa.cascade_plugins_pb.CascadePluginCommandTemplate',
  'command': 'npx',
  'args': [
    '-y',
    '@toolbox-sdk/server@>=1.1.0',
    '--prebuilt',
    'cloud-sql-postgres-admin',
    '--stdio'
  ],
  'env': {},
},
'datacloud_cloud-sql-postgresql_toolbox': {
  '$typeName': 'exa.cascade_plugins_pb.CascadePluginCommandTemplate',
  'command': 'npx',
  'args': [
    '-y',
    '@toolbox-sdk/server@>=1.1.0',
    '--prebuilt',
    'cloud-sql-postgres',
    '--stdio'
  ],
  'env': {
    'CLOUD_SQL_POSTGRES_DATABASE': '',
    'CLOUD_SQL_POSTGRES_INSTANCE': '',
    'CLOUD_SQL_POSTGRES_IP_TYPE': '',
    'CLOUD_SQL_POSTGRES_PASSWORD': '',
    'CLOUD_SQL_POSTGRES_PROJECT': '',
    'CLOUD_SQL_POSTGRES_REGION': '',
    'CLOUD_SQL_POSTGRES_USER': '',
  },
},

Knowledge Catalog

遠端

'datacloud_knowledge_catalog_remote': {
  type: 'http',
  url: 'https://dataplex.googleapis.com/mcp',
  authProviderType: 'google_credentials',
  oauth: {
    scopes: ['https://www.googleapis.com/auth/cloud-platform'],
  },

本機

'datacloud_knowledge_catalog_toolbox': {
  '$typeName': 'exa.cascade_plugins_pb.CascadePluginCommandTemplate',
  'command': 'npx',
  'args': [
    '-y',
    '@toolbox-sdk/server@>=1.1.0',
    '--prebuilt',
    'dataplex',
    '--stdio'
  ],
  'env': {
      'DATAPLEX_PROJECT': '${PROJECT_ID}',
    }

Managed Service for Apache Spark

遠端

'datacloud_managed_apache_spark_remote': {
          type: 'http',
          url: 'https://dataproc-${REGION}.googleapis.com/mcp',
          authProviderType: 'google_credentials',
          oauth: {
            scopes: ['https://www.googleapis.com/auth/dataproc'],
          },
        },

本機

'datacloud_managed_apache_spark_toolbox': {
        '$typeName': 'exa.cascade_plugins_pb.CascadePluginCommandTemplate',
        'command': 'npx',
        'args': [
          '-y',
          TOOLBOX_VERSION,
          '--prebuilt',
          'dataproc',
          '--stdio',
          '--user-agent-metadata',
          'google-cloud-data-agent-kit-${IDE_TYPE}',
        ],
        'env': {
          'DATAPROC_PROJECT': '${PROJECT_ID}',
          'DATAPROC_REGION': '${REGION}',
        },
      },
      'datacloud_serverless-spark_toolbox': {
        '$typeName': 'exa.cascade_plugins_pb.CascadePluginCommandTemplate',
        'command': 'npx',
        'args': [
          '-y',
          TOOLBOX_VERSION,
          '--prebuilt',
          'serverless-spark',
          '--stdio',
          '--user-agent-metadata',
          'google-cloud-data-agent-kit-${IDE_TYPE}',
        ],
        'env': {
          'SERVERLESS_SPARK_PROJECT': '${PROJECT_ID}',
          'SERVERLESS_SPARK_LOCATION': '${REGION}',
        },
      },

Spanner

遠端

'datacloud_spanner_remote': {
  type: 'http',
  url: 'https://spanner.googleapis.com/mcp',
  authProviderType: 'google_credentials',
  oauth: {
    scopes: [
      'https://www.googleapis.com/auth/spanner.admin',
      'https://www.googleapis.com/auth/spanner.data',
    ],
   },
},

本機

'datacloud_spanner_toolbox': {
  '$typeName': 'exa.cascade_plugins_pb.CascadePluginCommandTemplate',
  'command': 'npx',
  'args': [
    '-y',
    '@toolbox-sdk/server@>=1.1.0',
    '--prebuilt',
    'spanner',
    '--stdio'
  ],
  'env': {
    'SPANNER_DATABASE': '',
    'SPANNER_DIALECT': '',
    'SPANNER_INSTANCE': '',
    'SPANNER_PROJECT': '',
  },
},

選用的安全防護設定

由於 MCP 工具可執行各種動作,因此會帶來新的安全風險和考量。為盡量降低及管理這些風險,Google Cloud 提供預設設定和可自訂的政策,方便您控管機構或專案中 MCP 工具的使用情形。 Google Cloud

如要進一步瞭解 MCP 安全性和控管措施,請參閱這篇文章

使用 Model Armor

Model Armor 是一項Google Cloud 服務,可提高 AI 應用程式的安全性。這項功能會主動篩選 LLM 提示詞和回覆,防範各種風險並支援負責任的 AI 做法。無論您是在雲端環境或外部雲端供應商部署 AI,Model Armor 都能協助您防範惡意輸入、驗證內容安全性、保護私密資料、維持法規遵循狀態,並在多元的 AI 環境中,持續強制執行 AI 安全政策。

啟用 Model Armor 並啟用記錄功能後,Model Armor 會記錄整個酬載。這可能會導致記錄中的私密資訊外洩。

啟用 Model Armor

您必須先啟用 Model Armor API,才能使用 Model Armor。

控制台

  1. 啟用 Model Armor API。

    啟用 API 時所需的角色

    如要啟用 API,您需要服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    啟用 API

  2. 選取要啟用 Model Armor 的專案。

gcloud

開始前,請使用 Google Cloud CLI 搭配 Model Armor API 執行下列步驟:

  1. 在 Google Cloud 控制台中啟用 Cloud Shell。

    啟用 Cloud Shell

    Google Cloud 主控台底部會開啟一個 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。

  2. 執行下列指令,為 Model Armor 服務設定 API 端點。

    gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.LOCATION.rep.googleapis.com/"

    LOCATION 替換為要使用 Model Armor 的區域。

設定 Google 和 Google Cloud 遠端 MCP 伺服器的防護功能

如要保護 MCP 工具呼叫和回應,可以使用 Model Armor 底限設定。底限設定會定義專案適用的最低安全性篩選條件。這項設定會對專案中的所有 MCP 工具呼叫和回應套用一致的篩選器。

設定啟用 MCP 消毒功能的 Model Armor 底限設定。詳情請參閱「設定 Model Armor 底價」。

請參閱下列指令範例:

gcloud model-armor floorsettings update \
--full-uri='projects/PROJECT_ID/locations/global/floorSetting' \
--enable-floor-setting-enforcement=TRUE \
--add-integrated-services=GOOGLE_MCP_SERVER \
--google-mcp-server-enforcement-type=INSPECT_AND_BLOCK \
--enable-google-mcp-server-cloud-logging \
--malicious-uri-filter-settings-enforcement=ENABLED \
--add-rai-settings-filters='[{"confidenceLevel": "MEDIUM_AND_ABOVE", "filterType": "DANGEROUS"}]'

PROJECT_ID 替換為 Google Cloud 專案 ID。

請注意下列設定:

  • INSPECT_AND_BLOCK:強制執行類型,可檢查 Google MCP 伺服器的內容,並封鎖符合篩選條件的提示和回覆。
  • ENABLED:啟用篩選器或強制執行的設定。
  • MEDIUM_AND_ABOVE:負責任的 AI 技術 - 危險篩選器設定的信心水準。您可以修改這項設定,但較低的值可能會導致更多誤判。詳情請參閱「Model Armor 信心水準」。

使用 Model Armor 停用掃描 MCP 流量

如要停止讓 Model Armor 根據專案的底限設定,自動掃描往返 Google MCP 伺服器的流量,請執行下列指令:

gcloud model-armor floorsettings update \
  --full-uri='projects/PROJECT_ID/locations/global/floorSetting' \
  --remove-integrated-services=GOOGLE_MCP_SERVER

PROJECT_ID 替換為 Google Cloud 專案 ID。Model Armor 不會自動將這個專案底限設定中定義的規則,套用至任何 Google MCP 伺服器流量。

Model Armor 底限設定和一般設定不僅會影響 MCP,由於 Model Armor 會與 Vertex AI 等服務整合,因此您對底限設定所做的任何變更,都會影響所有整合服務 (不只是 MCP) 的流量掃描和安全行為。

使用 IAM 拒絕政策控管 MCP 使用情形

身分與存取權管理 (IAM) 拒絕政策可協助您保護遠端 MCP 伺服器。 Google Cloud 設定這些政策,封鎖不必要的 MCP 工具存取權。

舉例來說,您可以根據下列條件拒絕或允許存取:

  • 主體
  • 工具屬性 (例如唯讀)
  • 應用程式的 OAuth 用戶端 ID

詳情請參閱「使用 Identity and Access Management 控制 MCP 使用情形」。

疑難排解

如要瞭解如何診斷及解決 VS Code 的 Data Agent Kit 擴充功能錯誤,請參閱「排解 VS Code 的 Data Agent Kit 擴充功能問題」。

後續步驟