Google BigQuery MCP server

Endpoint: https://bigquery.googleapis.com/mcp · Authentication: Sign in with OAuth

Lists BigQuery datasets and tables, reads table schemas, and runs SQL queries in a Google Cloud project. Requires Google Cloud credentials through OAuth.

How do I authenticate?

Add the endpoint in your client, start Connect or Sign in, approve the requested scopes, and return to the client. OAuth discovery finds the authorization server; client registration requirements vary by provider. Follow the provider guidance and client setup below.

Authentication and connection guide

Connection specification

Remote endpoint
https://bigquery.googleapis.com/mcp
Browser access
Not yet measured
Declared MCP transport
Streamable HTTP
Live-validated MCP transport
Streamable HTTP — Observed by the latest catalog validation
Declared authentication
OAuth 2.1
Detected authentication
OAuth 2.1 detected or retained from publisher evidence
Protocol lifecycle
Stateful MCP · 2025-11-25
Authorization server
https://accounts.google.com/
Category
Databases

Product documentation · Official listing documentation

Provider guidance

  • Initialization and tool listing succeeded without credentials in the 2026-10-20 audit; tool calls require Google Cloud credentials. Google OAuth clients are pre-registered in a Google Cloud project; the server does not advertise Dynamic Client Registration.

More Databases MCP servers · Browse all MCP servers · Test this endpoint in the MCP Playground

Authorization setup

Registration requirements not verified

The OAuth authorization and app-registration requirements for this exact endpoint have not been verified. A compatible client will request authorization, but follow the publisher documentation and do not guess client credentials or callbacks.

Publisher evidence reviewed .

Publisher documentation

Connect it

Live-validated endpoint: https://bigquery.googleapis.com/mcp · Streamable HTTP. Registration requirements not verified: The OAuth authorization and app-registration requirements for this exact endpoint have not been verified. A compatible client will request authorization, but follow the publisher documentation and do not guess client credentials or callbacks.

Agent prompt for Claude Code or Codex
Add the Google BigQuery MCP server to my MCP client configuration and verify that it works.

What it is: Lists BigQuery datasets and tables, reads table schemas, and runs SQL queries in a Google Cloud project. Requires Google Cloud credentials through OAuth.
Server URL: https://bigquery.googleapis.com/mcp
Transport: Streamable HTTP (remote MCP server, no local install).
Authentication: OAuth 2.1. Registration requirements not verified: The OAuth authorization and app-registration requirements for this exact endpoint have not been verified. A compatible client will request authorization, but follow the publisher documentation and do not guess client credentials or callbacks.
Tools (9, as last observed by mcptest): cancel_job, execute_sql, execute_sql_readonly, get_dataset_info, get_job, get_query_results, get_table_info, list_dataset_ids, list_table_ids.
Reference: https://mcptest.io/servers/google-bigquery/

Steps:
1. Work out which MCP client I use (Claude Code, Codex, Cursor, VS Code or another) and add the server under the name "google-bigquery" in that client's MCP configuration, user scope unless I ask otherwise.
   Claude Code: claude mcp add --transport http --scope user 'google-bigquery' 'https://bigquery.googleapis.com/mcp'
   Other clients: use the setup for that client on the reference page.
2. Never write a credential value into a file that could be committed; reference an environment variable or the client's secret store, and ask me for any value you need.
3. Verify: connect to the server and call tools/list. Confirm the tools above are listed, and report any sign-in step I still have to complete.
MCP client

Claude Code setup

Run in a terminal. This user-scoped entry is available across projects.

claude mcp add --transport http --scope user 'google-bigquery' 'https://bigquery.googleapis.com/mcp'
  • After adding the server, open Claude Code, run /mcp, select the server, and follow the browser flow to authenticate.

Codex CLI setup

Run in a terminal; Codex stores the entry in ~/.codex/config.toml.

codex mcp add 'google-bigquery' --url 'https://bigquery.googleapis.com/mcp'
codex mcp login 'google-bigquery'

Cursor setup

Add to .cursor/mcp.json for this project, or ~/.cursor/mcp.json for all projects.

