tpu-devops (xbill9/tpu-skill-claude) is an MCP server listed on the M8ven Trust Index. It scores 52 out of 100, grade D. It declares 62 tools. No publisher has claimed this listing.
MCP server for managing Google Cloud TPU capacity and serving Gemma 4 with vLLM, including provisioning, debugging, benchmarking, and teardown.
Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
xbill9
Source: Glama
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
verify_model_healthRuns a deep logic check with latency reporting.
save_hf_tokenSaves a Hugging Face API token to GCP Secret Manager as secret 'hf-token'. Note: the token passes through the conversation; for maximum privacy the user can instead run `echo -n <token> | gcloud secrets versions add hf-token --data-file=-` themselves (after creating the secret once).
get_vllm_deployment_configGenerates the gcloud command for a single-host TPU v6e vLLM deployment.
destroy_queued_resourceSafely deletes a Queued Resource and its node. Zone defaults to the server's current zone (which `find_tpu` updates when it secures capacity elsewhere).
manage_queued_resourceEnsures the primary Queued Resource exists — and DELETES every other queued resource in the zone (plus the primary itself if FAILED/SUSPENDED, so it can be recreated). Destructive by design; confirm with the user before running it in a zone that may hold resources they want kept. To create without a…
create_tpu_queued_resourceCreates a TPU Queued Resource (Flex-start or reserved) with the vLLM startup script. Non-destructive: unlike `manage_queued_resource`, it never deletes other resources — if one with this ID already exists it just reports its state.
create_tpu_vm_instanceCreates a flex-start TPU VM as a GCE instance (recommended path for v6e/v5p) and auto-starts vLLM via the startup script. Boot disk defaults to 200GB because the image default (10GB) cannot hold the vLLM TPU image.
list_tpu_vm_instancesLists GCE TPU VM instances (ct6e/ct5p machine types) across all zones, or one zone.
destroy_tpu_vm_instanceDeletes a GCE TPU VM instance. Flex-start bills until deletion — confirm with the user before destroying anything they may still need.
get_tpu_vm_serial_logTails the serial-console output of a GCE TPU VM. SSH to TPU VMs is often blocked by firewall policy, so this is the primary way to watch startup-script/vLLM boot progress. Success marker: 'vLLM application startup complete.'
get_tpu_vm_endpointReturns the vLLM endpoint URLs of a GCE TPU VM and probes their health. Port 8000 is frequently unreachable from outside the VPC (firewall) even when serving is healthy — if both probes fail, check `get_tpu_vm_serial_log` for the startup-complete marker.
wait_for_vllm_readyPolls a GCE flex-start TPU VM every 30s until vLLM serving is ready, checking the health endpoint and the serial-console startup marker. One call replaces manual serial-log polling; model load typically takes ~10 min. Also fails fast if the startup script logs an ERROR (e.g. Secret Manager access de…
get_zones_with_available_quotaRetrieves the GCP zones that have a non-zero quota limit for a specific metric.
find_tpuSweeps every zone with available quota, creating the queued resource and polling until one reaches ACTIVE. Side effects: deletes the created resource in each zone that fails or times out; on success switches the server's default zone to the winning zone; records failed zones in ~/.cache/tpu-devops/t…
find_tpu_vmGCE counterpart of `find_tpu`: tries flex-start TPU VM creation across zones until one grants capacity. TPUS_PER_TPU_FAMILY quota is only discoverable by attempting creation, so quota failures fail fast and the sweep moves on; each attempt's request expires after `per_zone_wait` so no pending reques…
manage_vllm_dockerManages the vLLM Docker container on the serving host. Targets the queued resource's node by default, or a GCE flex-start TPU VM when instance_name is given.
list_queued_resourcesLists all Queued Resources in a specific zone (defaults to the current zone).
describe_queued_resourceProvides detailed information about a specific Queued Resource, including its lifecycle state and expiry.
estimate_deployment_costEstimates the cost of a TPU deployment. `topology` is a chip grid like '2x4'.
get_system_statusHigh-level dashboard covering both serving paths: GCE flex-start TPU VMs (all zones) and Queued Resources (current zone), plus vLLM health.
get_vllm_endpointReturns the active vLLM service URL if available.
query_queued_gemma4Queries the self-hosted model (the configured MODEL_NAME) on the active TPU deployment. With include_stats=True, streams the response and also reports TTFT, total generation time, and tokens/second.
run_vllm_benchmarkRuns vLLM's internal benchmark tool in a separate container on the serving host (queued resource node by default, or a GCE flex-start TPU VM via instance_name). `model` defaults to the model actually being served (else MODEL_NAME).
get_vllm_docker_logsRetrieves the last `tail` lines of the vLLM Docker container's logs from the serving host (queued resource node by default, or a GCE flex-start TPU VM via instance_name). Bounded — the full log of a long-serving container can run to megabytes.
get_tpu_system_logsRetrieves systemd logs for a specific service from the serving host (queued resource node by default, or a GCE flex-start TPU VM via instance_name).
get_cloud_logging_logsFetches logs from Google Cloud Logging.
analyze_cloud_loggingSummarizes recent TPU errors from Cloud Logging using the self-hosted Gemma 4 model.
get_model_detailsRetrieves detailed information about the running model, vLLM engine, and versions.
get_helpProvides help text and summarizes the configuration options and all available SRE/DevOps tools for this TPU VM MCP server.
get_metricsFetches Prometheus metrics from the running vLLM service's /metrics endpoint. Returns the key serving metrics by default; raw=True returns the full dump (large — mostly histogram buckets).
find_gpuFinds available GPU resources (GCE VMs, Cloud Run services, and zones with available GPU quota) in the GCP project.
GOOGLE_CLOUD_PROJECTGOOGLE_CLOUD_ZONEGOOGLE_CLOUD_REGIONMODEL_NAMEACCELERATOR_TYPETENSOR_PARALLEL_SIZETool annotations
No tools have read-only/destructive annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
62/62 tools missing one or more hints — verify_model_health (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); save_hf_token (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_vllm_deployment_config (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +59 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Destructive tools are labelled
2 tools perform destructive updates without destructiveHint — create_tpu_vm_instance deletes at line 691 (os.unlink(script_file)); create_tpu_vm_instance deletes at line 691 (os.unlink(script_file))
Add destructiveHint:true to any tool whose handler calls .delete(), .upsert(), .update(), unlink, rm, DELETE, DROP, REPLACE INTO, or any operation that overwrites existing data.
Tool inputs are validated
52/62 tool handlers declare input schemas (84%)
Declare an inputSchema with zod/joi/yup on every tool definition.
Tool handlers catch errors
Only 28/62 tool handlers wrap calls in try/catch (45%)
Wrap each tool handler body in try/catch and return a structured error response.
License file
No license file
Add a LICENSE file (MIT, Apache-2.0, etc.).
Tests exist
No test files found
Add tests that exercise each declared tool.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/xbill9/tpu-skill-claude)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check