Google Cloud Monitoring MCP server

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

Retrieves Cloud Monitoring time series, PromQL query results, alerting policies, and dashboards. 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://monitoring.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/

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 Observability 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://monitoring.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 Cloud Monitoring MCP server to my MCP client configuration and verify that it works.

What it is: Retrieves Cloud Monitoring time series, PromQL query results, alerting policies, and dashboards. Requires Google Cloud credentials through OAuth.
Server URL: https://monitoring.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): get_alert, get_alert_policy, get_dashboard, list_alert_policies, list_alerts, list_dashboards, list_metric_descriptors, list_timeseries, query_range.
Reference: https://mcptest.io/servers/google-cloud-monitoring/

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-cloud-monitoring" in that client's MCP configuration, user scope unless I ask otherwise.
   Claude Code: claude mcp add --transport http --scope user 'google-cloud-monitoring' 'https://monitoring.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-cloud-monitoring' 'https://monitoring.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-cloud-monitoring' --url 'https://monitoring.googleapis.com/mcp'
codex mcp login 'google-cloud-monitoring'

Cursor setup

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

{
  "mcpServers": {
    "google-cloud-monitoring": {
      "url": "https://monitoring.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-cloud-monitoring": {
      "type": "http",
      "url": "https://monitoring.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/monitoring/docs/use-monitoring-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

  • Sentry — Remote MCP server for searching, querying, and debugging Sentry issues and application errors. OAuth 2.1
  • PagerDuty — PagerDuty's hosted MCP server provides incident, service, schedule, escalation, and on-call operations. OAuth 2.1
  • Cloudflare Observability — Queries Workers logs and analytics to debug Cloudflare Workers applications. Requires Cloudflare OAuth. OAuth 2.1
  • Cloudflare Radar — Explores Cloudflare Radar internet insights such as global traffic trends. Requires Cloudflare OAuth. OAuth 2.1
  • Cloudflare GraphQL — Explores the Cloudflare GraphQL Analytics API schema and runs analytics queries against an account's zones and Workers. Requires Cloudflare OAuth. OAuth 2.1
  • Axiom — Queries Axiom event datasets with APL, explores datasets and metrics, and manages dashboards, monitors, and notifiers. Requires Axiom OAuth. OAuth 2.1

Guides for this server

Watch this server for breaking changes

Share and embed

Maintain Google Cloud Monitoring? 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://monitoring.googleapis.com/mcp; detected transport streamable-http; authentication oauth

Tool inventory

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

Tools provided by Google Cloud Monitoring 9

Some details were sanitized for public display.

  • get_alertoutputSchema declared

    Use this as the primary tool to get information about a specific alert. An alert is the representation of a violation of an alert policy. This is useful for understanding the details of a specific alert.

    Input name: string
    • name: stringrequired

      Required. The name of the alert. The format is: projects/[PROJECT_ID_OR_NUMBER]/alerts/[ALERT_ID] The `[ALERT_ID]` is a system-assigned unique identifier for the alert.

  • get_alert_policyoutputSchema declared

    Use this as the primary tool to get information about a specific alerting policy. Alerting policies define the conditions under which you want to be notified about issues with your services. This is useful for understanding the details of a specific alert configuration.

    Input name: string
    • name: stringrequired

      Required. The alerting policy to retrieve. The format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID]

  • get_dashboardoutputSchema declared

    Use this as the primary tool to retrieve a single specific custom monitoring dashboard from a Google Cloud project using the resource name of the requested dashboard. Custom monitoring dashboards let users view and analyze data from different sources in the same context. This is often used as a follow on to list_dashboards to get full details on a specific dashboard.

    Input name: string
    • name: stringrequired

      Required. The resource name of the Dashboard. The format is one of: - `dashboards/[DASHBOARD_ID]` (for system dashboards) - `projects/[PROJECT_ID_OR_NUMBER]/dashboards/[DASHBOARD_ID]` (for custom dashboards).

  • list_alert_policiesoutputSchema declared

    Use this as the primary tool to list the alerting policies in a Google Cloud project. Alerting policies define the conditions under which you want to be notified about issues with your services. This is useful for understanding what alerts are currently configured.

    Input filter?: string, name: string, orderBy?: string, pageSize?: integer, pageToken?: string
    • filter?: stringoptional

      Optional. If provided, this field specifies the criteria that must be met by alert policies to be included in the response. For more details, see [sorting and filtering]([REDACTED URI]

    • name: stringrequired

      Required. The [project]([REDACTED URI] whose alert policies are to be listed. The format is: projects/[PROJECT_ID_OR_NUMBER] Note that this field names the parent container in which the alerting policies to be listed are stored. To retrieve a single alerting policy by name, use the GetAlertPolicy operation, instead.

    • orderBy?: stringoptional

      Optional. A comma-separated list of fields by which to sort the result. Supports the same set of field references as the `filter` field. Entries can be prefixed with a minus sign to sort by the field in descending order. For more details, see [sorting and filtering]([REDACTED URI]

    • pageSize?: integeroptional

      Optional. The maximum number of results to return in a single response.

    • pageToken?: stringoptional

      Optional. If this field is not empty then it must contain the `nextPageToken` value returned by a previous call to this method. Using this field causes the method to return more results from the previous method call.

  • list_alertsoutputSchema declared

    Use this as the primary tool to list the alerts in a Google Cloud project. An alert is the representation of a violation of an alert policy. This is useful for understanding current and past violations of an alert policy.

    Input filter?: string, orderBy?: string, pageSize?: integer, pageToken?: string, parent: string
    • filter?: stringoptional

      Optional. An alert is returned if there is a match on any fields belonging to the alert or its subfields.

    • orderBy?: stringoptional

      Optional. A comma-separated list of fields in `Alert` to use for sorting. The default sort direction is ascending. To specify descending order for a field, add a `desc` modifier. The following fields are supported: * `open_time` * `close_time` For example, `close_time desc, open_time` will return the alerts closed most recently, with ties broken in the order of older alerts listed first. If the field is not set, the results are sorted by `open_time desc`.

    • pageSize?: integeroptional

      Optional. The maximum number of results to return in a single response. If not set to a positive number, at most 50 alerts will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.

    • pageToken?: stringoptional

      Optional. If non-empty, `page_token` must contain a value returned as the `next_page_token` in a previous response to request the next set of results.

    • parent: stringrequired

      Required. The name of the project to list alerts for.

  • list_dashboardsoutputSchema declared

    Use this as the primary tool to retrieve a list of existing custom monitoring dashboards in a Google Cloud project. Custom monitoring dashboards let users view and analyze data from different sources in the same context. This is useful for understanding what custom dashboards are currently configured and available in a given project.

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

      A positive number that is the maximum number of results to return. If unspecified, a default of 1000 is used.

    • pageToken?: stringoptional

      Optional. If this field is not empty then it must contain the `nextPageToken` value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.

    • parent: stringrequired

      Required. The scope of the dashboards to list. The format is: projects/[PROJECT_ID_OR_NUMBER]

  • list_metric_descriptorsoutputSchema declared

    Use this as the primary tool to discover the types of metrics available in a Google Cloud project. This is a good first step to understanding what data is available for monitoring and building dashboards or alerts.

    Input activeOnly?: boolean, filter?: string, name: string, pageSize?: integer, pageToken?: string
    • activeOnly?: booleanoptional

      Optional. If true, only metrics and monitored resource types that have recent data (within roughly 25 hours) will be included in the response. - If a metric descriptor enumerates monitored resource types, only the monitored resource types for which the metric type has recent data will be included in the returned metric descriptor, and if none of them have recent data, the metric descriptor will not be returned. - If a metric descriptor does not enumerate the compatible monitored resource types, it will be returned only if the metric type has recent data for some monitored resource type. The re

    • filter?: stringoptional

      Optional. If this field is empty, all custom and system-defined metric descriptors are returned. Otherwise, the [filter]([REDACTED URI] specifies which metric descriptors are to be returned. For example, the following filter matches all [custom metrics]([REDACTED URI] metric.type = starts_with("custom.googleapis.com/")

    • name: stringrequired

      Required. The [project]([REDACTED URI] on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER]

    • pageSize?: integeroptional

      Optional. A positive number that is the maximum number of results to return. The default and maximum value is 10,000. If a page_size <= 0 or > 10,000 is submitted, will instead return a maximum of 10,000 results.

    • pageToken?: stringoptional

      Optional. If this field is not empty then it must contain the `nextPageToken` value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.

  • list_timeseriesoutputSchema declared

    Lists time series data from the Google Cloud Monitoring API

    Input aggregation?: any, filter: string, interval: any, name: string, orderBy?: string, pageSize?: integer, pageToken?: string, secondaryAggregation?: any, view: string
    • aggregation?: anyoptional

      Specifies the alignment of data points in individual time series as well as how to combine the retrieved time series across specified labels. By default (if no `aggregation` is explicitly specified), the raw time series data is returned.

    • filter: stringrequired

      Required. A [monitoring filter]([REDACTED URI] that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example: metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND metric.labels.instance_name = "my-instance-name"

    • interval: anyrequired

      Required. The time interval for which results should be returned. Only time series that contain data points in the specified interval are included in the response.

    • name: stringrequired

      Required. The [project]([REDACTED URI] organization or folder on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER] organizations/[ORGANIZATION_ID] folders/[FOLDER_ID]

    • orderBy?: stringoptional

      Unsupported: must be left blank. The points in each time series are currently returned in reverse time order (most recent to oldest).

    • pageSize?: integeroptional

      A positive number that is the maximum number of results to return. If `page_size` is empty or more than 100,000 results, the effective `page_size` is 100,000 results. If `view` is set to `FULL`, this is the maximum number of `Points` returned. If `view` is set to `HEADERS`, this is the maximum number of `TimeSeries` returned.

    • pageToken?: stringoptional

      If this field is not empty then it must contain the `nextPageToken` value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.

    • secondaryAggregation?: anyoptional

      Apply a second aggregation after `aggregation` is applied. May only be specified if `aggregation` is specified.

    • view: stringrequired

      Required. Specifies which information is returned about the time series.

  • query_rangeoutputSchema declared

    Evaluate a PromQL query in a range of time

    Input end?: string, location?: string, name: string, query?: string, start?: string, step?: string, timeout?: string
    • end?: stringoptional

      The end time to evaluate the query for. Either floating point UNIX seconds or RFC3339 formatted timestamp.

    • location?: stringoptional

      Location of the resource information. Has to be "global" now.

    • name: stringrequired

      Required. The project on which to execute the request. Data associcated with the project's workspace stored under the The format is: projects/[PROJECT_ID_OR_NUMBER]. Open source API but used as a request path prefix to distinguish different virtual Prometheus instances of Google Prometheus Engine.

    • query?: stringoptional

      A PromQL query string. Query language documentation: [REDACTED URI]

    • start?: stringoptional

      The start time to evaluate the query for. Either floating point UNIX seconds or RFC3339 formatted timestamp.

    • step?: stringoptional

      The resolution of query result. Either a Prometheus duration string ([REDACTED URI] or floating point seconds. This non-standard encoding must be used for compatibility with the open source API. Clients may still implement timeouts at the connection level while ignoring this field.

    • timeout?: stringoptional

      An upper bound timeout for the query. Either a Prometheus duration string ([REDACTED URI] or floating point seconds. This non-standard encoding must be used for compatibility with the open source API. Clients may still implement timeouts at the connection level while ignoring this field.