Skip to directory

About App Optimize API MCP

Google Cloud managed MCP server for App Optimize API. Exact tool names and accessible operations depend on the published server reference and configured Google Cloud permissions.

What you can use it for

  • Creates a saved, reusable cost and utilization report for Google Cloud — spend and CPU/memory usage for a project or App Hub application. This initiates an asynchronous long-running operation (LRO). Poll the operation status using get_report_operation until done: true , then read data using read_cost_report . Cost-only reports complete in under a minute; reports with utilization metrics take ~9-10 minutes (pulling from Cloud Monitoring). Scope: To query a specific project, set scopes: [{"project": "projects/{project}"}] . To query an App Hub application, set scopes: [{"application": "projects/{project}/locations/{location}/applications/{application}"}] . Do not specify both. If omitted, defaults to the parent project. Reports are deleted automatically 24 hours after creation. Required IAM on the scoped project: - roles/appoptimize.admin is required to create reports. - Role billing.resourceCosts.get (e.g. roles/cloudhub.operator , roles/reader , or roles/viewer ) if any cost metrics are requested. - Role roles/monitoring.viewer if any utilization metrics are requested. - Role roles/apphub.appManagementViewer on the host project if an App Hub scope is requested.
  • Retrieves the configuration details of an existing cost and utilization report (dimensions, metrics, filter, scope, and expire_time). Use this tool to inspect what an existing report measures and check its expiration time before reading data. Returns configuration metadata only, not actual cost data rows (use read_cost_report for data). Required IAM on the scoped project: - roles/appoptimize.viewer or roles/appoptimize.admin to get report configuration.
  • Lists all saved cost and utilization reports in the specified parent location. location is always global (aggregated listing locations/- is not supported). Supports pagination via next_page_token . An empty list is normal: reports expire and are deleted automatically 24 hours after creation. Required IAM on the scoped project: - roles/appoptimize.viewer or roles/appoptimize.admin to list reports.
  • Deletes an existing cost and utilization report configuration. This action is destructive and irreversible. Deletes only the report definition and its prepared data; underlying billing and monitoring data is unaffected. Reports also expire automatically 24 hours after creation. Required IAM on the scoped project: - roles/appoptimize.admin is required to delete reports.
  • Reads and retrieves the actual data rows of a completed cost and utilization report (spend figures and resource usage). Call this tool after the report creation operation returned by create_cost_report has finished with done: true . Row and column formatting rules: - Cost columns ( type: "RECORD" ) are formatted as google.type.Money objects with currency_code (string, e.g. "USD" ), units (int64 serialized as a JSON string), and nanos (int32 billionths, 10^-9 ), or null when no cost was recorded or applicable for that entity. - Utilization and usage/allocation metric columns ( type: "FLOAT64" ) are JSON numbers, or null when not applicable to the resource (e.g. persistent disks or snapshots). - Dimension columns ( type: "STRING" ) are JSON strings. - Returns at most 10,000 rows per page by default (25,000 maximum); paginate using next_page_token . Empty results: When a report has zero matching cost or utilization records (for example, because the project or scope has no resources, usage, or billing charges for the configured time range and filter), the rows field is omitted from the JSON response and only columns is returned. A response containing columns without rows means the report succeeded and is validly empty — it is NOT corrupt or incomplete. Inform the user that no cost or usage data was recorded for that report's configuration, and do NOT call create_cost_report to recreate or test the report. Required IAM on the scoped project: - roles/appoptimize.viewer or roles/appoptimize.admin to read report data.
  • Polls the status of an asynchronous long-running operation (LRO) returned by create_cost_report . Use the name field from the LRO to poll. Keep polling until done is true, then call read_cost_report . Duration guidance: Cost-only reports typically complete in under a minute. Reports including utilization metrics take 9-10 minutes or more because they pull from Cloud Monitoring. A long-running operation is not stuck — do not abandon it or recreate the report while polling. Required IAM on the scoped project: - roles/appoptimize.viewer or roles/appoptimize.admin to get operation status.
Connection and setup
Hosting
Google-managed remote
Transport
Streamable HTTP
Endpoint
https://appoptimize.googleapis.com/mcp
Authentication
Google Cloud authentication: OAuth 2.0 using Application Default Credentials (ADC) in supported Google clients, or a client OAuth ID/secret or bearer token in compatible third-party clients. The principal needs mcp.tools.call plus the underlying product permissions; API key authentication is only available for services that explicitly support it.

Requirements

  • A Google Cloud project and access to the target product/resource.
  • Enable this MCP service and its underlying Google Cloud API as required by the product guide.
  • An MCP client that supports Streamable HTTP.
  • An identity with the MCP Tool User role (roles/mcp.toolUser) or equivalent mcp.tools.call permission, plus permissions for the underlying product operations.

Setup steps

  1. Choose the correct global or regional endpoint for your data location; this catalog lists the documented endpoint.
  2. In the Google Cloud project, enable the MCP service and the underlying product API if the product guide requires it.
  3. Authenticate the client with Google Cloud ADC (simplest with Antigravity/Gemini CLI) or configure OAuth 2.0 credentials in a compatible client.
  4. Grant the connecting identity roles/mcp.toolUser and only the product IAM roles needed for the intended operations.
  5. Add appoptimize.googleapis.com to the client as a Streamable HTTP MCP server and complete sign-in.
  6. Refresh the client tool list and check that the tools match the product reference; availability may depend on permissions and selected toolset.
