MCP Server to interact with multiple clouds based on Anthropic's Model Context Protocol
Critical gaps across all dimensions. Tool names use placeholder {provider}_ prefix, making them non-functional and unparseable by LLMs. Descriptions are minimal (10-30 chars) and lack context on WHEN to use each tool or what they return. Input schemas present but sparse, most parameters lack descriptions entirely. No output schemas documented. No error handling guidance. No parameter constraints (enums, ranges). Tool composition is poor: create_instance requires 'location' as optional but no guidance on valid values or format. No idempotency markers. Security: credentials injected via environment but no audit trail or permission gates visible. Overall, this reads as an early prototype rather than production-ready tooling.
Create a new bucket/container.
Create a new compute instance.
Delete a bucket/container.
Delete a compute instance.
Download a file from a bucket/container.
List all buckets/containers.
List all compute instances.
Tool names use {provider}_ placeholder syntax, making them unparseable. LLMs cannot infer intent from 'aws_list_instances' vs 'azure_list_instances', they are dynamically generated but the placeholder pattern breaks naming conventions.
Descriptions are 10 - 30 characters and lack context. 'List all compute instances' does not explain WHEN to call this vs other discovery tools, what fields are returned, or how to use results downstream. Baseline for A+ tools is 50 - 200 chars with WHAT/WHEN/WHY.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 28 | <=2025-11-25 | v2 |
Start a compute instance.
Stop a compute instance.
Upload a file to a bucket/container.
Input parameters lack descriptions. 'size', 'image', 'location' in create_instance have no guidance on valid values, format, or constraints. LLMs cannot infer whether 'size' means 't2.micro' or '2GB' or 'small'. No enums, ranges, or patterns provided.
No output schemas documented. Tools return data but LLMs have no visibility into response structure, field names, or types. This breaks downstream tool chaining, if list_instances returns 'id' vs 'instance_id', delete_instance cannot reliably consume it.
No error handling guidance. Destructive tools (delete_instance, delete_bucket) have no confirmation step, dry-run option, or recovery guidance. An LLM mistake deletes resources with no undo path.