FastMCP server exposing data exploration, preprocessing, visualization, ML and statistics tools
The server has 34 tools with consistent naming conventions (verb_noun pattern: get_*, plot_*, detect_*, etc.) and comprehensive parameter schemas. However, descriptions are functional but terse (most 20-100 chars), falling short of the 50-200 char LLM-optimized baseline. Parameter descriptions are present but minimal. No output schemas are documented, critical for agentic planning. Error handling is basic (no recovery guidance visible). Tool composition is strong (single responsibility per tool), but output chaining support is weak (no documented return fields that downstream tools need). The server demonstrates competent engineering but lacks LLM-centric polish.
Perform ANOVA to test for differences across groups
Compute correlation coefficients between numeric columns
Detect outliers in a numeric column using IQR method
Encode categorical columns using one-hot or label encoding
Get basic information about a CSV dataset including shape, dtypes, and missing values
Handle missing values in a dataset using specified strategy (drop, forward fill, or mean imputation)
List available chart themes and their descriptions
List all generated result files in the output directory
Output schemas not documented: No tool documents what fields it returns or their types. LLMs cannot plan multi-step workflows without knowing what data is available after each call. For example, plot_scatter returns an image path (presumably), but this is not specified. Downstream tools (like view_chart) cannot reliably use the output without explicit schema documentation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Create a stacked area chart for time series composition
Automatically select and create the appropriate visualization for given columns
Create a bar plot with categorical x-axis
Create a side-by-side before/after comparison plot for a column
Create a box plot for comparing distributions across groups
Create an empirical cumulative distribution function plot
Create a correlation heatmap for numeric columns
Create a hexbin density plot for large scatter datasets
Create a histogram for a numeric column
Generate a learning curve plot for model diagnosis
Create a line plot with optional grouping and resampling
Create a Pareto chart showing cumulative contribution
Create a Q-Q plot to assess normality of a distribution
Create a rolling window plot for time series analysis
Create a scatter plot with optional hue and size encoding
Create a stacked bar chart showing composition across categories
Create a violin plot for distribution visualization across groups
Create a waterfall chart showing cumulative contribution of categories
Generate a comprehensive statistical profile of the dataset with column roles, distributions, and correlations
Get recommendations for appropriate visualizations for given columns
Remove outliers from a numeric column using IQR method and update the cached dataset
Scale numeric columns using standardization or normalization
Change the active chart theme/style globally
Create a summary statistics tile visualization
Perform Shapiro-Wilk test for normality on a column
View a generated chart image file (returns image content for inline display)
Descriptions are functionally minimal (mostly 20-100 chars), falling short of LLM-optimized 50-200 char baseline. Examples: 'Get basic information about a CSV dataset including shape, dtypes, and missing values' (87 chars, acceptable), but 'Create a Q-Q plot to assess normality of a distribution' (56 chars, bare minimum). Many lack context for LLM selection. Missing: why use this tool vs a similar one? What are typical use cases? When should the agent call it?
No error handling visible in tool definitions. No guidance on what to do if a CSV file is not found, a column name is invalid, or a statistical test fails. Error responses must tell the LLM what to do next (retryable, user-fixable, or fatal) and include the invalid value and constraint. All 34 tools lack this recovery guidance.
Parameter descriptions are present but minimal (5-15 words). Example: plot_scatter.hue_column has 'Optional column for color encoding' (6 words). Missing: valid value ranges, format constraints, examples of valid inputs. If a plot accepts 'bins' as integer, the description should state the valid range (e.g. 1-1000 for histogram bins). Current schema descriptions assume LLMs know standard data analysis terminology without explicit guidance.
Parameters like 'strategy' in handle_missing_values and 'method' in scale_features, encode_categories accept free-form strings. These should be enum types with explicit valid values. Example: strategy should be enum['drop', 'forward_fill', 'mean'], not a string description. This prevents hallucinated/invalid inputs and is self-documenting.
No documented return type or structure. Tools that modify state (remove_outliers, handle_missing_values, scale_features, encode_categories, set_chart_style) do not document what they return, the caller's status, the modified dataset path, a summary of changes? Visualization tools return presumably a file path, but this is not stated. Without documented returns, the agent cannot chain operations reliably.
Destructive/state-modifying tools lack confirmation or dry-run support. remove_outliers, handle_missing_values, scale_features, encode_categories, and set_chart_style modify the cached dataset or configuration but offer no way to preview changes or confirm before execution. Agents make mistakes, a dry-run or confirmation step prevents catastrophic data loss.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). The 9 read-write tools (remove_outliers, handle_missing_values, scale_features, encode_categories, set_chart_style marked WRITE) should have destructiveHint=true or idempotentHint annotations to signal risk level to agents. No tool carries these metadata hints in its definition.