Manage MCP servers

Model Context Protocol (MCP) servers enable your AI applications to connect with databases, calendars, productivity tools, and APIs. This guide explains how to list MCP servers, authenticate your AI applications to MCP servers, and configure optional security and safety settings for MCP usage.

Google and Google Cloud services are available as remote MCP servers that run on our infrastructure, not your machine. For supported services, MCP endpoints are available once you enable the API. For more information, see Google Cloud MCP servers overview.

This guide is for developers who want to use Google and Google Cloud MCP servers in their AI applications, and for users of AI assistance applications such as Claude Code, Gemini Code Assist, Gemini CLI, or Google AI Studio who want to use Google and Google Cloud MCP servers to streamline their workflow.

Before you begin

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  4. To initialize the gcloud CLI, run the following command:

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  7. Verify that billing is enabled for your Google Cloud project.

  8. Install the Google Cloud CLI.

  9. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  13. Verify that billing is enabled for your Google Cloud project.

Required roles

To get the permissions that you need to use MCP servers, ask your administrator to grant you the Make MCP tool calls to Google and Google Cloud MCP tools IAM role on the Google Cloud project. For more information about granting roles, see Manage access to projects, folders, and organizations.

This predefined role contains the permissions required to use MCP servers. To see the exact permissions that are required, expand the Required permissions section:

Required permissions

The following permissions are required to use MCP servers:

  • Make MCP tool calls to Google and Google Cloud MCP tools:
    • mcp.tools.call
    • resourcemanager.projects.get
    • resourcemanager.projects.list

You might also be able to get these permissions with custom roles or other predefined roles.

Available MCP servers

Available Google and Google Cloud remote MCP servers are listed in Supported products and are registered in Agent Registry when you enable the product or service.

Manage MCP with Agent Registry

To list your available MCP servers and get updated tool descriptions, see Manage MCP tools in Agent Registry.

List available tools, prompts, and resources

Most MCP clients automatically list available tools, prompts, and resources. The following tabs describe how to manually list them using HTTP requests:

Tools

To get a list of available tools and their descriptions, MCP clients use the MCP tools/list method in an HTTP request to the MCP server or toolset endpoint. Authentication isn't required for the tools/list method.

POST /TOOLSET_ENDPOINT HTTP/1.1
Host: SERVICE_NAME
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {
    "cursor": "OPTIONAL_CURSOR_VALUE",
    "_meta": {
      "io.modelcontextprotocol/protocolVersion": "MCP_PROTOCOL_VERSION",
      "io.modelcontextprotocol/clientCapabilities": {
        "extensions": {
          "io.modelcontextprotocol/ui": {
            "mimeTypes": ["text/html;profile=mcp-app"]
          }
        ...
        }
      }
    }
  }
}

Replace the following:

  • SERVICE_NAME: The service name—for example, the BigQuery service name is bigquery.googleapis.com. For information about listing enabled services, see List services. To see a list of Google and Google Cloud services that have remote MCP servers without running commands, see Supported products.
  • TOOLSET_ENDPOINT: The remainder of the MCP endpoint after the service name. For example, for Gemini Enterprise Agent Platform, this might be mcp/models or mcp/generate.
  • OPTIONAL_CURSOR_VALUE: The cursor value from the previous response, used to retrieve the next page of results.
  • MCP_PROTOCOL_VERSION: The MCP protocol version. For example, 2026-07-28.

You can send an HTTP request to list tools directly to a Google remote MCP server with the following command:

curl -X POST https://SERVICE_NAME/TOOLSET_ENDPOINT \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'MCP-Protocol-Version: 2026-07-28' \
    -H 'Mcp-Method: tools/list' \
    -d '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "tools/list",
      "params": {
        "_meta": {
          "io.modelcontextprotocol/protocolVersion": "2026-07-28",
          "io.modelcontextprotocol/clientCapabilities": {
            "extensions": {
              "io.modelcontextprotocol/ui": {
                "mimeTypes": ["text/html;profile=mcp-app"]
              }
            }
          }
        }
      }
    }'

The response resembles the following:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      {
        "name": "list_topics",
        "title": "List Topics",
        "description": "Get list of available topics.",
        "input_schema": {...}
        "output_schema": {...}
      },
      {
        "name": "get_topic",
        "title": "Get Topic",
        "description": "Get messages in a Topic.",
        "input_schema": {...}
        "output_schema": {...}
      },
      "nextCursor": "next-page-cursor",
      "ttlMs": 300000,
      "cacheScope": "public"
      ...
    ]
  }
}

For more information about the structure of the response, see the MCP specification for tools, caching, and pagination.

Prompts

To get a list of available prompts and their descriptions, MCP clients use the MCP prompts/list method in an HTTP request to the MCP server or toolset endpoint. Authentication isn't required for the prompts/list method. All prompts are listed for all toolsets, even if they don't apply to the toolset that you're using.

POST /TOOLSET_ENDPOINT HTTP/1.1
Host: SERVICE_NAME
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "prompts/list",
  "params": {
    "cursor": "OPTIONAL_CURSOR_VALUE",
    "_meta": {
      "io.modelcontextprotocol/protocolVersion": "MCP_PROTOCOL_VERSION",
      "io.modelcontextprotocol/clientCapabilities": {
        "extensions": {
          "io.modelcontextprotocol/ui": {
            "mimeTypes": ["text/html;profile=mcp-app"]
          }
        }
      }
    }
  }
}

Replace the following:

  • SERVICE_NAME: The service name—for example, the BigQuery service name is bigquery.googleapis.com. For information about listing enabled services, see List services. To see a list of Google and Google Cloud services that have remote MCP servers without running commands, see Supported products.
  • TOOLSET_ENDPOINT: The remainder of the MCP endpoint after the service name. For example, for Gemini Enterprise Agent Platform, this might be mcp/models or mcp/generate.
  • OPTIONAL_CURSOR_VALUE: The cursor value from the previous response, used to retrieve the next page of results.
  • MCP_PROTOCOL_VERSION: The MCP protocol version. For example, 2026-07-28.

You can send an HTTP request to list prompts directly to a Google remote MCP server with the following command:

curl -X POST https://SERVICE_NAME/TOOLSET_ENDPOINT \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'MCP-Protocol-Version: 2026-07-28' \
    -H 'Mcp-Method: prompts/list' \
    -d '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "prompts/list",
      "params": {
        "_meta": {
          "io.modelcontextprotocol/protocolVersion": "2026-07-28",
          "io.modelcontextprotocol/clientCapabilities": {
            "extensions": {
              "io.modelcontextprotocol/ui": {
                "mimeTypes": ["text/html;profile=mcp-app"]
              }
            }
          }
        }
      }
    }'

The response resembles the following:

{
  "jsonrpc": "2.0",
  "id": 1,