Cloud Run MCP Server
OfficialThe Cloud Run MCP Server enables MCP-compatible AI agents to deploy and manage applications on Google Cloud Run.
Key capabilities include:
Deploy applications to Cloud Run:
Deploy local files or folders
Deploy file contents directly
Support for AI-powered IDEs, assistant apps, or agent SDKs
Manage Cloud Run services:
List services within a project and region
Retrieve service details
Access service logs and error messages
Manage Google Cloud projects:
List available GCP projects
Create new projects with optional project IDs
Flexible implementation:
Run locally with Google Cloud credentials
Host securely on Cloud Run with IAM authentication
Customize configurations for project, region, and service name
Provides tools for deploying applications to Google Cloud Run, listing services, getting service details, creating projects, and managing cloud resources. Supports both direct file content deployment and local file/folder deployment.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Cloud Run MCP Serverdeploy my app to Cloud Run"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Cloud Run MCP server and Gemini CLI extension
Enable MCP-compatible AI agents to deploy apps to Cloud Run.
"mcpServers":{
"cloud-run": {
"command": "npx",
"args": ["-y", "@google-cloud/cloud-run-mcp"]
}
}Deploy from Gemini CLI and other AI-powered CLI agents:
Deploy from AI-powered IDEs:
Deploy from AI assistant apps:
Deploy from agent SDKs, like the Google Gen AI SDK or Agent Development Kit.
This is the repository of an MCP server to deploy code to Cloud Run, to learn how to host MCP servers on Cloud Run, visit the Cloud Run documentation.
Tools
deploy-file-contents: Deploys files to Cloud Run by providing their contents directly.list-services: Lists Cloud Run services in a given project and region.get-service: Gets details for a specific Cloud Run service.get-service-log: Gets Logs and Error Messages for a specific Cloud Run service.deploy-local-folder*: Deploys a local folder to a Google Cloud Run service.list-projects*: Lists available GCP projects.create-project*: Creates a new GCP project and attach it to the first available billing account. A project ID can be optionally specified.
* only available when running locally
Related MCP server: gcloud MCP Cloud Run
Prompts
Prompts are natural language commands that can be used to perform common tasks. They are shortcuts for executing tool calls with pre-filled arguments.
deploy: Deploys the current working directory to Cloud Run. If a service name is not provided, it will use theDEFAULT_SERVICE_NAMEenvironment variable, or the name of the current working directory.logs: Gets the logs for a Cloud Run service. If a service name is not provided, it will use theDEFAULT_SERVICE_NAMEenvironment variable, or the name of the current working directory.
Environment Variables
The Cloud Run MCP server can be configured using the following environment variables:
Variable | Description |
| The default project ID to use for Cloud Run services. |
| The default region to use for Cloud Run services. |
| The default service name to use for Cloud Run services. |
| Controls whether to check for IAM permissions for a Cloud Run service. Set to |
| Prevents DNS Rebinding attacks by validating the Host header. This is disabled by default. |
| Comma-separated list of allowed Host headers (if host validation is enabled). The default value is |
Use as a Gemini CLI extension
To install this as a Gemini CLI extension, run the following command:
Install the extension:
gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcpLog in to your Google Cloud account using the command:
gcloud auth loginSet up application credentials using the command:
gcloud auth application-default login
Use in MCP Clients
Learn how to configure your MCP client
Most MCP clients require a configuration file to be created or modified to add the MCP server.
The configuration file syntax can be different across clients. Please refer to the following links for the latest expected syntax:
Once you have identified how to configure your MCP client, select one of these two options to set up the MCP server. We recommend setting up as a local MCP server using Node.js.
Set up as local MCP server
Run the Cloud Run MCP server on your local machine using local Google Cloud credentials. This is best if you are using an AI-assisted IDE (e.g. Cursor) or a desktop AI application (e.g. Claude).
Install the Google Cloud SDK and authenticate with your Google account.
Log in to your Google Cloud account using the command:
gcloud auth loginSet up application credentials using the command:
gcloud auth application-default login
Then configure the MCP server using either Node.js or Docker:
Using Node.js
Install Node.js (LTS version recommended).
Update the MCP configuration file of your MCP client with the following:
"cloud-run": { "command": "npx", "args": ["-y", "@google-cloud/cloud-run-mcp"] }[Optional] Add default configurations
"cloud-run": { "command": "npx", "args": ["-y", "@google-cloud/cloud-run-mcp"], "env": { "GOOGLE_CLOUD_PROJECT": "PROJECT_NAME", "GOOGLE_CLOUD_REGION": "PROJECT_REGION", "DEFAULT_SERVICE_NAME": "SERVICE_NAME" } }
Using Docker
See Docker's MCP catalog, or use these manual instructions:
Install Docker
Update the MCP configuration file of your MCP client with the following:
"cloud-run": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "GOOGLE_APPLICATION_CREDENTIALS", "-v", "/local-directory:/local-directory", "mcp/cloud-run-mcp:latest" ], "env": { "GOOGLE_APPLICATION_CREDENTIALS": "/Users/slim/.config/gcloud/application_default-credentials.json", "DEFAULT_SERVICE_NAME": "SERVICE_NAME" } }
Set up as remote MCP server
Do not use the remote MCP server without authentication. In the following instructions, we will use IAM authentication to secure the connection to the MCP server from your local machine. This is important to prevent unauthorized access to your Google Cloud resources.
Run the Cloud Run MCP server itself on Cloud Run with connection from your local machine authenticated via IAM. With this option, you will only be able to deploy code to the same Google Cloud project as where the MCP server is running.
Install the Google Cloud SDK and authenticate with your Google account.
Log in to your Google Cloud account using the command:
gcloud auth loginSet your Google Cloud project ID using the command:
gcloud config set project YOUR_PROJECT_IDDeploy the Cloud Run MCP server to Cloud Run:
gcloud run deploy cloud-run-mcp --image us-docker.pkg.dev/cloudrun/container/mcp --no-allow-unauthenticatedWhen prompted, pick a region, for example
europe-west1.Note that the MCP server is not publicly accessible, it requires authentication via IAM.
[Optional] Add default configurations
gcloud run services update cloud-run-mcp --region=REGION --update-env-vars GOOGLE_CLOUD_PROJECT=PROJECT_NAME,GOOGLE_CLOUD_REGION=PROJECT_REGION,DEFAULT_SERVICE_NAME=SERVICE_NAME,SKIP_IAM_CHECK=falseRun a Cloud Run proxy on your local machine to connect securely using your identity to the remote MCP server running on Cloud Run:
gcloud run services proxy cloud-run-mcp --port=3000 --region=REGION --project=PROJECT_IDThis will create a local proxy on port 3000 that forwards requests to the remote MCP server and injects your identity.
Update the MCP configuration file of your MCP client with the following:
"cloud-run": { "url": "http://localhost:3000/sse" }If your MCP client does not support the
urlattribute, you can use mcp-remote:"cloud-run": { "command": "npx", "args": ["-y", "mcp-remote", "http://localhost:3000/sse"] }
Using MCP Server with OAuth
Cloud Run MCP server supports OAuth as an authentication mechanism. In order to use OAuth, create the OAuth client, and configure a .env file with the appropriate values pertaining to your OAuth client. A .env.example is provided for reference.
The Cloud Run MCP server works seamlessly with Google Cloud SDK OAuth client. In order to leverage the Google Cloud SDK OAuth client, you can use the .env.gcloud-sdk-oauth file as your .env file as follows:
cp .env.gcloud-sdk-oauth .env
node mcp-server.jsConfigure MCP Server on Gemini CLI to use OAuth
When the Cloud Run MCP server is started in the OAuth mode, the MCP client should also be configured to use OAuth. You can setup the MCP server in OAuth mode in the Gemini CLI by using the following JSON in the ~/.gemini/settings.json file:
{
"mcpServers": {
"cloud-run": {
"httpUrl": "http://localhost:3000/mcp",
"oauth": {
"enabled": true,
"clientId": "<OAUTH_CLIENT_ID>",
"clientSecret": "<OAUTH_CLIENT_SECRET>"
}
}
}
}Post the configuration changes as shown above, start the Gemini CLI. You should authenticate the Cloud Run MCP server using the following prompt in the Gemini CLI:
/mcp auth cloud-runThis will take you to the authentication page on your browser, wherein you need to sign in using the appropriate gmail id, and accept the terms and conditions. Once the authentication is succcessful, you can come back to the Gemini CLI, and the Cloud Run MCP server will be ready to use.
The Google Cloud Platform Terms of Service (available at https://cloud.google.com/terms/) and the Data Processing and Security Terms (available at https://cloud.google.com/terms/data-processing-terms) do not apply to any component of the Cloud Run MCP Server software.
Cloud Run Skills
We introduce Cloud Run skills to enable AI agents to perform actions on Cloud Run. You can use these skills with Gemini CLI and other agentic AI tools. The skills are available at Cloud Run Skills.
The Cloud Run skills are based on top of gcloud cli for Cloud Run empowering agents to perform all the actions on the Cloud Run using gcloud, as can be performed by the GCP user using gcloud cli.
In order to use Cloud Run skills:
Ensure you have the
gcloudCLI installed and authenticated withgcloud auth loginandgcloud auth application-default login.Set your project with
gcloud config set project [PROJECT_ID].Enable the skills on your agentic AI tool. For example, you can enable the skills for Gemini CLI using the following command on your terminal:
gemini skills install https://github.com/GoogleCloudPlatform/cloud-run-mcp.git --path skills/cloud-runOnce the skills are enabled, you can use them to perform actions on Cloud Run. Here are some of the prompts for you to get started:
List the Cloud Run services in the project test-gcp-project in the region us-west1.
Deploy the folder /home/username/workspace/hello-world as Cloud Run service hello-world to the project test-gcp-project in the region us-west1.
Describe the Cloud Run job hello-job in the project test-gcp-project in the region europe-west1.
Available Tools
8 toolscreate_projectA
Creates a new GCP project and attempts to attach it to the first available billing account. A project ID can be optionally specified; otherwise it will be automatically generated.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | No | Optional. The desired ID for the new GCP project. If not provided, an ID will be auto-generated. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose the 'attempts to attach' behavior, which implies possible failure, and explains auto-generation of project ID. However, it does not mention required permissions, potential side effects, or what happens if no billing account is available. It adds some value beyond just 'create', but remains incomplete for a mutation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no filler. It front-loads the primary action and includes the most important behavioral caveat (billing attach attempt) early. Every sentence serves a purpose, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and no output schema, so the description is reasonably complete. However, it lacks a note about the return value or result of the operation (e.g., what the agent should expect back), and does not mention asynchronous behavior or potential errors. This is a minor but relevant gap for an agent invoking a creation action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter is already well-documented. The description reinforces the fact that projectId is optional and that auto-generation occurs, but adds no new semantic meaning beyond the schema. Baseline of 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Creates') and resource ('GCP project'), and adds a key behavioral detail (attaching to first available billing account). This differentiates it from sibling tools like list_projects and deploy_local_files, which are clearly read or deployment operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It does not mention exclusions or conditions that would select another tool. While the action is self-evident given the siblings, there is no explicit routing or contextual instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_file_contentsA
Deploy files to Cloud Run by providing their contents directly. Takes an array of file objects containing filename and content. Use this tool if the files only exist in the current chat context.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | Array of file objects containing filename and content | |
| project | Yes | Google Cloud project ID. Leave unset for the app to be deployed in a new project. If provided, make sure the user confirms the project ID they want to deploy to. | |
| region | No | Region to deploy the service to | europe-west1 |
| service | No | Name of the Cloud Run service to deploy to | app |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It states the action (deploy files) but does not disclose side effects such as creating or updating a Cloud Run service, potential overwrites, or whether the operation is async or sync. For a mutation tool that deploys services, this lack of effect disclosure is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero fluff. The opening sentence states the core action and method, and the second sentence gives the explicit usage condition. Everything in the description is essential and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deployment tool with 4 parameters and no output schema, the description covers the selection criteria but misses execution details like expected behavior, return values, or error handling. The schema covers parameter definitions, but the operational context (e.g., deployment progress, confirmation requirements for project ID) is absent, making the tool only partially complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description only repeats the main concept ('array of file objects containing filename and content'), which adds no new meaning beyond the schema. It does not clarify parameter relationships, defaults, or the meaning of 'project' being optional, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Deploy'), names the resource ('files to Cloud Run'), and specifies the method ('by providing their contents directly'). It also distinguishes from siblings by noting the condition 'if the files only exist in the current chat context', which sets it apart from deploy_local_files and deploy_local_folder.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'Use this tool if the files only exist in the current chat context.' This gives a clear selection criterion, though it does not name the alternative tools explicitly. The implicit contrast with local deployment tools is present but not spelled out as a formal 'when-not-to-use' statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_local_filesB
Deploy local files to Cloud Run. Takes an array of absolute file paths from the local filesystem that will be deployed. Use this tool if the files exists on the user local filesystem.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | Array of absolute file paths to deploy (e.g. ["/home/user/project/src/index.js", "/home/user/project/package.json"]) | |
| project | Yes | Google Cloud project ID. Do not select it yourself, make sure the user provides or confirms the project ID. | |
| region | No | Region to deploy the service to | europe-west1 |
| service | No | Name of the Cloud Run service to deploy to | app |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full behavioral disclosure burden. It only states that it deploys files, implying a mutation operation, but says nothing about side effects, required permissions, authentication, whether an existing Cloud Run service is updated or a new one created, or what happens on failure. For a deployment tool with significant side effects, this is a major gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with minimal waste. The core action and usage condition are front-loaded. The minor grammar error ('exists' instead of 'exist') is negligible. It earns a 4 for being concise and to the point, though it could have added behavioral context without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deployment tool with no annotations and no output schema, the description is severely incomplete. It fails to explain deployment behavior, what the result will be, whether it is destructive, or any prerequisites (e.g., gcloud auth, project existence). The high schema coverage partially compensates for parameter details, but the overall operation context is missing, making it inadequate for reliable agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – every parameter has a description, including the guidance on 'project' to have the user confirm it. The description adds no additional meaning beyond what the schema already provides; it merely restates 'absolute file paths' which is already in the schema. Baseline 3 is correct since the schema handles the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Deploy local files to Cloud Run') and the resource (local filesystem files as an array of absolute paths). It distinguishes from likely siblings like deploy_file_contents and deploy_local_folder by the 'local files' phrasing, though it does not explicitly name alternatives. This is clear but lacks explicit sibling differentiation that would merit a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit condition: 'Use this tool if the files exists on the user local filesystem.' This tells the agent when to choose this tool over deploy_file_contents (which likely handles in-memory content) or deploy_local_folder. However, it does not state when not to use it or mention the other deploy tools as explicit alternatives, so a 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_local_folderA
Deploy a local folder to Cloud Run. Takes an absolute folder path from the local filesystem that will be deployed. Use this tool if the entire folder content needs to be deployed.
| Name | Required | Description | Default |
|---|---|---|---|
| folderPath | Yes | Absolute path to the folder to deploy (e.g. "/home/user/project/src") | |
| project | Yes | Google Cloud project ID. Do not select it yourself, make sure the user provides or confirms the project ID. | |
| region | No | Region to deploy the service to | europe-west1 |
| service | No | Name of the Cloud Run service to deploy to | app |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. The description only states the action and the input path; it does not disclose whether the deployment overwrites an existing service, requires special permissions, or has any side effects. For a deployment action, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise—two sentences—with the primary purpose stated first and the usage condition appended. There is no redundant or filler content; every sentence contributes to understanding the tool's purpose and when to use it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a deployment tool with no output schema and no annotations. The description only covers purpose and a usage tip, but omits crucial context such as what happens after deployment, how to verify success, whether the service gets replaced, or any required prerequisites. Given the complexity of deploying to Cloud Run, the description is critically incomplete for an agent to execute safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for all four parameters (100% coverage), so the schema carries the burden. The tool description adds no parameter-specific meaning beyond the schema. The baseline of 3 is appropriate, as the schema already defines each parameter's purpose and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: deploy a local folder to Cloud Run. It names a specific verb and resource, and the addition of 'Use this tool if the entire folder content needs to be deployed' distinguishes it from sibling tools like deploy_local_files and deploy_file_contents, which handle different deployment scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear condition for when to use the tool: when deploying the entire folder content. It implies that for partial deployments, alternative tools should be used, though it does not explicitly name those alternatives. The schema also includes a guidance note on the project parameter (user confirmation), which adds to usage clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_serviceB
Gets details for a specific Cloud Run service.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | Google Cloud project ID containing the service | |
| region | No | Region where the service is located | europe-west1 |
| service | Yes | Name of the Cloud Run service |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states 'gets details,' which implies a read operation, but it does not disclose potential error behaviors (e.g., not-found handling), required IAM permissions, rate limits, or what specific details are returned. For a tool without annotations, this is a minimal disclosure that leaves significant behavioral aspects unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and resource, with zero filler. It is efficiently structured and immediately understandable, achieving maximum conciseness without sacrificing necessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple read tool with no output schema and no annotations. The description offers only the bare minimum. Given the lack of annotations, the description should clarify what details are returned, potential failure cases, or any special handling. Without this, an agent cannot fully anticipate the tool's behavior, making the description incomplete for a tool with no other structured context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a description in the schema. The tool description adds no additional meaning beyond what the schema already provides. Thus, the baseline of 3 applies, as the schema adequately documents all parameters and the description does not compensate or enrich them further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('gets') and a well-defined resource ('details for a specific Cloud Run service'). The word 'specific' distinguishes it from list_services, which presumably lists all services. This is a precise, non-tautological statement that unambiguously identifies the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings (e.g., list_services for enumeration, get_service_log for logs). There is no mention of alternatives or prerequisites. The usage context is only implied by the generic 'gets details' phrasing, leaving the agent to infer when this should be chosen over other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_logB
Gets Logs and Error Messages for a specific Cloud Run service.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | Google Cloud project ID containing the service | |
| region | No | Region where the service is located | europe-west1 |
| service | Yes | Name of the Cloud Run service |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the burden of behavioral disclosure. 'Gets' implies a read-only operation, but the description doesn't mention permissions, pagination, or the nature of the returned logs. It provides only the basic action without additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written sentence with no filler. The action verb and object are front-loaded, making it easy to parse at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description leaves out what the returned logs will include (structure, size, ordering). For a simple tool this is acceptable, but an agent would benefit from knowing the response format or any constraints (e.g., time range) to fully anticipate the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter (project, service, region) already described at the schema level. The tool description adds no further parameter semantics, so the baseline of 3 applies given the schema's adequacy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Gets') and a distinct resource ('Logs and Error Messages for a specific Cloud Run service'). It clearly implies this is for a single service, which differentiates it from list-style siblings, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to choose this tool over siblings like get_service or list_services. It merely states what it does, leaving the agent to infer the appropriate context without any exclusionary or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsB
Lists available GCP projects
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It doesn't disclose whether this is a read-only operation, what authentication is required, if there are rate limits, or how results are formatted (e.g., pagination, filtering). The description is too basic for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and multiple siblings, the description is insufficient. It lacks details on return format, error conditions, authentication needs, or how it differs from 'list_services'. Given the complexity implied by GCP projects and sibling tools, more context is needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description appropriately doesn't mention parameters, aligning with the empty input schema. A baseline of 4 is justified since there's nothing to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Lists') and resource ('available GCP projects'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_services' or explain what 'available' means in this context, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'get_service' or 'create_project'. The description doesn't mention prerequisites, permissions needed, or typical use cases, leaving the agent with minimal context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesB
Lists Cloud Run services in a given project and region.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | Google Cloud project ID | |
| region | No | Region where the services are located | europe-west1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Lists' implies a read-only operation, but the description does not explicitly state that it is safe/non-destructive, nor does it disclose what it returns (e.g., list of service names vs. full objects), pagination behavior, or error cases. This is a significant gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no waste. It is front-loaded with the verb and resource, and includes both parameter scopes. This is appropriately concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with two fully described parameters and no output schema, the description is adequate in stating the primary function. However, it lacks details on the return format (what fields are included) and any caveats (e.g., pagination, absence of results). The agent can infer a list is returned, but not the structure. This is acceptable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'project' and 'region' having descriptions. The tool description adds no parameter information beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Lists') and a specific resource ('Cloud Run services in a given project and region'). This clearly distinguishes it from get_service (singular) and from deployment-related siblings. The scope (project and region) is explicitly mentioned, matching the parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention that get_service retrieves a single service or that listing is for multiple services. There is no explicit context, exclusions, or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v1.0.0- First observed
create_project - First observed
deploy_file_contents - First observed
deploy_local_files - First observed
deploy_local_folder - First observed
get_service - First observed
get_service_log - First observed
list_projects - First observed
list_services
TDQS
Scored across 8 tools
Most tools have distinct purposes, but the three deployment tools (deploy_file_contents, deploy_local_files, deploy_local_folder) could cause confusion as they all handle deployment with subtle differences in input source. The other tools (create_project, get_service, get_service_log, list_projects, list_services) are clearly differentiated by their target resources and actions.
All tool names follow a consistent verb_noun pattern with snake_case, such as create_project, deploy_file_contents, get_service, and list_services. There are no deviations in naming conventions, making the set predictable and easy to parse.
With 8 tools, the server is well-scoped for managing Cloud Run deployments and related GCP projects. The count is reasonable, covering core operations like deployment, service management, and project handling without being overwhelming or insufficient.
The tool set covers key workflows for Cloud Run, including deployment, service retrieval, logging, and project management. Minor gaps exist, such as missing update or delete operations for services or projects, but agents can likely work around these with the provided tools for basic deployment and monitoring tasks.
Maintenance
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Build, validate, deploy — HTTP APIs, cron jobs, webhooks and MCP tools — from your AI client.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with and manage Google Cloud Platform resources including Compute Engine, Cloud Run, Storage, BigQuery, and other GCP services through a standardized MCP interface.16MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Google Cloud Platform services through gcloud CLI commands via a Cloud Run deployed MCP server. Supports executing gcloud commands and managing GCP resources through natural language.MIT
- AlicenseBqualityNot gradedmaintenanceEnables AI assistants to interact with and manage Google Cloud Platform resources including Artifact Registry, BigQuery, Cloud Build, Compute Engine, Cloud Run, Cloud Storage, and monitoring services through a standardized MCP interface.1MIT
- AlicenseNot gradedqualityCmaintenanceGrok plugin for deploying and managing Google Cloud Run services via MCP tools, slash commands, and a skill.Apache 2.0