Tools 6

Official reference lists six tools for cost/utilization report creation, listing, inspection, reading, deletion and async operation polling. Report creation can take several minutes and reports expire after 24 hours. Google states no additional App Optimize charges during Preview; underlying Cloud Monitoring or other resources may have their own charges. Deleting a report is irreversible but does not delete billing/monitoring source data.

  • create_cost_report

    Creates a saved, reusable cost and utilization report for Google Cloud — spend and CPU/memory usage for a project or App Hub application. This initiates an asynchronous long-running operation (LRO). Poll the operation status using get_report_operation until done: true , then read data using read_cost_report . Cost-only reports complete in under a minute; reports with utilization metrics take ~9-10 minutes (pulling from Cloud Monitoring). Scope: To query a specific project, set scopes: [{"project": "projects/{project}"}] . To query an App Hub application, set scopes: [{"application": "projects/{project}/locations/{location}/applications/{application}"}] . Do not specify both. If omitted, defaults to the parent project. Reports are deleted automatically 24 hours after creation. Required IAM on the scoped project: - roles/appoptimize.admin is required to create reports. - Role billing.resourceCosts.get (e.g. roles/cloudhub.operator , roles/reader , or roles/viewer ) if any cost metrics are requested. - Role roles/monitoring.viewer if any utilization metrics are requested. - Role roles/apphub.appManagementViewer on the host project if an App Hub scope is requested.

    01
  • get_cost_report_config

    Retrieves the configuration details of an existing cost and utilization report (dimensions, metrics, filter, scope, and expire_time). Use this tool to inspect what an existing report measures and check its expiration time before reading data. Returns configuration metadata only, not actual cost data rows (use read_cost_report for data). Required IAM on the scoped project: - roles/appoptimize.viewer or roles/appoptimize.admin to get report configuration.

    02
  • list_cost_reports

    Lists all saved cost and utilization reports in the specified parent location. location is always global (aggregated listing locations/- is not supported). Supports pagination via next_page_token . An empty list is normal: reports expire and are deleted automatically 24 hours after creation. Required IAM on the scoped project: - roles/appoptimize.viewer or roles/appoptimize.admin to list reports.

    03
  • delete_cost_report

    Deletes an existing cost and utilization report configuration. This action is destructive and irreversible. Deletes only the report definition and its prepared data; underlying billing and monitoring data is unaffected. Reports also expire automatically 24 hours after creation. Required IAM on the scoped project: - roles/appoptimize.admin is required to delete reports.

    04
  • read_cost_report

    Reads and retrieves the actual data rows of a completed cost and utilization report (spend figures and resource usage). Call this tool after the report creation operation returned by create_cost_report has finished with done: true . Row and column formatting rules: - Cost columns ( type: "RECORD" ) are formatted as google.type.Money objects with currency_code (string, e.g. "USD" ), units (int64 serialized as a JSON string), and nanos (int32 billionths, 10^-9 ), or null when no cost was recorded or applicable for that entity. - Utilization and usage/allocation metric columns ( type: "FLOAT64" ) are JSON numbers, or null when not applicable to the resource (e.g. persistent disks or snapshots). - Dimension columns ( type: "STRING" ) are JSON strings. - Returns at most 10,000 rows per page by default (25,000 maximum); paginate using next_page_token . Empty results: When a report has zero matching cost or utilization records (for example, because the project or scope has no resources, usage, or billing charges for the configured time range and filter), the rows field is omitted from the JSON response and only columns is returned. A response containing columns without rows means the report succeeded and is validly empty — it is NOT corrupt or incomplete. Inform the user that no cost or usage data was recorded for that report's configuration, and do NOT call create_cost_report to recreate or test the report. Required IAM on the scoped project: - roles/appoptimize.viewer or roles/appoptimize.admin to read report data.

    05
  • get_report_operation

    Polls the status of an asynchronous long-running operation (LRO) returned by create_cost_report . Use the name field from the LRO to poll. Keep polling until done is true, then call read_cost_report . Duration guidance: Cost-only reports typically complete in under a minute. Reports including utilization metrics take 9-10 minutes or more because they pull from Cloud Monitoring. A long-running operation is not stuck — do not abandon it or recreate the report while polling. Required IAM on the scoped project: - roles/appoptimize.viewer or roles/appoptimize.admin to get operation status.

    06
Limitations and notes
  • Google marks this service Preview in its supported-products catalog.
Original sources
  • official server catalog

    Official Google Cloud catalog lists this product as an available remote MCP server.

  • official setup guide

    Google Cloud describes remote MCP client setup, Streamable HTTP transport, supported authentication options, and ADC setup.

  • official authentication guide

    Google documents supported identity types and authorization requirements for Google Cloud MCP calls.

  • official tool reference

    Current reference lists six exact tools, endpoint, IAM roles, async behavior, expiration and deletion semantics.

  • official pricing and product docs

    Google states App Optimize API report operations have no added cost during Preview; underlying resource services may have charges.

Documentation checked 2026-10-28. Connection has not been runtime tested.