Skip to main content
Glama
warrenzhu25

Dataproc MCP Server

by warrenzhu25

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:

  1. Python version errors: Ensure you have Python 3.11+ installed

    python --version  # Should be 3.11 or higher
  2. Externally managed environment errors: Use a virtual environment

    python3 -m venv .venv
    source .venv/bin/activate
  3. Missing module errors: Make sure dependencies are installed

    pip install -e .

Configuration

Authentication

The server supports multiple authentication methods:

  1. Service Account Key (Recommended for production):

    export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account.json"
  2. Application Default Credentials:

    gcloud auth application-default login
  3. Compute 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 management

  • roles/storage.objectViewer - For accessing job files in Cloud Storage

  • roles/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/activate

The 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-server

Transport 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/mcp

    • Accessible via web clients and HTTP-based MCP clients

  • SSE: Server-Sent Events for real-time bidirectional communication

    • Server URL: http://localhost:8000/sse

    • Supports 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/sse

The 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 -v

Code 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.md

Troubleshooting

Common Issues

  1. Authentication Errors:

    • Verify GOOGLE_APPLICATION_CREDENTIALS is set correctly

    • Ensure service account has required permissions

    • Check that Dataproc API is enabled

  2. Network Errors:

    • Verify VPC/subnet configurations for custom networks

    • Check firewall rules for cluster communication

    • Ensure clusters are in the correct region

  3. 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 clusters

  • create_cluster(project_id, region, cluster_name, ...) - Create cluster

  • delete_cluster(project_id, region, cluster_name) - Delete cluster

  • get_cluster(project_id, region, cluster_name) - Get cluster details

Job Management

  • submit_job(project_id, region, cluster_name, job_type, main_file, ...) - Submit job

  • list_jobs(project_id, region, cluster_name?, job_states?) - List jobs

  • get_job(project_id, region, job_id) - Get job details

  • cancel_job(project_id, region, job_id) - Cancel job

Batch Operations

  • create_batch_job(project_id, region, batch_id, job_type, main_file, ...) - Create batch job

  • list_batch_jobs(project_id, region, page_size?) - List batch jobs

  • get_batch_job(project_id, region, batch_id) - Get batch job details

  • delete_batch_job(project_id, region, batch_id) - Delete batch job

Resources

  • dataproc://clusters - Access cluster information

  • dataproc://jobs - Access job information

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests for new functionality

  5. Run the test suite and linting

  6. Submit a pull request

License

MIT License - see LICENSE file for details.

Support

For issues and questions:

  1. Check the troubleshooting section

  2. Review Google Cloud Dataproc documentation

  3. Open an issue in the repository

Available Tools

13 tools
cancel_jobA

Cancel a running job.

Args:
    project_id: Google Cloud project ID
    region: Dataproc region
    job_id: Job ID to cancel
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
regionYes
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)
ParametersJSON Schema
NameRequiredDescriptionDefault
batch_id_1Yes
batch_id_2Yes
project_idNo
regionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
regionYes
batch_idYes
job_typeYes
main_fileYes
argsNo
jar_filesNo
propertiesNo
service_accountNo
network_uriNo
subnetwork_uriNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_nameYes
project_idNo
regionNo
num_instancesNo
machine_typeNon1-standard-4
disk_size_gbNo
image_versionNo2.1-debian11

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
regionYes
batch_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)
ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_nameYes
project_idNo
regionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
regionYes
batch_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)
ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_nameYes
project_idNo
regionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
regionYes
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
regionYes
page_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNo
regionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
regionYes
cluster_nameNo
job_statesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
regionYes
cluster_nameYes
job_typeYes
main_fileYes
argsNo
jar_filesNo
propertiesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters5/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 8 tool updatesv1.0.0
    • Addedcompare_batch_jobs
    • Changedcreate_batch_job15 fields changed
      • addedInput schema / properties / args / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / args / items
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / args / type
        Removed value: -"array"
      • addedInput schema / properties / jar_files / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / jar_files / items
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / jar_files / type
        Removed value: -"array"
      • addedInput schema / properties / network_uri / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / network_uri / type
        Removed value: -"string"
      • removedInput schema / properties / properties / additionalProperties
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / properties / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / properties / type
        Removed value: -"object"
      • addedInput schema / properties / service_account / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / service_account / type
        Removed value: -"string"
      • addedInput schema / properties / subnetwork_uri / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / subnetwork_uri / type
        Removed value: -"string"
    • Changedcreate_cluster7 fields changed
      • addedInput schema / properties / project_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / project_id / default
        Added value: +null
      • removedInput schema / properties / project_id / type
        Removed value: -"string"
      • addedInput schema / properties / region / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / region / default
        Added value: +null
      • removedInput schema / properties / region / type
        Removed value: -"string"
      • changedInput schema / required
        Previous value: -[
        -  "project_id",
        -  "region",
        -  "cluster_name"
        -]New value: +[
        +  "cluster_name"
        +]
    • Changeddelete_cluster7 fields changed
      • addedInput schema / properties / project_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / project_id / default
        Added value: +null
      • removedInput schema / properties / project_id / type
        Removed value: -"string"
      • addedInput schema / properties / region / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / region / default
        Added value: +null
      • removedInput schema / properties / region / type
        Removed value: -"string"
      • changedInput schema / required
        Previous value: -[
        -  "project_id",
        -  "region",
        -  "cluster_name"
        -]New value: +[
        +  "cluster_name"
        +]
    • Changedget_cluster7 fields changed
      • addedInput schema / properties / project_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / project_id / default
        Added value: +null
      • removedInput schema / properties / project_id / type
        Removed value: -"string"
      • addedInput schema / properties / region / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / region / default
        Added value: +null
      • removedInput schema / properties / region / type
        Removed value: -"string"
      • changedInput schema / required
        Previous value: -[
        -  "project_id",
        -  "region",
        -  "cluster_name"
        -]New value: +[
        +  "cluster_name"
        +]
    • Changedlist_clusters7 fields changed
      • addedInput schema / properties / project_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / project_id / default
        Added value: +null
      • removedInput schema / properties / project_id / type
        Removed value: -"string"
      • addedInput schema / properties / region / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / region / default
        Added value: +null
      • removedInput schema / properties / region / type
        Removed value: -"string"
      • removedInput schema / required
        Removed value: -[
        -  "project_id",
        -  "region"
        -]
    • Changedlist_jobs5 fields changed
      • addedInput schema / properties / cluster_name / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / cluster_name / type
        Removed value: -"string"
      • addedInput schema / properties / job_states / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / job_states / items
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / job_states / type
        Removed value: -"array"
    • Changedsubmit_job9 fields changed
      • addedInput schema / properties / args / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / args / items
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / args / type
        Removed value: -"array"
      • addedInput schema / properties / jar_files / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / jar_files / items
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / jar_files / type
        Removed value: -"array"
      • removedInput schema / properties / properties / additionalProperties
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / properties / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / properties / type
        Removed value: -"object"
  2. 12 tool updates
    • First observedcancel_job
    • First observedcreate_batch_job
    • First observedcreate_cluster
    • First observeddelete_batch_job
    • First observeddelete_cluster
    • First observedget_batch_job
    • First observedget_cluster
    • First observedget_job
    • First observedlist_batch_jobs
    • First observedlist_clusters
    • First observedlist_jobs
    • First observedsubmit_job

TDQS

A3.5/5.0

Scored across 13 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables 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.
    1
    6
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Enables 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.
    9
    4,042 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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 npm
    MIT
  • A
    license
    B
    quality
    Not graded
    maintenance
    Enables 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.
    1
    MIT