An MCP server exposing Azure services (Blob, Key Vault, Service Bus, Resources) as AI tools
Server has 9 tools with basic descriptions and parameter schemas. All tools are properly named with action verbs (blob_*, keyvault_*, servicebus_*, resource_*). However, parameter descriptions are minimal or absent, most parameters lack explanatory text beyond the name. Output schemas are not documented. Error handling is absent; tools return raw strings without guidance on failure modes. No input validation constraints (enums, ranges) are visible. The server is functional but falls short of production-grade quality expected for agent integration.
List the blobs in a given container.
List the blob containers in the storage account.
Read the text content of a blob in a container.
Get the value of a secret from Key Vault by name.
List the names of the secrets in Key Vault (values not included).
List the resource groups in the subscription.
Parameter descriptions missing or minimal. Parameters like 'container', 'queue', 'resource_group' lack explanatory text. LLMs cannot infer what values are valid or how to obtain them.
Output schemas not documented. Tools return lists and dicts but LLMs have no schema to understand structure. E.g., blob_read returns 'str', but what encoding? blob_list_blobs returns 'list[str]', are these blob names or URIs?
No error handling or recovery guidance. Tools return raw strings on success but no documented error cases. If blob_read fails (blob not found, permission denied), LLM has no guidance on what to do next.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
List the resources (name and type) in a resource group.
Peek (without consuming) up to max_count messages on a queue.
Send a text message to a Service Bus queue.
No input validation constraints. Parameters accept free-form strings with no enums, patterns, or ranges. E.g., servicebus_peek max_count defaults to 10 but has no documented min/max bounds.
No pagination support. blob_list_blobs and resource_list_resources return unbounded lists. Large containers or subscriptions could return thousands of items, exhausting context windows.