MCP server for dataset inspection and analysis. Provides tools for data exploration, statistical analysis, visualization, and correlation analysis of CSV datasets via FastMCP.
Pocket Data Scientist has 13 tools with good naming conventions (all start with action verbs: switch_, get_, list_, summary_, plot_, correlation_, compare_, group_by_, detect_, data_quality_). Tool descriptions are present and reasonably detailed (average ~150 chars), explaining what each tool does. However, parameter descriptions are inconsistent in depth. Most parameters have type declarations and descriptions, but some lack formatting constraints and validation guidance. No output schemas are documented in the source code, only inferred from implementation. Error handling is not visible in the provided code. The tool composition is focused on exploratory data analysis and is reasonably modular (each tool does one primary thing), but there is no evidence of pagination, result limits, or structured output documentation.
Compare two columns and return statistical comparison results including differences in distributions, statistics, and patterns.
Calculate correlation matrix and identify strong correlations. Returns correlation values for numeric columns above the specified threshold.
Generate comprehensive data quality report including missing values, duplicates, data type issues, and quality metrics.
Detect outliers in a column using specified method (IQR or Z-score). Returns identified outlier values and their indices.
Returns detailed column summary with insights and patterns. Includes null counts, unique values, and numeric statistics (mean, std, min, max, quartiles) or categorical top values.
Get comprehensive dataset overview including shape, columns, data types, memory usage, duplicate rows, and column classification.
No output schemas documented. Tools return structured data (inferred from method names like plot_column, get_data_overview) but no schema definitions are visible in the source. LLMs cannot know what fields to expect, breaking tool chaining and downstream planning.
No error handling documented. Tools are called via RPC but there is no guidance on how errors are classified (retryable vs fatal), what error messages look like, or how the LLM should recover. The _rpc method catches exceptions but provides only generic 'MCP error' messages.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 36 | 2024-11-05+ | v1 |
Get a sample of the dataset rows. Supports head/tail sampling or random sampling.
Calculate statistics for a column grouped by categories in another column. Returns aggregated statistics by group.
Returns column information with additional dataset context. Includes column names, types, total rows/columns, and classification of columns by type (numeric, text, date).
Create visualization for a column. Supports scatter plots (with y parameter for bivariate), bar charts, histograms, and auto-detection based on column type.
Create correlation heatmap visualization for all numeric columns. Returns both the plot path and correlation data.
Returns comprehensive numeric statistics with insights, skewness, and kurtosis for all numeric columns in the dataset.
Set or change the active dataset. file_path is relative to the project root (e.g. 'uploads/data.csv').
plot_column and plot_correlation_matrix return file paths (inferred). No documentation of path format, accessibility, or how the LLM should render or retrieve visualizations. Does the path exist on the client filesystem? A remote URL? This breaks integration with frontends expecting structured image responses.
No constraints or enums for string parameters. plot_column accepts 'kind' with description listing valid values ('auto', 'scatter', 'bar', 'hist', 'other matplotlib plot kind') but no enum constraint. correlation_matrix accepts 'method' (pearson, spearman, kendall) and detect_outliers accepts 'method' (iqr, zscore), both should use enums to prevent hallucinated values.
No documentation of limits or pagination. Tools like get_data_sample have defaults (n=10) but no maximum bounds. If an LLM requests 100,000 rows, will the tool fail, hang, or consume excessive memory? No guidance on result truncation or next_cursor for large datasets.
switch_dataset parameter 'file_path' is described as relative to project root but no validation constraints are documented (e.g., must be .csv? Path traversal protection? Max path length?). The tool description includes an example 'uploads/data.csv' which LLMs may copy literally.