内容
统计分析锻造(SAF)
**适用于社会科学研究、调查分析和可重复统计的SPSS兼容MCP服务器。**
SAF是一个注重隐私的[模型上下文协议(MCP)](https://modelcontextprotocol.io)服务器,用于处理SPSS兼容的数据集(`.sav`、`.zsav`、`.por`)和表格文件(`.csv`、`.tsv`、`.xlsx`)。它建立在[`pyreadstat`](https://github.com/Roche/pyreadstat)之上,使AI客户端和模型能够检查元数据、预览行、配置文件、运行频率表、评估量表可靠性、生成SPSS语法并执行综合统计分析——同时保持数据本地和安全。
> **SAF =的AI统计助手。** 不是IBM SPSS的替代品,而是学生和研究人员的强大副驾驶。
是什么
- ✅ 一个Python MCP服务器,实现了**28种专项工具**用于数据集检查和分析
- ✅ SPSS样式的数据字典——变量标签、值标签、度量级别、缺失规则、建议的研究角色(IV、DV、分组、量表项)
- ✅ 分析配方运行器——在一次调用中批量处理多个分析,并附有APA解释和SPSS语法
- ✅ APA 7样式的解释生成器,适用于每种统计测试
- ✅ SPSS语法生成器v2——描述性统计、频率、交叉表、T检验、单因素方差分析、相关性、回归、可靠性
- ✅ Markdown报告导出器——完整的作业就绪报告
- ✅ 适用于`.sav`、`.zsav`、`.por`、`.csv`、`.tsv`和`.xlsx`文件的本地优先、保护隐私的助手
- ✅ 设计用于具有敏感受访者数据的研究、调查和教学工作流
- ✅ 通过`SAF_DATA_ROOT`使用文件系统隔离强制沙箱
## SAF不是什么
- ❌ 不是IBM SPSS的替代品
- ❌ 不执行任意SPSS语法或shell命令
- ❌ 不上传、传输或外部存储数据集
## 支持的文件格式
| 格式 | 支持 |
|--------|---------|
| `.sav` | ✅ SPSS系统文件 |
| `.zsav` | ✅ 压缩SPSS系统文件 |
| `.por` | ✅ SPSS便携式文件 |
| `.csv` | ✅ 逗号分隔值 |
| `.tsv` | ✅ 制表符分隔值 |
| `.xlsx` | ✅ Excel工作簿 |
## 快速入门
### 安装
```bash
git clone https://github.com/azwafazil/SAF.git
cd SAF
python -m venv .venv
source .venv/bin/activate
pip install -e .
```
### 环境设置
```bash
export SAF_DATA_ROOT=/absolute/path/to/your/saf-data
```
### 运行
```bash
saf-mcp # stdio (default)
MCP_TRANSPORT=streamable-http saf-mcp # HTTP/SSE (for nasf.cloud)
```
## MCP工具概述
SAF公开了**28种工具**,分为六组:
### 数据集操作(7种工具)
| 工具 | 目的 |
|------|---------|
| `list_data_files` | 列出`SAF_DATA_ROOT`下的支持文件 |
| `inspect_spss_metadata` | 读取列名、标签、值标签、格式、度量 |
| `preview_spss_data` | 返回前N行(1-500) |
| `profile_spss_data` | 每列:数据类型、缺失计数、顶部值、汇总统计 |
| `convert_spss_to_csv` | 编写`.sav` / `.zsav` / `.por` → CSV |
| `convert_csv_to_sav` | 编写`.csv` / `.tsv` / `.xlsx` → `.sav` |
| `generate_basic_spss_syntax` | 生成SPSS语法(只读) |
### 数据智能(3种新工具)
| 工具 | 目的 |
|------|---------|
| `inspect_dataset` | SPSS样式的数据字典:变量标签、值标签、度量级别、缺失计数、建议的研究角色 |
| `run_analysis_recipe` | 在一次调用中批量处理多个分析,并附有APA解释和SPSS语法 |
| `export_markdown_report` | 从配方结果生成完整的Markdown报告 |
### SPSS语法生成器v2
| 工具 | 目的 |
|------|---------|
| `generate_spss_syntax_v2` | 生成描述性统计、频率、交叉表、T检验、单因素方差分析、相关性、回归或可靠性语法 |
### 调查分析(4种工具)
| 工具 | 目的 |
|------|---------|
| `cross_tabulation` | 带有行/列/总百分比的列联表 |
| `saf_stat_frequencies` | 分类/有序变量的频率表 |
| `saf_stat_reliability` | 带有项目诊断的克隆巴赫α用于量表可靠性 |
| `saf_stat_describe_all` | 同时描述所有数字列 |
### 统计分析(12种工具)
| 工具 | 计算 |
|------|----------|
| `saf_stat_descriptives` | n, 均值, 标准差, 中位数, 最小/最大值, 四分位距, 平均偏差, 偏度, 峰度, 95% 置信区间 |
| `saf_stat_assumptions` | Shapiro-Wilk(或D'Agostino,n > 5000)+ Levene's test |
| `saf_stat_compare_groups` | t检验(独立/配对/Welch)+ Mann-Whitney + Cohen's d |
| `saf_stat_anova` | 单因素方差分析 / Welch / Kruskal-Wallis + Tukey HSD + η² |
| `saf_stat_correlate` | Pearson(Fisher-z CI), Spearman, Kendall + bootstrap CIs |
| `saf_stat_regress` | OLS, logistic, robust (HC3) 回归,附CI,AIC/BIC,VIF |
| `saf_stat_chi_square` | 独立性检验 + Cramér's V + Fisher精确检验; GOF |
| `saf_stat_nonparametric` | Wilcoxon, sign, Friedman, Mann-Whitney, Kruskal-Wallis |
| `saf_stat_effect_size` | Cohen's d, η², Cramér's V, odds ratio, rank-biserial |
| `saf_stat_power` | 求解功率、样本大小或效应大小 |
| `saf_stat_outliers` | IQR(Tukey), z-score, modified z, Mahalanobis |
| `saf_stat_missing` | 每列缺失计数/%, 完整行比率, MCAR草图 |
### 实用工具(1种工具)
| 工具 | 目的 |
|------|---------|
| `list_tools` | 列出所有可用的SAF MCP工具及其描述 |
### 资源和提示助手
| 资源 | 目的 |
|----------|---------|
| `saf://guide` | SAF及其功能的快速定位 |
| `saf://repo-ingestion` | 沙箱规则和数据安全提醒 |
| `analyze_dataset_prompt` | 分析工作流:检查 → 预览 → 配置文件 → 频率 → 描述配方 → 报告 |
| `survey_analysis_prompt`特定工作流,附带可选的可靠性分析和配方 |
## 线上部署F在以下地址公开```
https://nasf.cloud/mcp
```
通过以下方式连接任何MCP兼容的代理(opencode、、Claude Code):json
{
"": {
"saf": {
" "remote",
" "https://nasfcp"
}
```
## 示例用户提示"运行分析配方:对年龄和分数进行统计,然后计算屏幕时间分数之间的相关性,然后分析。"**
- **"为survey.sav生成的数据字典,包含变量建议的角色。"**
"导出我刚刚运行的分析的Markdown报告。"**
"为比较考试性别的t检验生成。"**
- **出我的SAF数据中的数据集。"**
- **"检查survey.sav数据。"**
- **"对survey.sav中的性别、年龄组和教育程度运行频率分析。"**
- **"对满意度按地区进行交叉分析。"**
- **"检查问卷.sav中q1至q的克隆巴赫**
- **"描述data.sav中的所有数字**
- **"将datadata.sav。"**
性和隐私
系统沙箱
-路径均在`SAF_DATA_ROOT`下解析 阻止路径遍历尝试 验证支持的文件扩展名 读取/写入操作仅限于沙箱
### 数据保护
- **无外部** 数据保留在您的机器上
- **无:** SAF不会联系
- **本地优先 所有处理均为本地## 架构
```
saf_mcp/
├── server.py # MCP服务器入口点和28种工具注册
├── config.py # 环境配置
├── security.py 箱强制执行和扩展验证
├── spss_utils.py # SPSS/表格读取、写入、预览、配置文件
├── stats.py # 15种统计分析基元
├── metadata.py # SPSS样式数据字典
├── recipes.py # 分析配方运行器
├── reporting.py # APA 7解释 + Markdown报告生成器
├── syntax.py # SPSS语法生成器v2
└── __init__.py # 包元数据
```
## 许可证
MIT许可证 — 参见[LICENSE](LICENSE)获取详细信息。
---
**由Azwa Fazil构建** · [azwafazil21@gmail.com](mailto:azwafazil21@gmail.com)