Test Data Management with custom MCP - Expenses Tracker and Customer Management
Significant structural and naming issues undermine quality. Tool definitions lack consistency: 3 duplicate names (add_expense, get_expenses_data, analyze_spending_prompt appear twice; call_create_customer_api appears twice). Descriptions are present but generic (avg ~60 chars, below 194-char baseline). Parameter schemas are visible but lack depth, most params have minimal descriptions. No error handling guidance, no output schema documentation, no tool annotations. The server mixes CSV and Cosmos DB backends without clear separation. STDIO transport limits remote accessibility.
Add a new expense to Cosmos DB.
Add a new expense to the expenses.csv file.
Generate a prompt to analyze customer data from the customers_data.csv with optional filters.
Generate a prompt to analyze spending patterns with optional filters.
Generate a prompt to analyze spending patterns with optional filters.
Create a new customer by calling the Customer API endpoint.
Call the Create Customer API endpoint from Consumer Banking (my_apis.py) to create a new customer.
Duplicate tool names across servers: add_expense, get_expenses_data, analyze_spending_prompt, and call_create_customer_api each appear 2+ times. LLMs cannot disambiguate which implementation to call. Violates single-responsibility principle.
Tool descriptions are generic and under 50 chars (e.g., 'Get raw expense data from CSV file'). Lack context on WHEN to use, WHAT it returns, and dependencies. Below 194-char baseline for A+ tools. LLMs cannot reliably select correct tool.
No output schemas documented. Tools return free-text CSV content or Pydantic models without field descriptions. LLMs cannot plan downstream calls or extract structured data reliably.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | <=2025-11-25 | v2 |
Get raw customer data from CSV file
Get raw expense data from CSV file
Get raw expense data from Cosmos DB as CSV text.
Parameter descriptions are minimal or missing. E.g., 'category' param has enum but no explanation of what category means in business context. 'payload' param in call_create_customer_api lacks any description of expected structure.
No error handling guidance. Tools return generic 'Error: Unable to...' messages with no recovery hints. LLMs cannot determine if error is retryable, user-fixable, or fatal.