A comprehensive MCP server for GCP BigQuery cost optimization, query analysis, and DataOps automation.
This server exhibits significant definition quality gaps that would prevent reliable LLM reasoning. While the project demonstrates solid engineering practices (TypeScript, async, comprehensive dependencies), the tool definitions themselves lack the rigor needed for production agent use. Tool names follow a reasonable pattern (action verbs + noun, mostly), but descriptions are thin, parameter validation is absent from visible code, output schemas are undocumented, and error handling provides no recovery guidance. The visible source shows only one complete tool implementation (DetectCostAnomalies), with inferred definitions for the remaining 4 tools based on metadata only. Critical omissions: no enum constraints on string parameters (sensitivity, optimization_model), no documented output structures, no error classification, no guidance for chain-ability between tools.
Tool for analyzing individual query costs before execution
Tool for creating GitHub PRs with query optimizations
Tool for detecting cost anomalies using multiple ML techniques
Tool for retrieving and analyzing BigQuery costs
AI-powered query optimization using Claude and pattern-based techniques
Output schemas completely undocumented. Four of five tools have no visible schema documentation for their return types. The LLM cannot predict what fields to extract or what downstream tool chains are possible.
String parameters lack enum constraints. 'sensitivity' (low/medium/high), 'optimization_model' (pattern_based/ai_powered), and 'group_by' values are documented only in descriptions, not as formal enum types. LLMs cannot reliably pick valid options and will hallucinate alternatives.
No error handling or recovery guidance visible. The DetectCostAnomalies source catches GoogleCloudError but does not classify errors as retryable/user-fixable/fatal or provide actionable next steps for the LLM.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 34 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 40 | - | v1 |
No documented output structure for DetectCostAnomalies. Returns a CostAnomaly dataclass (with fields anomaly_id, date, actual_cost, etc.) but this schema is not exposed to the MCP client or LLM. The LLM must guess what fields to extract.
Parameter naming inconsistency and lack of type disambiguation. 'group_by' on GetBigQueryCostsTool is typed as array but no itemType documented. 'optimization_goals' on OptimizeQueryTool is an array of what? (string enum?). LLM cannot construct valid calls.
No tool-chaining support visible. Tools return results but do not include IDs/references needed by downstream tools. E.g., AnalyzeQueryCostTool mentions 'optimization_id' in output but this field is not returned, CreateOptimizationPRTool expects it as input, forcing a lookup detour.
Four tools defined only via metadata; actual implementation code not provided. Schemas, output types, and error handling for GetBigQueryCostsTool, AnalyzeQueryCostTool, OptimizeQueryTool, and CreateOptimizationPRTool cannot be verified.
Default values risk unintended side effects. 'send_slack_alert' (false), 'create_pr_if_savings' (false), 'assign_reviewers' (true), 'include_tests' (true) are reasonable, but no explicit documentation that omitting parameters is safe. The LLM may assume defaults are necessary.