MCP server for Azure Cosmos DB integration
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation, output schema clarity, and error handling guidance. All tools have names starting with action verbs (query-, insert-, update-) and descriptions present, but descriptions are generic (avg 95 chars, below 194-char baseline). Parameters lack detailed constraints, format specifications, and dependency documentation. No output schemas documented. Error handling is minimal, tools throw generic errors without recovery guidance. StorageService.queryRecords() has SQL injection vulnerability (string interpolation in query). No pagination support despite potential for large result sets.
Insert a new record into Azure Cosmos DB
Query records from Azure Cosmos DB based on partition key and optional filters
Update an existing record in Azure Cosmos DB
SQL Injection vulnerability in queryRecords(). String interpolation in query: `SELECT * FROM c WHERE c.partitionKey = '${options.partitionKey}'` allows malicious partition keys to break the query or extract unintended data.
No output schemas documented. LLMs cannot predict response structure. query-records returns JSON array of Record objects, but no schema provided. insert-record and update-record return plain strings, not structured objects.
Parameter descriptions lack format/constraint details. 'filter' param in query-records has no specification of syntax (Cosmos SQL syntax? OData?). 'limit' has no min/max bounds. 'data' object in insert/update has no schema for expected fields.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
No pagination support. query-records can return unbounded result sets, risking context window exhaustion. No limit parameter enforcement or default. No next_cursor or total_count in response.
Error handling provides no recovery guidance. Errors are generic ('Failed to query records: <message>') without actionable next steps. No error categorization (retryable vs fatal). No suggestions for user-fixable issues.