A simple Data Visualization MCP server using Vega-Lite
Two tools with reasonable descriptions and fully-specified JSON schemas, but several quality gaps prevent a higher score. Both tools have action-verb naming (save_, visualize_) and complete input schemas with typed parameters and descriptions. However, output schemas are undocumented, parameter descriptions lack constraint details, and error handling guidance is absent. The descriptions (SAVE_DATA: ~180 chars, VISUALIZE_DATA: ~390 chars) fall within acceptable ranges but lack actionable recovery hints and prerequisite clarity expected in A-grade tools.
A tool which allows you to save data to a named table for later use in visualizations. When to use this tool: - Use this tool when you have data that you want to visualize later. How to use this tool: - Provide the name of the table to save the data to (for later reference) and the data itself.
A tool which allows you to produce a data visualization using the Vega-Lite grammar. When to use this tool: - At times, it will be advantageous to provide the user with a visual representation of some data, rather than just a textual representation. - This tool is particularly useful when the data is complex or has many dimensions, making it difficult to understand in a tabular format. It is not useful for singular data points. How to use this tool: - Prior to visualization, data must be saved to a named table using the save_data tool. - After saving the data, use this tool to visualize the data by providing the name of the table with the saved data and a Vega-Lite specification.
Output schemas are not documented. Neither tool explicitly declares what it returns (success/failure, response shape, returned fields). LLMs cannot reason about downstream chaining or plan multi-step flows without knowing return structure.
Parameter descriptions lack actionable constraint details. The 'data' parameter in save_data says 'The data to save' but does not specify: required fields per row, max array size, data type restrictions, or examples. The 'vegalite_specification' parameter in visualize_data lacks format/version constraints and does not explain what happens if the spec is malformed.
No error handling or recovery guidance. Tool descriptions do not explain what happens if: (a) save_data receives malformed data, (b) visualize_data references a non-existent table, or (c) Vega-Lite spec validation fails. LLMs have no actionable recovery path.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
Tool composition dependency not documented clearly. The visualize_data description mentions 'Prior to visualization, data must be saved to a named table using the save_data tool,' but this critical prerequisite is buried in the tool description rather than highlighted as a requirement or returned by save_data. If save_data fails silently or returns an ambiguous success, the LLM cannot detect the problem before calling visualize_data.
Vega-Lite specification parameter is free-form JSON string with no format constraint. The description says 'Do not include the data field' but does not explain: (a) what fields are required (mark, encoding, etc.), (b) how the tool injects the data, (c) what Vega-Lite version is expected, or (d) what happens on syntax errors.