AVM MCP Server has moderate naming clarity but serious gaps in parameter descriptions, output schema documentation, and error handling. All three tools are explicitly registered with input schemas visible in index.ts. Tool names follow verb_noun patterns ('find', 'get', 'generate'), which is positive. However, parameter descriptions are minimal or missing in several cases, output schemas are not documented, and there is no guidance on error recovery or edge cases. The descriptions themselves are adequate in length (60-90 chars) but lack actionable context for when LLMs should select each tool vs. alternatives. Schema completeness varies: mcp_find_avm_modules and get_avm_module_details have basic enum/string types, but generate_modules lacks explicit input schema documentation. No tool documents its return structure, violating the critical pattern that LLMs must know what fields to expect. Error handling is silent, the code returns 'Module not found' text but provides no guidance on recovery actions.
Generate the bicep or terraform files that use AVM modules for the selected Azure resources.
Get detailed information about a specific AVM module by name
Find AVM modules based on resource types with optional provider filtering
Output schemas not documented. Tools return complex nested objects (avmDetails with resourceType, apiVersion, brEndpoint, url; detailsText with markdown content) but LLMs cannot parse these without explicit schema. Violates critical pattern that agents need to know what fields to expect.
Parameter descriptions are minimal or contextually vague. 'resources' is described as 'A list of desired Azure resource types (e.g., 'storage account', 'web app')', the example values may cause LLMs to reuse them literally rather than adapt to actual context. 'extra_context' in generate_modules lacks guidance on format or scope.
Missing error recovery guidance. When a module is not found (index.ts line ~72-77), the tool returns 'Module not found: {moduleName}' with no suggestion for what to do next. Pattern requires: 'User not found. Try search_users() with a partial name.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 13 | - | v1 |
No explanation of tool selection disambiguation. Two discovery tools exist (mcp_find_avm_modules via name/type matching, list_avm_* resources). Descriptions do not clarify when to use each. LLMs will waste reasoning cycles deciding between similar-sounding tools.
generate_modules produces raw markdown/terraform output but no schema documents this. Agents cannot know field structure, making it hard to chain results downstream or extract specific information.