{
  "mcpServers": {
    "google-bigquery": {
      "url": "https://bigquery.googleapis.com/mcp"
    }
  }
}

VS Code setup

Add to .vscode/mcp.json, or run “MCP: Open User Configuration” for a private user-level entry.

{
  "servers": {
    "google-bigquery": {
      "type": "http",
      "url": "https://bigquery.googleapis.com/mcp"
    }
  }
}

Claude setup

Add the endpoint above in Claude:

  • Customize > Connectors > Add custom connector
  • Team/Enterprise: Organization settings > Connectors > Add > Custom > Web

Claude Desktop setup

Add the endpoint above in Claude Desktop:

  • Remote: Customize > Connectors (same as claude.ai)
  • Local: Settings > Developer > Edit Config, or Settings > Extensions for .mcpb files
  • ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows), local servers only

ChatGPT setup

Add the endpoint above in ChatGPT:

  • ChatGPT web: Plugins > Add custom MCP server, then configure authentication and accept the risk warning

Windsurf setup

Add the endpoint above in Windsurf:

  • ~/.config/devin/mcp_config.json (%APPDATA%\devin\mcp_config.json on Windows), serverUrl or url
  • Cascade panel > ... > MCPs > Open MCP config file

Gemini CLI setup

Add the endpoint above in Gemini CLI:

  • gemini mcp add --transport http <name> <url>
  • ~/.gemini/settings.json (user) or .gemini/settings.json (project), mcpServers

MCP SDK setup

Add the endpoint above in MCP SDK:

  • Programmatic: new Client(...).connect(new StreamableHTTPClientTransport(url))

Notes for every client

  • Publisher evidence (reviewed 2026-10-20): https://docs.cloud.google.com/bigquery/docs/use-bigquery-mcp
  • Provider guidance: Initialization and tool listing succeeded without credentials in the 2026-10-20 audit; tool calls require Google Cloud credentials. Google OAuth clients are pre-registered in a Google Cloud project; the server does not advertise Dynamic Client Registration.

Client compatibility

ClientStatusWhy
Claude CodeSupportedClaude Code supports Streamable HTTP servers and OAuth sign-in.
CodexSupportedCodex supports Streamable HTTP servers and OAuth sign-in.
CursorSupportedCursor supports Streamable HTTP servers and OAuth sign-in.
VS CodeSupportedVS Code supports Streamable HTTP servers and OAuth sign-in.
ClaudeSupportedClaude supports Streamable HTTP servers and OAuth sign-in.
Claude DesktopSupportedClaude Desktop supports Streamable HTTP servers and OAuth sign-in.
ChatGPTPartialStateful routing needs operational care: ChatGPT can preserve MCP sessions, but the deployment must route a session consistently and retain its state.
WindsurfPartialWindsurf's documentation does not state support for OAuth sign-in.
Gemini CLISupportedGemini CLI supports Streamable HTTP servers and OAuth sign-in.
MCP SDKSupportedMCP SDK supports Streamable HTTP servers and OAuth sign-in.

Computed from this server's validated transport, protocol and authentication against documented client support. Checks the catalog has not observed are not counted.

Similar servers

  • Supabase — Remote MCP server for Supabase projects, Postgres databases, backend tooling, and documentation. OAuth 2.1
  • Neon — Remote MCP server for Neon Postgres projects, branches, SQL, and documentation. OAuth 2.1
  • Prisma — Creates and manages Prisma Postgres databases, connection strings, backups, Prisma Compute apps, and Object Storage buckets in a Prisma workspace. Requires Prisma OAuth. OAuth 2.1
  • PlanetScale — Lists PlanetScale organizations, databases, and branches, reads Insights and schema recommendations, and runs read or write queries with short-lived credentials. Requires PlanetScale OAuth. OAuth 2.1
  • InstantDB — Creates and manages Instant apps, including their schema and permission rules. Requires Instant account OAuth. OAuth 2.1
  • MongoDB Atlas — Managed MCP access to MongoDB Atlas deployments and data. Uses OAuth in supported clients or Atlas service-account credentials as a bearer token, and must be enabled per organization. OAuth 2.1

Guides for this server

Watch this server for breaking changes

