Dataproc MCP Server
The Dataproc MCP Server enables AI assistants to manage Google Cloud Dataproc clusters and jobs through a standardized Model Context Protocol interface.
Cluster Management: List, create, delete, and get details of Dataproc clusters with configurable parameters like instance count, machine type, and disk size
Job Management: Submit various job types (Spark, PySpark, Spark SQL, Hive, Pig, Hadoop) to clusters, list jobs with filtering, get job details, and cancel running jobs
Batch Operations: Create, list, get details of, and delete serverless Dataproc batch jobs with support for network configurations and service accounts
Multiple Transport Support: Operate via STDIO, HTTP, or SSE protocols for different client integration scenarios
Authentication Integration: Supports Google Cloud authentication methods including service account keys, application default credentials, and compute engine service accounts
Provides tools for managing Google Cloud Dataproc clusters and jobs, including cluster creation/deletion, job submission (Spark, PySpark, Hive, Hadoop), and serverless batch operations.
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., "@Dataproc MCP Serverlist all running clusters in us-central1"
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.
Dataproc MCP Server
A Model Context Protocol (MCP) server that provides tools for managing Google Cloud Dataproc clusters and jobs. This server enables AI assistants to interact with Dataproc resources through a standardized interface.
Features
Cluster Management
List Clusters: View all clusters in a project and region
Create Cluster: Provision new Dataproc clusters with custom configurations
Delete Cluster: Remove existing clusters
Get Cluster: Retrieve detailed information about specific clusters
Job Management
Submit Jobs: Run Spark, PySpark, Spark SQL, Hive, Pig, and Hadoop jobs
List Jobs: View jobs across clusters with filtering options
Get Job: Retrieve detailed job information and status
Cancel Job: Stop running jobs
Batch Operations
Create Batch Jobs: Submit serverless Dataproc batch jobs
List Batch Jobs: View all batch jobs in a region
Get Batch Job: Retrieve detailed batch job information
Delete Batch Job: Remove batch jobs
Related MCP server: GCP MCP
Installation
Prerequisites
Python 3.11 or higher (Python 3.13+ recommended)
Google Cloud SDK configured with appropriate permissions
Dataproc API enabled in your Google Cloud project
Install from Source
# Clone the repository
git clone https://github.com/warrenzhu25/dataproc-mcp.git
cd dataproc-mcp
# Create virtual environment (recommended for Homebrew Python)
python3 -m venv .venv
source .venv/bin/activate
# Install project dependencies
pip install -e .
# Install development dependencies (optional)
pip install -e ".[dev]"Alternative Installation Methods
# With uv (if available)
uv pip install --system -e .
# With uv development dependencies
uv pip install --system -e ".[dev]"Troubleshooting Installation
If you encounter issues:
Python version errors: Ensure you have Python 3.11+ installed
python --version # Should be 3.11 or higherExternally managed environment errors: Use a virtual environment
python3 -m venv .venv source .venv/bin/activateMissing module errors: Make sure dependencies are installed
pip install -e .
Configuration
Authentication
The server supports multiple authentication methods:
Service Account Key (Recommended for production):
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account.json"Application Default Credentials:
gcloud auth application-default loginCompute Engine Service Account (when running on GCE)
Required Permissions
Ensure your service account or user has the following IAM roles:
roles/dataproc.editor- For cluster and job managementroles/storage.objectViewer- For accessing job files in Cloud Storageroles/compute.networkUser- For VPC network access (if using custom networks)
Usage
Running the Server
First, activate your virtual environment (if using one):
source .venv/bin/activateThe server supports multiple transport protocols:
# STDIO (default) - for command-line tools and MCP clients
python -m dataproc_mcp_server
# HTTP - REST API over HTTP using streamable-http transport
DATAPROC_MCP_TRANSPORT=http python -m dataproc_mcp_server
# SSE - Server-Sent Events for real-time communication
DATAPROC_MCP_TRANSPORT=sse python -m dataproc_mcp_server
# Run with entry point script (STDIO only)
dataproc-mcp-serverTransport Configuration
STDIO (default): Standard input/output communication for command-line tools and MCP clients
HTTP: REST API over HTTP using streamable-http transport
Server URL:
http://localhost:8000/mcpAccessible via web clients and HTTP-based MCP clients
SSE: Server-Sent Events for real-time bidirectional communication
Server URL:
http://localhost:8000/sseSupports streaming responses and live updates
Environment Variables
# Transport type (stdio, http, sse)
export DATAPROC_MCP_TRANSPORT=http
# Server host (for HTTP/SSE transports)
export DATAPROC_MCP_HOST=0.0.0.0
# Enable debug logging (true, 1, yes to enable)
export DATAPROC_MCP_DEBUG=true
# Server port (for HTTP/SSE transports)
export DATAPROC_MCP_PORT=8080
# Authentication
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account.json"MCP Client Configuration
Add to your MCP client configuration:
{
"mcpServers": {
"dataproc": {
"command": "python",
"args": ["-m", "dataproc_mcp_server"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json",
"DATAPROC_MCP_DEBUG": "true"
}
}
}
}Testing with MCP Inspector
You can test the server using the official MCP Inspector:
# Test STDIO transport
npx @modelcontextprotocol/inspector python -m dataproc_mcp_server
# Test HTTP transport with debug logging
DATAPROC_MCP_TRANSPORT=http DATAPROC_MCP_DEBUG=true python -m dataproc_mcp_server &
npx @modelcontextprotocol/inspector --transport http --server-url http://127.0.0.1:8000/mcp
# Test SSE transport
DATAPROC_MCP_TRANSPORT=sse python -m dataproc_mcp_server &
npx @modelcontextprotocol/inspector --transport sse --server-url http://127.0.0.1:8000/sseThe MCP Inspector provides a web interface to:
Browse available tools and resources
Test tool calls with custom parameters
View real-time protocol messages
Debug server responses
Example Tool Usage
Create a Cluster
{
"name": "create_cluster",
"arguments": {
"project_id": "my-project",
"region": "us-central1",
"cluster_name": "my-cluster",
"num_instances": 3,
"machine_type": "n1-standard-4",
"disk_size_gb": 100,
"image_version": "2.1-debian11"
}
}Submit a PySpark Job
{
"name": "submit_job",
"arguments": {
"project_id": "my-project",
"region": "us-central1",
"cluster_name": "my-cluster",
"job_type": "pyspark",
"main_file": "gs://my-bucket/my-script.py",
"args": ["--input", "gs://my-bucket/input", "--output", "gs://my-bucket/output"],
"properties": {
"spark.executor.memory": "4g",
"spark.executor.instances": "3"
}
}
}Create a Batch Job
{
"name": "create_batch_job",
"arguments": {
"project_id": "my-project",
"region": "us-central1",
"batch_id": "my-batch-job",
"job_type": "pyspark",
"main_file": "gs://my-bucket/batch-script.py",
"service_account": "my-service-account@my-project.iam.gserviceaccount.com"
}
}Development
Setup Development Environment
# Install development dependencies
uv pip install --system -e ".[dev]"
# Or with pip
pip install -e ".[dev]"Running Tests
# Run all tests
pytest
# Run with coverage
python -m pytest --cov=src/dataproc_mcp_server tests/
# Run specific test file
pytest tests/test_dataproc_client.py -vCode Quality
# Format code
ruff format src/ tests/
# Lint code
ruff check src/ tests/
# Type checking (with VS Code + Pylance or mypy)
mypy src/Project Structure
dataproc-mcp/
├── src/dataproc_mcp_server/
│ ├── __init__.py
│ ├── __main__.py # Entry point
│ ├── server.py # MCP server implementation
│ ├── dataproc_client.py # Dataproc cluster/job operations
│ └── batch_client.py # Dataproc batch operations
├── tests/
│ ├── __init__.py
│ ├── test_server.py
│ └── test_dataproc_client.py
├── examples/
│ ├── mcp_server_config.json
│ └── example_usage.py
├── pyproject.toml
├── CLAUDE.md # Development guide
└── README.mdTroubleshooting
Common Issues
Authentication Errors:
Verify
GOOGLE_APPLICATION_CREDENTIALSis set correctlyEnsure service account has required permissions
Check that Dataproc API is enabled
Network Errors:
Verify VPC/subnet configurations for custom networks
Check firewall rules for cluster communication
Ensure clusters are in the correct region
Job Submission Failures:
Verify file paths in Cloud Storage are accessible
Check cluster has sufficient resources
Validate job configuration parameters
Debug Mode
Enable debug logging:
export PYTHONPATH=/path/to/dataproc-mcp/src
python -c "
import logging
logging.basicConfig(level=logging.DEBUG)
from dataproc_mcp_server import __main__
import asyncio
asyncio.run(__main__.main())
"API Reference
Tools
Cluster Management
list_clusters(project_id, region)- List all clusterscreate_cluster(project_id, region, cluster_name, ...)- Create clusterdelete_cluster(project_id, region, cluster_name)- Delete clusterget_cluster(project_id, region, cluster_name)- Get cluster details
Job Management
submit_job(project_id, region, cluster_name, job_type, main_file, ...)- Submit joblist_jobs(project_id, region, cluster_name?, job_states?)- List jobsget_job(project_id, region, job_id)- Get job detailscancel_job(project_id, region, job_id)- Cancel job
Batch Operations
create_batch_job(project_id, region, batch_id, job_type, main_file, ...)- Create batch joblist_batch_jobs(project_id, region, page_size?)- List batch jobsget_batch_job(project_id, region, batch_id)- Get batch job detailsdelete_batch_job(project_id, region, batch_id)- Delete batch job
Resources
dataproc://clusters- Access cluster informationdataproc://jobs- Access job information
Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests for new functionality
Run the test suite and linting
Submit a pull request
License
MIT License - see LICENSE file for details.
Support
For issues and questions:
Check the troubleshooting section
Review Google Cloud Dataproc documentation
Open an issue in the repository
Available Tools
13 toolscancel_jobA
Cancel a running job.
Args:
project_id: Google Cloud project ID
region: Dataproc region
job_id: Job ID to cancel
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| region | Yes | ||
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits like: whether cancellation is immediate or graceful, what permissions are required, if the job can be resumed, what happens to associated resources, or error conditions. For a destructive operation with zero annotation coverage, this is inadequate.
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 perfectly front-loaded with the core purpose in the first sentence, followed by a clean Args section. Every element earns its place with zero redundant information. The structure is logical and efficient.
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 this is a destructive operation with 3 parameters, no annotations, but with an output schema (which handles return values), the description is minimally complete. It covers purpose and parameters adequately but lacks important behavioral context about the cancellation process, permissions, and side effects that would be crucial for safe agent 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?
Schema description coverage is 0%, but the description provides clear semantic meaning for all 3 parameters (project_id, region, job_id) in the Args section, mapping each to their Google Cloud/Dataproc context. This fully compensates for the schema's lack of descriptions, though it doesn't provide format examples or constraints.
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 specific action ('Cancel') and target resource ('a running job'), distinguishing it from siblings like delete_batch_job (which likely removes completed/failed jobs) or submit_job (which starts jobs). The verb+resource combination is precise and unambiguous.
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 implies usage context by specifying 'a running job' (suggesting it's for active jobs only), but doesn't explicitly state when to use this vs. alternatives like delete_batch_job for completed jobs or compare_batch_jobs for analysis. No explicit exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_batch_jobsA
Compare two Dataproc batch jobs and return detailed differences.
Args:
batch_id_1: First batch job ID to compare
batch_id_2: Second batch job ID to compare
project_id: Google Cloud project ID (optional, uses gcloud config default)
region: Dataproc region (optional, uses gcloud config default)
| Name | Required | Description | Default |
|---|---|---|---|
| batch_id_1 | Yes | ||
| batch_id_2 | Yes | ||
| project_id | No | ||
| region | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It mentions the tool returns 'detailed differences' but does not specify what aspects are compared (e.g., configuration, status, metrics), whether it's a read-only operation, potential rate limits, or authentication needs. The description lacks critical behavioral traits beyond the basic function.
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 appropriately sized and front-loaded: the first sentence states the core purpose, followed by a clear parameter list with brief explanations. Every sentence earns its place by adding value, with no redundant or verbose language, making it easy for an agent to parse quickly.
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 moderate complexity (4 parameters, 2 required) and the presence of an output schema (which handles return values), the description is largely complete. It covers the purpose and parameters well, but lacks behavioral context like comparison scope or error handling, which would be beneficial despite the output schema.
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 description adds significant meaning beyond the input schema, which has 0% description coverage. It explains that batch_id_1 and batch_id_2 are 'First' and 'Second' batch job IDs to compare, and clarifies that project_id and region are optional with default behaviors ('uses gcloud config default'). This compensates well for the schema's lack of descriptions, though it doesn't detail format constraints like ID patterns.
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 specific action ('Compare two Dataproc batch jobs') and the outcome ('return detailed differences'), distinguishing it from sibling tools like get_batch_job or list_batch_jobs which retrieve single or multiple jobs without comparison. The verb 'compare' is precise and the resource 'Dataproc batch jobs' is explicitly identified.
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 implies usage when comparing two specific batch jobs, but does not explicitly state when to use this tool versus alternatives like get_batch_job for individual job details or list_batch_jobs for overviews. No guidance is provided on prerequisites, such as whether jobs must be in the same project/region, or exclusions for comparing jobs across different states.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_batch_jobB
Create a Dataproc batch job.
Args:
project_id: Google Cloud project ID
region: Dataproc region
batch_id: Unique identifier for the batch job
job_type: Type of batch job (spark, pyspark, spark_sql)
main_file: Main file/class for the job
args: Job arguments
jar_files: JAR files to include
properties: Job properties
service_account: Service account email
network_uri: Network URI
subnetwork_uri: Subnetwork URI
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| region | Yes | ||
| batch_id | Yes | ||
| job_type | Yes | ||
| main_file | Yes | ||
| args | No | ||
| jar_files | No | ||
| properties | No | ||
| service_account | No | ||
| network_uri | No | ||
| subnetwork_uri | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Create' implies a write/mutation operation, it doesn't mention authentication requirements, rate limits, side effects, what happens on failure, or whether the job starts immediately. For a complex creation tool with 11 parameters, this is a significant gap in 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 efficiently structured with a clear purpose statement followed by a parameter list. Every sentence serves a purpose, though the parameter explanations are quite brief. The front-loaded purpose statement helps the agent quickly understand the tool's function.
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 complexity (11 parameters, creation operation) and the presence of an output schema, the description covers the basics but lacks important context. It explains parameters well but misses behavioral aspects, usage guidelines, and doesn't leverage the output schema's existence to provide more complete guidance about what happens after creation.
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 description provides a parameter list with brief explanations for all 11 parameters, adding substantial value beyond the input schema which has 0% description coverage. It clarifies what each parameter represents (e.g., 'job_type: Type of batch job (spark, pyspark, spark_sql)'), though some explanations could be more detailed about format expectations.
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 'Create' and resource 'Dataproc batch job', making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'submit_job' or 'create_cluster', which would require explicit comparison to achieve 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?
The description provides no guidance on when to use this tool versus alternatives like 'submit_job' or 'create_cluster'. It lacks context about prerequisites, dependencies, or typical use cases, leaving the agent with insufficient information to make appropriate selection decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_clusterB
Create a new Dataproc cluster.
Args:
cluster_name: Name for the new cluster
project_id: Google Cloud project ID (optional, uses gcloud config default)
region: Dataproc region (optional, uses gcloud config default)
num_instances: Number of worker instances
machine_type: Machine type for cluster nodes
disk_size_gb: Boot disk size in GB
image_version: Dataproc image version
| Name | Required | Description | Default |
|---|---|---|---|
| cluster_name | Yes | ||
| project_id | No | ||
| region | No | ||
| num_instances | No | ||
| machine_type | No | n1-standard-4 | |
| disk_size_gb | No | ||
| image_version | No | 2.1-debian11 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it implies a write operation ('Create'), it doesn't disclose critical traits like required permissions, cost implications, time to provision, whether it's idempotent, error conditions, or what the output contains. The description only lists parameters without 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 appropriately sized and front-loaded with the core purpose in the first sentence. The parameter documentation is organized in a clear 'Args' section. While efficient, the parameter explanations could be slightly more concise by avoiding repetition of obvious information like 'Name for the new cluster'.
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 this is a complex mutation tool (creating cloud infrastructure) with no annotations but with an output schema, the description is moderately complete. It documents all parameters but lacks behavioral context about permissions, costs, or operational characteristics. The output schema existence means return values don't need explanation, but other critical context is missing.
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?
With 0% schema description coverage, the description compensates well by explaining all 7 parameters in the 'Args' section. It adds meaning beyond schema titles by clarifying optional parameters with default behaviors ('uses gcloud config default') and providing units for disk_size_gb. However, it doesn't explain parameter constraints or valid values.
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 specific action ('Create a new Dataproc cluster') with the exact resource type. It distinguishes this tool from sibling tools like 'delete_cluster' or 'get_cluster' by specifying it's for creation rather than deletion or retrieval.
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 alternatives. It doesn't mention prerequisites (e.g., authentication, project setup), when not to use it (e.g., if a cluster already exists), or how it differs from related tools like 'create_batch_job'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_batch_jobC
Delete a batch job.
Args:
project_id: Google Cloud project ID
region: Dataproc region
batch_id: Batch job ID to delete
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| region | Yes | ||
| batch_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Delete a batch job' which implies a destructive, irreversible operation, but doesn't specify whether this requires special permissions, what happens to associated resources, or if there are confirmation steps. This is inadequate for a destructive 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 efficiently structured with a clear purpose statement followed by parameter explanations. It avoids unnecessary elaboration, though the parameter section could be more integrated with the main description rather than appearing as a separate list.
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 that this is a destructive operation with no annotations, the description is minimally adequate but lacks critical context about irreversible effects, permissions, or error conditions. The presence of an output schema helps, but the description should do more to compensate for the missing behavioral annotations.
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 description lists all three parameters with brief explanations, but the schema description coverage is 0%, so these explanations are essential. However, they only provide basic identification (e.g., 'Google Cloud project ID') without detailing format constraints, valid values, or relationships between parameters, offering only marginal semantic value beyond the schema titles.
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 'Delete' and the resource 'batch job', making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'cancel_job' or 'delete_cluster', which would require explicit comparison to achieve 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?
The description provides no guidance on when to use this tool versus alternatives like 'cancel_job' or 'delete_cluster'. It also doesn't mention prerequisites, consequences, or appropriate contexts for deletion, leaving the agent with insufficient usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_clusterB
Delete a Dataproc cluster.
Args:
cluster_name: Name of the cluster to delete
project_id: Google Cloud project ID (optional, uses gcloud config default)
region: Dataproc region (optional, uses gcloud config default)
| Name | Required | Description | Default |
|---|---|---|---|
| cluster_name | Yes | ||
| project_id | No | ||
| region | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Delete' implies a destructive operation, it doesn't specify whether this action is irreversible, requires specific permissions, has confirmation prompts, or what happens to associated resources. The description lacks critical behavioral context for a destructive 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 efficiently structured with a clear purpose statement followed by parameter documentation. Every sentence serves a purpose, though the parameter explanations could be slightly more concise. The information is appropriately front-loaded with the core functionality stated first.
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 destructive operation with no annotations, the description is moderately complete given the existence of an output schema. It covers the basic purpose and parameters adequately but lacks important behavioral context about the deletion's consequences, permissions, or error conditions that would be crucial for safe tool 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?
With 0% schema description coverage, the description compensates by providing meaningful parameter explanations. It clarifies that 'project_id' and 'region' are optional with default fallbacks to gcloud config, which adds valuable context beyond what the schema's null/default values indicate. However, it doesn't explain format requirements or constraints for 'cluster_name'.
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 specific action ('Delete') and resource ('a Dataproc cluster'), distinguishing it from sibling tools like 'create_cluster' or 'get_cluster'. It provides a complete verb+resource combination that leaves no ambiguity about 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 alternatives like 'cancel_job' or 'delete_batch_job', nor does it mention prerequisites or conditions for deletion. It simply states what the tool does without contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_batch_jobB
Get details of a specific batch job.
Args:
project_id: Google Cloud project ID
region: Dataproc region
batch_id: Batch job ID
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| region | Yes | ||
| batch_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it 'gets details' which implies a read-only operation, but doesn't disclose behavioral traits like whether it requires authentication, rate limits, error conditions, or what 'details' include (e.g., status, configuration). For a tool with no annotations, this is a significant gap in transparency.
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 appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by a concise parameter list. Every sentence earns its place with no redundant information, making it efficient 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?
Given the tool's moderate complexity (3 required parameters) and the presence of an output schema (which handles return values), the description is fairly complete. It covers the purpose and parameters adequately. However, with no annotations and some behavioral gaps (e.g., auth needs), it could be more comprehensive, but the output schema reduces the burden.
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 description adds parameter semantics beyond the schema, which has 0% description coverage. It explains that 'project_id' is a 'Google Cloud project ID', 'region' is a 'Dataproc region', and 'batch_id' is a 'Batch job ID', providing meaningful context not in the schema. However, it doesn't specify formats or constraints (e.g., region values), so it's not a full 5.
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 purpose with 'Get details of a specific batch job' - a specific verb ('Get') and resource ('batch job'). It distinguishes from siblings like 'list_batch_jobs' (plural vs. specific) and 'get_job' (batch vs. generic job), though not explicitly. However, it doesn't fully differentiate from 'compare_batch_jobs' which might also retrieve details, so it's not a perfect 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?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites, when to choose it over 'get_job' or 'list_batch_jobs', or any context-specific usage. The description is purely functional with no usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_clusterA
Get details of a specific Dataproc cluster.
Args:
cluster_name: Name of the cluster
project_id: Google Cloud project ID (optional, uses gcloud config default)
region: Dataproc region (optional, uses gcloud config default)
| Name | Required | Description | Default |
|---|---|---|---|
| cluster_name | Yes | ||
| project_id | No | ||
| region | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 states the tool retrieves details but doesn't disclose behavioral traits such as whether it's a read-only operation, potential authentication requirements, rate limits, error conditions, or what 'details' include. The description is minimal and misses key operational 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 appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by a structured Args section that efficiently documents parameters. Every sentence earns its place with no redundant or verbose 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?
Given the tool has an output schema (which handles return values), the description covers the purpose and parameters adequately. However, as a tool with no annotations and moderate complexity (3 parameters, 1 required), it lacks behavioral context like safety, permissions, or error handling. The description is complete for basic use but misses advanced operational details.
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 description adds significant meaning beyond the input schema, which has 0% description coverage. It explains that cluster_name is required and identifies the resource, clarifies that project_id and region are optional with default behaviors (using gcloud config defaults), and provides context about Google Cloud and Dataproc. This compensates well for the low 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 the specific action ('Get details') and resource ('a specific Dataproc cluster'), distinguishing it from siblings like list_clusters (which lists multiple clusters) and get_batch_job (which targets batch jobs rather than clusters). The verb 'Get details' is precise and unambiguous.
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 implies usage by specifying it retrieves details for a 'specific' cluster, suggesting it should be used when the cluster name is known. However, it lacks explicit guidance on when to use this versus alternatives like list_clusters or when not to use it (e.g., for batch jobs). The context is clear but alternatives are not named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobC
Get details of a specific job.
Args:
project_id: Google Cloud project ID
region: Dataproc region
job_id: Job ID
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| region | Yes | ||
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Get details' implies a read-only operation, the description doesn't specify authentication requirements, rate limits, error conditions, or what format/details are returned. For a tool with no annotation coverage, this leaves significant behavioral gaps.
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 appropriately brief with a clear purpose statement followed by parameter documentation. The structure is logical and front-loaded. However, the parameter documentation is somewhat redundant since parameter names are already in the schema, though necessary given 0% schema description coverage.
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 that an output schema exists, the description doesn't need to explain return values. However, with no annotations, 3 parameters at 0% schema coverage, and multiple similar sibling tools, the description should provide more context about what type of job this retrieves and how it differs from other get/list tools to be 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 0%, so the schema provides no parameter descriptions. The description lists the three parameters with brief labels but doesn't explain what values are expected, format requirements, or where to find these IDs. It adds minimal semantic value beyond what's already evident from parameter names in the schema.
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 ('Get') and resource ('details of a specific job'), making the purpose immediately understandable. However, it doesn't differentiate this tool from similar siblings like 'get_batch_job' or 'get_cluster', which would require more specificity about what type of job this retrieves.
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 alternatives. With siblings like 'get_batch_job', 'list_jobs', and 'submit_job' available, there's no indication of whether this tool is for Dataproc jobs specifically, batch jobs, or general jobs, nor when one should use this versus the other get/list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_batch_jobsC
List Dataproc batch jobs.
Args:
project_id: Google Cloud project ID
region: Dataproc region
page_size: Number of results per page
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| region | Yes | ||
| page_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks behavioral details. It mentions pagination via 'page_size' but doesn't describe return format, rate limits, authentication needs, or whether it's read-only (implied but not stated). For a list operation with zero annotation coverage, this is insufficient.
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 appropriately concise with a clear purpose statement followed by parameter explanations. The structure is front-loaded with the main function, though the parameter section could be more integrated. No wasted sentences.
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 has an output schema (which handles return values), the description covers basic purpose and parameters. However, for a list operation with no annotations and sibling tools, it lacks context on differentiation, behavioral traits, and usage guidelines, making it minimally adequate but incomplete.
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 0%, so the schema provides no parameter descriptions. The description adds basic semantics for all three parameters (project_id, region, page_size), explaining what they represent. However, it doesn't provide format details, constraints, or examples, leaving gaps in understanding.
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 'List' and resource 'Dataproc batch jobs', making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'list_jobs' or 'list_clusters', which would require specifying what distinguishes batch jobs from other job types in Dataproc.
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 'list_jobs', 'get_batch_job', or 'compare_batch_jobs'. The description only states what it does without context about appropriate use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_clustersB
List Dataproc clusters in a project and region.
Args:
project_id: Google Cloud project ID (optional, uses gcloud config default)
region: Dataproc region (optional, uses gcloud config default)
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | ||
| region | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the action ('List') but doesn't disclose behavioral traits like read-only nature (implied by 'List'), pagination, rate limits, authentication needs, or error handling. The description is minimal and doesn't add meaningful context beyond the basic action.
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 appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by a structured 'Args:' section. Every sentence adds value without redundancy, 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?
Given 2 parameters with 0% schema coverage and an output schema exists, the description is partially complete. It covers parameter defaults but lacks behavioral details (e.g., pagination, permissions). The output schema likely handles return values, so that gap is acceptable, but overall it's adequate with clear room for improvement.
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 0%, so the description must compensate. It adds semantics by explaining both parameters are optional and use gcloud config defaults, which isn't in the schema. However, it doesn't detail format constraints (e.g., valid region values) or provide examples, leaving some gaps.
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 ('List') and resource ('Dataproc clusters'), specifying the scope ('in a project and region'). It distinguishes from siblings like 'get_cluster' (single cluster) and 'create_cluster' (creation), but doesn't explicitly differentiate from 'list_batch_jobs' or 'list_jobs' beyond resource type.
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 implies usage for retrieving multiple clusters, but doesn't explicitly state when to use this vs. alternatives like 'get_cluster' (for single cluster details) or 'list_batch_jobs' (for batch jobs). It mentions optional parameters with defaults, providing some context, but lacks explicit guidance on use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_jobsC
List jobs in a Dataproc cluster.
Args:
project_id: Google Cloud project ID
region: Dataproc region
cluster_name: Cluster name (optional)
job_states: Filter by job states
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| region | Yes | ||
| cluster_name | No | ||
| job_states | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states it's a listing operation. It doesn't disclose behavioral traits like pagination, rate limits, authentication requirements, error conditions, or what happens when optional parameters are omitted. The mention of filtering is minimal and lacks operational 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 appropriately sized with a clear opening sentence followed by a parameter list. The structure is front-loaded with the core purpose first. However, the parameter explanations are very brief and could be more informative without sacrificing conciseness.
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 has 4 parameters, no annotations, but an output schema exists, the description is minimally adequate. It covers the basic purpose and parameters but lacks context about filtering behavior, alternatives, and operational constraints. The output schema reduces the need to describe return values, but more behavioral context would improve completeness.
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 description lists all 4 parameters with brief explanations, but with 0% schema description coverage, it doesn't fully compensate. It provides basic meaning (e.g., 'Google Cloud project ID') but lacks details like format constraints, valid job states, or how cluster_name affects results. The schema already defines types and requirements, so this adds marginal value.
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 ('List jobs') and resource ('in a Dataproc cluster'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_batch_jobs' or 'get_job', which would require more specific scope or filtering details.
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 about when to use this tool versus alternatives like 'list_batch_jobs' or 'get_job'. The description mentions optional filtering by cluster and job states, but doesn't explain when these filters are appropriate or what happens without them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_jobB
Submit a job to a Dataproc cluster.
Args:
project_id: Google Cloud project ID
region: Dataproc region
cluster_name: Target cluster name
job_type: Type of job (spark, pyspark, spark_sql, hive, pig, hadoop)
main_file: Main file/class for the job
args: Job arguments
jar_files: JAR files to include
properties: Job properties
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| region | Yes | ||
| cluster_name | Yes | ||
| job_type | Yes | ||
| main_file | Yes | ||
| args | No | ||
| jar_files | No | ||
| properties | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a job submission operation (implying a write/mutation), but doesn't describe what happens after submission (e.g., job execution, status tracking), potential side effects, error conditions, or authentication requirements. For a mutation tool with zero annotation coverage, this is insufficient.
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 appropriately sized and well-structured with a clear opening statement followed by a parameter list. Every sentence earns its place, though the parameter explanations could be slightly more detailed for complex fields like 'properties'.
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 this is a mutation tool with 8 parameters, no annotations, but with an output schema (which reduces need to describe return values), the description is moderately complete. It covers parameter semantics well but lacks behavioral context about what happens after submission, error handling, or prerequisites. For a job submission operation, more context about execution flow would be helpful.
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 description provides excellent parameter semantics beyond the schema. With 0% schema description coverage, the description compensates fully by explaining what each parameter represents (e.g., 'Google Cloud project ID', 'Type of job', 'Main file/class for the job'), including the specific job_type enum values. This adds significant value beyond the bare schema.
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 ('submit a job') and target resource ('to a Dataproc cluster'), providing specific context. However, it doesn't distinguish this tool from sibling tools like 'create_batch_job' or 'get_job', which appear to be related job operations in the same system.
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 about when to use this tool versus alternatives like 'create_batch_job' or 'get_job'. The description mentions only what the tool does, not when it's appropriate or what prerequisites might be needed (e.g., cluster must be running).
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- Added
compare_batch_jobs - Changed
create_batch_job15 fields changed- added
Input schema / properties / args / anyOfAdded value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / args / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / args / typeRemoved value: -"array" - added
Input schema / properties / jar_files / anyOfAdded value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / jar_files / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / jar_files / typeRemoved value: -"array" - added
Input schema / properties / network_uri / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / network_uri / typeRemoved value: -"string" - removed
Input schema / properties / properties / additionalPropertiesRemoved value: -{ - "type": "string" -} - added
Input schema / properties / properties / anyOfAdded value: +[ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } +] - removed
Input schema / properties / properties / typeRemoved value: -"object" - added
Input schema / properties / service_account / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / service_account / typeRemoved value: -"string" - added
Input schema / properties / subnetwork_uri / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / subnetwork_uri / typeRemoved value: -"string"
- Changed
create_cluster7 fields changed- added
Input schema / properties / project_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / project_id / defaultAdded value: +null - removed
Input schema / properties / project_id / typeRemoved value: -"string" - added
Input schema / properties / region / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / region / defaultAdded value: +null - removed
Input schema / properties / region / typeRemoved value: -"string" - changed
Input schema / requiredPrevious value: -[ - "project_id", - "region", - "cluster_name" -]New value: +[ + "cluster_name" +]
- Changed
delete_cluster7 fields changed- added
Input schema / properties / project_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / project_id / defaultAdded value: +null - removed
Input schema / properties / project_id / typeRemoved value: -"string" - added
Input schema / properties / region / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / region / defaultAdded value: +null - removed
Input schema / properties / region / typeRemoved value: -"string" - changed
Input schema / requiredPrevious value: -[ - "project_id", - "region", - "cluster_name" -]New value: +[ + "cluster_name" +]
- Changed
get_cluster7 fields changed- added
Input schema / properties / project_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / project_id / defaultAdded value: +null - removed
Input schema / properties / project_id / typeRemoved value: -"string" - added
Input schema / properties / region / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / region / defaultAdded value: +null - removed
Input schema / properties / region / typeRemoved value: -"string" - changed
Input schema / requiredPrevious value: -[ - "project_id", - "region", - "cluster_name" -]New value: +[ + "cluster_name" +]
- Changed
list_clusters7 fields changed- added
Input schema / properties / project_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / project_id / defaultAdded value: +null - removed
Input schema / properties / project_id / typeRemoved value: -"string" - added
Input schema / properties / region / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / region / defaultAdded value: +null - removed
Input schema / properties / region / typeRemoved value: -"string" - removed
Input schema / requiredRemoved value: -[ - "project_id", - "region" -]
- Changed
list_jobs5 fields changed- added
Input schema / properties / cluster_name / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / cluster_name / typeRemoved value: -"string" - added
Input schema / properties / job_states / anyOfAdded value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / job_states / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / job_states / typeRemoved value: -"array"
- Changed
submit_job9 fields changed- added
Input schema / properties / args / anyOfAdded value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / args / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / args / typeRemoved value: -"array" - added
Input schema / properties / jar_files / anyOfAdded value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / jar_files / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / jar_files / typeRemoved value: -"array" - removed
Input schema / properties / properties / additionalPropertiesRemoved value: -{ - "type": "string" -} - added
Input schema / properties / properties / anyOfAdded value: +[ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } +] - removed
Input schema / properties / properties / typeRemoved value: -"object"
12 tool updates
- First observed
cancel_job - First observed
create_batch_job - First observed
create_cluster - First observed
delete_batch_job - First observed
delete_cluster - First observed
get_batch_job - First observed
get_cluster - First observed
get_job - First observed
list_batch_jobs - First observed
list_clusters - First observed
list_jobs - First observed
submit_job
TDQS
Scored across 13 tools
Most tools have clear distinct purposes targeting specific Dataproc resources (clusters, batch jobs, regular jobs). However, there is some potential overlap between 'cancel_job' and 'delete_batch_job' as both involve termination operations, and 'submit_job' vs 'create_batch_job' might cause confusion about when to use each, though descriptions clarify batch vs cluster job contexts.
Excellent consistency with a clear verb_noun pattern throughout (e.g., create_cluster, list_batch_jobs, get_job). All tools use snake_case with descriptive verbs (create, delete, get, list, submit, cancel, compare), making them predictable and easy to understand.
13 tools is well-scoped for a Dataproc server covering clusters, batch jobs, and regular jobs. Each tool earns its place by providing essential operations (CRUD, listing, comparison) without unnecessary redundancy, fitting the domain's complexity appropriately.
The toolset provides strong coverage for Dataproc operations, including CRUD for clusters and batch jobs, job management, and listing. Minor gaps include no update operations for clusters or batch jobs (e.g., update_cluster, update_batch_job) and no tool for stopping or pausing clusters, but core workflows are well-supported.
Maintenance
Related MCP Connectors
Interact with your Google Cloud Datastream resources using natural language commands.
Interact with your Google Cloud Composer resources using natural language commands.
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Interact with your Google Bigtable resources using natural language commands.
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
- AlicenseCqualityDmaintenanceEnables AI assistants to interact with Google Cloud Platform resources through natural language queries. Supports querying and managing GCP services like Compute Engine, Cloud Storage, BigQuery, and more across multiple projects and regions.94,042 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Databricks workspaces programmatically, providing comprehensive tools for cluster management, notebook operations, job orchestration, Unity Catalog data governance, user management, permissions control, and FinOps cost analytics.252 npmMIT
- 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