Personal Azure MCP tools for tank-operator sessions. Exposes Azure surfaces (Cosmos DB, PostgreSQL, ARM, Key Vault, Cost Management, AKS) with break-glass grant enforcement.
Server exposes 13 Azure tools with complete input schemas and descriptions. Naming follows verb_noun convention (cosmos_query, pg_execute, arm_get). Descriptions are present and actionable (avg ~100 chars), explaining WHAT each tool does and WHEN to use it. However, parameter descriptions lack constraint details (ranges, enums, formats), and output schemas are not documented. Error handling is minimal, no recovery guidance or actionable error messages. Security is strong (credentials injected server-side, allowed-host validation for pg_execute), but composition could be tighter (arm_get/post/put/delete are generic HTTP wrappers rather than domain-specific operations).
DELETE request to Azure Resource Manager API with optional query parameters.
GET request to Azure Resource Manager API with optional query parameters.
POST request to Azure Resource Manager API with optional body and query parameters.
PUT request to Azure Resource Manager API with optional body and query parameters.
Delete a document from a Cosmos DB container by ID with optional ETag-based concurrency control.
Query a Cosmos DB container with optional parameterized query and limit.
Upsert a document into a Cosmos DB container with optional ETag-based concurrency control.
ARM tools (arm_get, arm_post, arm_put, arm_delete) are generic HTTP wrappers. They lack domain-specific semantics, LLMs cannot infer intent from 'POST to /subscriptions/{id}/...' without extensive reasoning. Consider wrapping common ARM operations (create_resource_group, deploy_template, list_vms) as dedicated tools.
Parameter descriptions lack constraint details. E.g., 'limit' params state 'Optional result limit (1-1000, default 100)' in the description, but 'statement_timeout_ms' says 'Optional statement timeout in milliseconds (default 10000, max 60000)', inconsistent format. No enums for constrained values (e.g., PG_EXECUTE_ALLOWED_STATEMENTS = {insert, update, delete, merge}).
Output schemas are not documented. Tools return results but LLMs cannot plan downstream calls without knowing field names and types. E.g., cosmos_query returns documents but the response structure is not specified in the tool definition.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
GET request to Microsoft Graph API with optional query parameters.
Delete a secret from Azure Key Vault.
Retrieve a secret from Azure Key Vault by name.
Set or update a secret in Azure Key Vault.
Execute an INSERT, UPDATE, DELETE, or MERGE statement against an allowed PostgreSQL host with row limit and statement timeout. Restricted to configured allowed hosts.
Execute a SELECT query against an Azure PostgreSQL Flexible Server database with row limit and statement timeout.
Error handling provides no recovery guidance. Tools raise exceptions (CosmosHttpResponseError, ValueError) but do not return actionable error messages. E.g., 'Invalid host' does not suggest calling pg_query with an allowed host or listing available hosts.
Destructive operations (cosmos_delete, arm_delete, keyvault_delete_secret) lack confirmation or dry-run support. An LLM could accidentally delete a secret or resource without a safety gate.