MCP server for querying MySQL databases with optional RAG enrichment from Notion semantic layer
The server provides 12 tools for MySQL database access and business intelligence queries. While all tools have descriptions and basic input schemas, there are significant quality gaps. Most tool descriptions are functional but generic (100-150 chars), lacking guidance on WHEN to use each tool or how they differ. Several tools share similar naming patterns (query_buybox_*, query_restock_*) which risks LLM confusion. Input parameters are typed but most lack meaningful descriptions beyond the parameter name itself. Output schemas are not documented, critical for tools that return result sets. Error handling is not visible in the provided code excerpt. The server uses STDIO transport only, which is a hard architectural limitation for remote accessibility.
Get the schema (columns, data types) for a specific table.
Get Notion semantic layer context for a specific brand, including relevant notes from the semantic layer database.
List all available tables in the MySQL database, excluding system tables.
Query Amazon sellers for buybox opportunities with optional brand filtering.
Query Ingram Micro listings for buybox opportunities with optional brand filtering.
Query detailed buybox opportunities with optional brand filtering.
Query buybox opportunities summary view with optional brand filtering.
Output schemas not documented for any tool. LLMs cannot reason about result structure, plan chained calls, or extract downstream parameters. Tools returning query results provide no field names, types, or pagination hints.
Multiple query tools with similar names (query_buybox_*, query_restock_*, query_pricing_*) lack disambiguating descriptions. LLM cannot determine which to call when looking for 'opportunities' vs 'summary'. Descriptions do not explain when to use each variant.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 36 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 35 | - | v1 |
Query detailed pricing information with optional brand filtering.
Query pricing analysis summary with optional brand filtering.
Query detailed restock opportunities with optional brand filtering.
Query restock opportunities summary with optional brand filtering.
Execute a SELECT SQL query against the MySQL database. Results are returned as TSV format. Queries are automatically limited to prevent excessive resource usage.
Input parameter descriptions are minimal. The 'brand_id' parameter across 8 tools is marked 'Optional' but no description explains what happens when omitted, whether it returns all brands, or requires a different query approach.
run_sql tool accepts arbitrary SQL but description does not document the result limit (MCP_MAX_ROWS=200), output format (TSV), or timeout (MCP_QUERY_TIMEOUT=15). LLM cannot predict when queries will be truncated or fail.
Error handling is not visible in provided code. No recovery guidance, retryable vs fatal error classification, or actionable error messages. run_sql may fail due to timeout, syntax error, or result overflow but LLM has no guidance.
No pagination parameters or limits documented. Tools returning query results (query_buybox_*, query_restock_*, query_pricing_*) do not show page/limit/offset parameters, yet descriptions suggest they return multiple records. LLM cannot control result cardinality.