cloud-run
Google Cloud Run에 코드를 배포하는 MCP 서버
MCP 호환 AI 에이전트가 Cloud Run에 앱을 배포할 수 있게 합니다.
"mcpServers":{
"cloud-run": {
"command": "npx",
"args": ["-y", "https://github.com/GoogleCloudPlatform/cloud-run-mcp"]
}
}AI 기반 IDE에서 배포:
AI 어시스턴트 앱에서 배포:
Google Gen AI SDK 또는 Agent Development Kit 같은 에이전트 SDK에서 배포할 수 있습니다.
[!NOTE]
이 저장소는 Cloud Run에 코드를 배포하는 MCP 서버에 대한 것입니다. Cloud Run에서 MCP 서버를 호스팅하는 방법을 알아보려면 Cloud Run 문서를 방문하세요.
도구
deploy-file-contents: 파일 내용을 직접 제공하여 Cloud Run에 파일을 배포합니다.list-services: 주어진 프로젝트 및 리전의 Cloud Run 서비스를 나열합니다.get-service: 특정 Cloud Run 서비스의 세부 정보를 가져옵니다.get-service-log: 특정 Cloud Run 서비스의 로그 및 오류 메시지를 가져옵니다.deploy-local-files*: 로컬 파일 시스템의 파일을 Google Cloud Run 서비스에 배포합니다.deploy-local-folder*: 로컬 폴더를 Google Cloud Run 서비스에 배포합니다.list-projects*: 사용 가능한 GCP 프로젝트를 나열합니다.create-project*: 새 GCP 프로젝트를 만들고 사용 가능한 첫 번째 결제 계정에 연결합니다. 프로젝트 ID를 선택적으로 지정할 수 있습니다.
* 로컬에서 실행할 때만 사용 가능
Related MCP server: Cloud Run MCP Server
로컬 MCP 서버로 사용
로컬 Google Cloud 자격 증명을 사용하여 로컬 머신에서 Cloud Run MCP 서버를 실행합니다. 이 방법은 AI 지원 IDE(예: Cursor) 또는 데스크톱 AI 애플리케이션(예: Claude)을 사용하는 경우에 가장 적합합니다.
Node.js를 설치합니다(LTS 버전 권장).
Google Cloud SDK를 설치하고 Google 계정으로 인증합니다.
다음 명령어로 Google Cloud 계정에 로그인합니다.
gcloud auth login다음 명령어로 애플리케이션 자격 증명을 설정합니다.
gcloud auth application-default loginMCP 클라이언트의 MCP 구성 파일을 다음과 같이 업데이트합니다.
"cloud-run": { "command": "npx", "args": ["-y", "https://github.com/GoogleCloudPlatform/cloud-run-mcp"] }
원격 MCP 서버로 사용
[!WARNING]
인증 없이 원격 MCP 서버를 사용하지 마세요. 다음 지침에서는 IAM 인증을 사용하여 로컬 머신에서 MCP 서버로의 연결을 보호합니다. 이는 Google Cloud 리소스에 대한 무단 액세스를 방지하는 데 중요합니다.
Cloud Run MCP 서버 자체를 Cloud Run에서 실행하고, 로컬 머신의 연결은 IAM을 통해 인증합니다. 이 옵션을 사용하면 MCP 서버가 실행 중인 것과 동일한 Google Cloud 프로젝트에만 코드를 배포할 수 있습니다.
Google Cloud SDK를 설치하고 Google 계정으로 인증합니다.
다음 명령어로 Google Cloud 계정에 로그인합니다.
gcloud auth login다음 명령어로 Google Cloud 프로젝트 ID를 설정합니다.
gcloud config set project YOUR_PROJECT_IDCloud Run MCP 서버를 Cloud Run에 배포합니다.
gcloud run deploy cloud-run-mcp --image us-docker.pkg.dev/cloudrun/container/mcp --no-allow-unauthenticated메시지가 표시되면 예를 들어
europe-west1과 같은 리전을 선택합니다.MCP 서버는 공개적으로 액세스할 수 없으며 IAM을 통한 인증이 필요합니다.
Cloud Run에서 실행 중인 원격 MCP 서버에 사용자 ID를 사용하여 안전하게 연결하려면 로컬 머신에서 Cloud Run 프록시를 실행합니다.
gcloud run services proxy cloud-run-mcp --port=3000 --region=REGION --project=PROJECT_ID이렇게 하면 포트 3000에 로컬 프록시가 생성되어 원격 MCP 서버로 요청을 전달하고 사용자 ID를 주입합니다.
MCP 클라이언트의 MCP 구성 파일을 다음과 같이 업데이트합니다.
"cloud-run": { "url": "http://localhost:3000/sse" }MCP 클라이언트가
url속성을 지원하지 않는 경우 mcp-remote를 사용할 수 있습니다."cloud-run": { "command": "npx", "args": ["-y", "mcp-remote", "http://localhost:3000/sse"] }
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 | |
| region | No | Region to deploy the service to | europe-west1 |
| 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. | |
| 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"]) | |
| region | No | Region to deploy the service to | europe-west1 |
| project | Yes | Google Cloud project ID. Do not select it yourself, make sure the user provides or confirms the project ID. | |
| 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 |
|---|---|---|---|
| region | No | Region to deploy the service to | europe-west1 |
| project | Yes | Google Cloud project ID. Do not select it yourself, make sure the user provides or confirms the project ID. | |
| service | No | Name of the Cloud Run service to deploy to | app |
| folderPath | Yes | Absolute path to the folder to deploy (e.g. "/home/user/project/src") |
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 |
|---|---|---|---|
| region | No | Region where the service is located | europe-west1 |
| project | Yes | Google Cloud project ID containing the service | |
| 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 |
|---|---|---|---|
| region | No | Region where the service is located | europe-west1 |
| project | Yes | Google Cloud project ID containing the service | |
| 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, the description bears full burden. It implies a read-only operation via 'Lists', but does not disclose pagination, output format, filtering, or any side effects. Minimal value added beyond the name.
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?
Single sentence, no filler, and the action is front-loaded. It is concise without being verbose, though it could incorporate more context without losing efficiency.
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?
Given the tool's low complexity, the description provides a fundamental understanding of what it does, but it lacks details about the output structure (e.g., project names/IDs) or any usage notes. With no output schema or annotations, this is a marginal pass.
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?
Zero parameters make schema coverage trivially 100%. Baseline for 0 params is 4; description adds no parameter information, but none is needed, so the baseline stands.
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?
Verb 'Lists' and resource 'available GCP projects' are clear and unambiguous. It does not explicitly differentiate from sibling tools like list_services, but the resource type is specific enough for most agents. Minor deduction for lacking explicit sibling distinction.
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 on when to use this tool versus alternatives. The description does not mention any context, prerequisites, or scenarios, leaving the agent to infer its placement among list_services and other siblings.
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 |
|---|---|---|---|
| region | No | Region where the services are located | europe-west1 |
| project | Yes | Google Cloud project ID |
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
Each tool has a clearly distinct purpose: listing vs creating projects, listing vs getting services, fetching logs, and three deployment methods differentiated by file source (local files, folder, or content). The deployment tools include explicit 'use this tool if' guidance to remove any ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case: list_projects, create_project, list_services, get_service, get_service_log, deploy_local_files, deploy_local_folder, deploy_file_contents. The pattern is uniform and predictable.
8 tools is well-scoped for a Cloud Run management server, covering project, service, log, and deployment operations without unnecessary redundancy. Each tool serves a distinct purpose within a reasonable count.
The tool set covers project listing/creation, service listing/detail/logs, and multiple deployment modes, but lacks operations for updating or deleting services, managing revisions, or handling traffic splits. These are notable gaps for a full Cloud Run lifecycle, though core workflows are handled.
Related MCP Connectors
Deploy applications to Cloud Run
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Deploy and run apps in your own AWS, Google Cloud, Azure or DigitalOcean account from any AI agent.
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
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
- AlicenseAqualityBmaintenanceEnables MCP-compatible AI agents to deploy applications to Google Cloud Run by providing tools for deploying code, listing services, and managing Google Cloud projects.86,022 npm637Apache 2.0
- 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