Share and embed

Maintain Google BigQuery? Embed this badge in your README. It follows the latest catalog validation result and links to this server profile.

mcptest.io: ready

Latest validation evidence

Validation status
Online when last tested
Validation checked at
Oct 26, 2026 at 11:06 AM
Validation detail
Negotiated stateful MCP 2025-11-25 at https://bigquery.googleapis.com/mcp; detected transport streamable-http; authentication oauth

Tool inventory

What the catalog validator observed on at https://bigquery.googleapis.com/mcp without credentials. The live server may have changed since; connect in the Playground for the current list.

Tools provided by Google BigQuery 9

Some details were sanitized for public display.

  • cancel_joboutputSchema declared

    Cancel a running BigQuery job. Use this tool to cancel a query job that is currently executing (i.e. returned `job_complete: false` with a `job_id` from `execute_sql` or `execute_sql_readonly`). Specify the `job_id` to abort.

    Input jobId: string, location: string, projectId: string
    • jobId: stringrequired

      Required. Job ID of the job to cancel.

    • location: stringrequired

      Required. The geographic location of the job.

    • projectId: stringrequired

      Required. Project ID of the job to cancel.

  • execute_sqloutputSchema declared

    Run a SQL query in the project and return the result. Prefer the `execute_sql_readonly` tool if possible. This tool can execute any query that bigquery supports including: * SQL Queries (`SELECT`, `INSERT`, `UPDATE`, `DELETE`, `CREATE`, etc.) * AI/ML functions like `AI.FORECAST`, `AI.KEY_DRIVERS`, `ML.EVALUATE`, `ML.PREDICT` * Any other query that bigquery supports. Example Queries: ```sql -- Insert data into a table. INSERT INTO `my_project.my_dataset`.my_table (name, age) VALUES ('Alice', 30); -- Create a table. CREATE TABLE `my_project.my_dataset`.my_table ( name STRING, age INT64); -- DELE

    Input dryRun?: boolean, jobTimeoutMs?: string, labels?: object, projectId: string, query: string, timeoutMs?: integer
    • dryRun?: booleanoptional

      Optional. If set to true, BigQuery doesn't run the job. Instead, if the query is valid, BigQuery returns statistics about the job such as how many bytes would be processed. If the query is invalid, an error returns. The default value is false.

    • jobTimeoutMs?: stringoptional

      Optional. Optional: Job timeout in milliseconds. If this time limit is exceeded, BigQuery will attempt to stop the query job.

    • labels?: objectoptional

      Optional. The labels associated with this query. Labels can be used to organize and group query jobs. Label keys and values can be no longer than 63 characters, can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. Label keys must start with a letter and each label in the map must have a different key.

    • projectId: stringrequired

      Required. Project that will be used for query execution and billing.

    • query: stringrequired

      Required. The query to execute in the form of a GoogleSQL query.

    • timeoutMs?: integeroptional

      Optional. Optional: Specifies the maximum amount of time, in milliseconds, that the client is willing to wait for the query to complete. By default, this limit is 20 seconds (20,000 milliseconds).

  • execute_sql_readonlyoutputSchema declared

    Run a read-only SQL query in the project and return the result. Prefer this tool over `execute_sql` if possible. This tool is restricted to only `SELECT` statements. `INSERT`, `UPDATE`, and `DELETE` statements and stored procedures aren't allowed. If the query doesn't include a `SELECT` statement, an error is returned. For information on creating queries, see the [GoogleSQL documentation]([REDACTED URI] IMPORTANT: For predictive and analytical tasks (forecasting, anomaly detection, key driver / root cause analysis, classification, c

    Input dryRun?: boolean, jobTimeoutMs?: string, labels?: object, projectId: string, query: string, timeoutMs?: integer
    • dryRun?: booleanoptional

      Optional. If set to true, BigQuery doesn't run the job. Instead, if the query is valid, BigQuery returns statistics about the job such as how many bytes would be processed. If the query is invalid, an error returns. The default value is false.

    • jobTimeoutMs?: stringoptional

      Optional. Optional: Job timeout in milliseconds. If this time limit is exceeded, BigQuery will attempt to stop the query job.

    • labels?: objectoptional

      Optional. The labels associated with this query. Labels can be used to organize and group query jobs. Label keys and values can be no longer than 63 characters, can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. Label keys must start with a letter and each label in the map must have a different key.

    • projectId: stringrequired

      Required. Project that will be used for query execution and billing.

    • query: stringrequired

      Required. The query to execute in the form of a GoogleSQL query.

    • timeoutMs?: integeroptional

      Optional. Optional: Specifies the maximum amount of time, in milliseconds, that the client is willing to wait for the query to complete. By default, this limit is 20 seconds (20,000 milliseconds).

  • get_dataset_infooutputSchema declared

    Get metadata information about a BigQuery dataset or BigLake namespace.

    Input datasetId: string, projectId: string
    • datasetId: stringrequired

      Required. Dataset ID of the dataset request.

    • projectId: stringrequired

      Required. Project ID of the dataset request.

  • get_joboutputSchema declared

    Get information and status about a BigQuery job. Use this tool to check the status, statistics, or configuration of a job using its `job_id`.

    Input jobId: string, location: string, projectId: string
    • jobId: stringrequired

      Required. Job ID of the requested job.

    • location: stringrequired

      Required. The geographic location of the job.

    • projectId: stringrequired

      Required. Project ID of the requested job.

  • get_query_resultsoutputSchema declared

    Get the results of a BigQuery SQL query job. Use this tool ONLY when: 1. A previous `execute_sql` or `execute_sql_readonly` call returned `job_complete: false` with a `job_id` (poll with this tool until `job_complete: true`), OR 2. You need to paginate through additional rows using `page_token` or `start_index` for a previously completed job. Do NOT call this tool if the query already returned `job_complete: true` with all rows. Supports pagination. Use `max_results` to limit results and `page_token` to retrieve the next page of results.

    Input jobId: string, location: string, maxResults?: integer, pageToken?: string, projectId: string, startIndex?: string, timeoutMs?: integer
    • jobId: stringrequired

      Required. Job ID of the query job.

    • location: stringrequired

      Required. The geographic location of the job.

    • maxResults?: integeroptional

      Optional. Maximum number of results to read.

    • pageToken?: stringoptional

      Optional. Page token, returned by a previous call, to request the next page of results.

    • projectId: stringrequired

      Required. Project ID of the query job.

    • startIndex?: stringoptional

      Optional. Zero-based index of the starting row.

    • timeoutMs?: integeroptional

      Optional. Specifies the maximum amount of time, in milliseconds, that the client is willing to wait for the query to complete.

  • get_table_infooutputSchema declared

    Get metadata information about a BigQuery table or BigLake table.

    Input datasetId: string, projectId: string, tableId: string
    • datasetId: stringrequired

      Required. Dataset ID of the table request.

    • projectId: stringrequired

      Required. Project ID of the table request.

    • tableId: stringrequired

      Required. Table ID of the table request.

  • list_dataset_idsoutputSchema declared

    List BigQuery dataset IDs and BigLake namespaces in a Google Cloud project. Supports pagination. Use `page_size` to limit results and `page_token` to retrieve next page.

    Input pageSize?: integer, pageToken?: string, projectId: string
    • pageSize?: integeroptional

      Optional. The maximum number of results to return in a single response page. If unset, the default page size of 5000 is used.

    • pageToken?: stringoptional

      Optional. Page token, returned by a previous call, to request the next page of results.

    • projectId: stringrequired

      Required. Project ID of the dataset request.

  • list_table_idsoutputSchema declared

    List table ids in a BigQuery dataset or BigLake namespace. Supports pagination. Use `page_size` to limit results and `page_token` to retrieve next page.

    Input datasetId: string, pageSize?: integer, pageToken?: string, projectId: string
    • datasetId: stringrequired

      Required. Dataset ID of the table request.

    • pageSize?: integeroptional

      Optional. The maximum number of results to return in a single response page. If unset, the default page size of 5000 is used.

    • pageToken?: stringoptional

      Optional. Page token, returned by a previous call, to request the next page of results.

    • projectId: stringrequired

      Required. Project ID of the table request.