# 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.
Canonical: https://www.mcpfolio.com/servers/google-cloud-app-optimize-api
Last updated: 2026-10-28
## Catalog record

- Publisher: Google Cloud
- Categories: development, cloud-service, memory

## Website

https://docs.cloud.google.com/app-optimize/reference/mcp

## Transports

Streamable HTTP

## 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.

## Tools

- **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.
- **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.
- **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.
- **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.
- **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.
- **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.

## Sources

- [official_server_catalog](https://docs.cloud.google.com/mcp/supported-products)
- [official_setup_guide](https://docs.cloud.google.com/mcp/configure-mcp-ai-application)
- [official_authentication_guide](https://docs.cloud.google.com/mcp/authenticate-mcp)
- [official_tool_reference](https://docs.cloud.google.com/app-optimize/reference/mcp)
- [official_pricing_and_product_docs](https://docs.cloud.google.com/app-optimize/overview)

## Setup

Use the interactive setup panel on [the detail page](https://www.mcpfolio.com/servers/google-cloud-app-optimize-api) to view instructions for each supported client.