MCP server for executing Power Platform CLI (pac) commands, Azure REST API requests, and Microsoft Graph API requests using the Azure CLI
This server implements 3 tools for Azure/Power Platform CLI orchestration via GenAIScript. While schemas are present and descriptions exist, critical gaps in parameter documentation, output schema clarity, and error handling significantly reduce quality. The tools accept free-form command strings which create injection risks and limit LLM reasoning. Tool definitions are visible in source code but lack production-grade rigor. Average tool score: 38/100.
Executes a Graph API request using the Azure CLI returns the result or error.
Executes a Azure REST API request using the Azure CLI returns the result or error.
Executes a Power Platform CLI (pac) command, against a Dataverse environment and returns the result or error.
Free-form command/URL strings without validation in tool definition, LLMs cannot reason about valid inputs and risk command injection
Output schemas completely undocumented across all tools, downstream tools cannot be chained, LLMs cannot plan multi-step sequences
Parameter descriptions lack format constraints, type details, and dependencies, LLMs cannot infer valid inputs
No error recovery guidance in descriptions, runtime validation fails silently or with generic messages, agent has no path to self-correct
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 37 | <=2025-11-25 | v2 |
Similar tool names 'execute_az_graph_api_command' and 'execute_az_rest_api_command' create LLM disambiguation overhead and risk tool selection errors
GenAIScript framework appears to wrap MCP but transport mechanism unclear from source, marked UNKNOWN, cannot verify remote accessibility
Required parameters in execute_pac_command (pacCommand, group, verb) are redundant, if pacCommand is 'pac solution list', why also require group='solution' and verb='list'? Parameter design suggests LLM must parse the command string, defeating the purpose of structured parameters