Model Context Protocol server for IBM SPSS Statistics on macOS — give AI assistants direct access to real SPSS analysis
Server has 32 well-named tools with consistent verb_noun patterns (spss_list_*, spss_get_*, spss_run_*). All tools have descriptions (10 - 200 chars, within baseline 34 - 392 range). Input schemas are present with typed parameters and descriptions. However, output schemas are NOT documented, tools return formatted strings rather than structured objects. Error handling is minimal (generic error messages, no recovery guidance). No tool annotations (readOnlyHint/destructiveHint). Most tools are READ_ONLY analysis operations, but spss_run_syntax is WRITE and lacks confirmation/dry-run pattern. Parameter descriptions are adequate but lack format constraints (e.g., no enum for statistics, rotation methods). Missing pagination for list tools.
Check the SPSS MCP server status: which capabilities are available (SPSS installed vs file-only mode), SPSS path, library versions, and configuration. Call this first to understand what tools are available.
Run CORRELATIONS analysis (Pearson correlation).
Run CROSSTABS analysis with chi-square test.
Run DESCRIPTIVES analysis on specified variables.
Run discriminant analysis.
Run exploratory factor analysis (EFA).
Run factorial ANOVA (two-way or higher).
Output schemas not documented. All tools return formatted strings (markdown/JSON) rather than structured objects with typed fields. LLMs cannot parse results reliably or chain downstream tool calls.
spss_run_syntax is a WRITE tool (executes arbitrary SPSS syntax) with no confirmation, dry-run, or idempotency guarantee. Agents can accidentally run destructive commands. Missing destructiveHint annotation.
Parameter descriptions lack format constraints. 'statistics' param accepts free-form strings (e.g., MEAN, STDDEV, KURTOSIS) with no enum. 'rotation' param in factor_analysis similarly unconstrained. LLMs will hallucinate invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Run FREQUENCIES analysis to get frequency distributions.
Get summary statistics for all numeric variables in an SPSS .sav file.
Get the JSON schema for a registry-backed SPSS method. Useful for structured orchestration and parameter inspection before execution.
Get support metadata for a registry-backed SPSS method, including command family, support tier, coverage assertions, and documentation tags.
Run hierarchical clustering analysis.
Run hierarchical (stepwise) regression analysis.
Run Kaplan-Meier survival analysis.
Run K-means clustering analysis.
Run Kruskal-Wallis test (non-parametric alternative to one-way ANOVA).
Run linear regression analysis.
List SPSS .sav files in a directory. Useful for discovering available datasets when the user hasn't specified a file path.
List registry-backed SPSS methods available for structured execution. Use this to discover cold methods that have schemas, templates, and coverage assertions.
List all variables in an SPSS .sav file with their labels, types, and value labels.
Run binary logistic regression analysis.
Run Mann-Whitney U test (non-parametric alternative to independent t-test).
Run multinomial logistic regression analysis.
Run NONPAR CORR analysis (Spearman rank correlation).
Run one-way ANOVA with post-hoc tests.
Preview the first N rows of an SPSS .sav file as a formatted table.
Run reliability analysis (Cronbach's alpha and other measures).
Run repeated measures ANOVA (GLM).
Execute arbitrary SPSS syntax and return results. For advanced users who want direct control over SPSS commands.
Run independent samples T-TEST.
Run paired samples T-TEST.
Run Wilcoxon signed-rank test (non-parametric alternative to paired t-test).
Error handling is generic. _require_spss() and _require_pyreadstat() return plain error strings with no recovery guidance. No actionable next steps for LLM (e.g., 'Try calling spss_check_status first').
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). MCP spec supports these since 2025-06; they help LLMs reason about safety and retry logic. All 32 tools lack annotations.