statlab-mcp
statlab-mcp —— Servidor MCP de análisis estadístico
Proyecto independiente, no afiliado con los complementos oficiales de ningún proveedor (declaración histórica del README: sin relación con DeepSeek Harness). Permite que los agentes de IA (Claude Code / Cursor / DeepSeek Harness / Codex, etc.) tengan capacidades estadísticas reales: si un LLM calcula estadísticas directamente de memoria, inventa números; en este proyecto todos los resultados estadísticos provienen de un cálculo real (numpy / scipy / statsmodels / scikit-learn / pmdarima); la IA solo se encarga de invocar e interpretar. Dentro de las 25 herramientas de la primera capa está prohibido que cualquier LLM participe en el cálculo.
¿Para qué sirve?
Una vez instalado, le dices a la IA «analiza estos datos de ventas»; la IA ya no afirma sin base, sino que invoca 25 herramientas estadísticas reales: calcula estadísticos descriptivos, examina correlaciones, ejecuta pruebas de hipótesis, ajusta regresiones, hace agrupaciones (clustering), pronostica series temporales y dibuja gráficos en chino: cada número proviene de librerías estadísticas validadas, reproducible y trazable. El campo summary ofrece una conclusión en una línea en chino, y result devuelve los datos estructurados completos, por ejemplo:
{"status": "ok", "result": {"p_value": 0.0241, "mean_diff": 5.5, "effect_size": 0.65},
"summary": "Welch t 检验:均值差 5.5(95% CI [0.74, 10.26]),p=0.0241 <0.05 拒绝 H0……相关≠因果"}Related MCP server: shewhart-mcp
¿Para quién es?
Público | Uso | Beneficio |
Personas que usan IA para escribir código/hacer análisis (analistas de datos, operaciones, producto) | Dejan que Claude Code / Cursor, etc., la invoquen según necesidad | Los análisis concluyen con respaldo de un cálculo real; no más preocupación porque la IA invente cifras |
Desarrolladores de agentes de IA | La conectan como backend estadístico de su agente/workflow | 25 herramientas deterministas + protocolo unificado, fácil de integrar y probar |
Personas que han estudiado estadística pero no quieren programar a mano | Pregunta en lenguaje natural; la IA invoca las herramientas por ellas | Selección automática de prueba de hipótesis/regresión/serie temporal, con explicación paso a paso |
Quienes necesitan emitir informes de análisis trazables | Juntamente con el esquema auto_analysis (árbol de decisión + plantilla + prompt) | Cada cifra del informe aparece marcada con su herramienta de origen; contra alucinaciones |
Quienes quieren graficar datos rápido | Un grupo de herramientas plot_* | Gráficos con etiquetas en chino y estadísticos marcados directamente sobre el gráfico |
Qué problemas resuelve
Tu pregunta | Capacidad correspondiente |
«¿Cómo se ven estos datos? ¿están sucios?» | describe / data_type_check / missing_report: reconocimiento, registro de identidad, hoja de ausencias |
«¿Estas dos columnas están relacionadas? ¿Es real o casualidad?» | correlation_matrix (con corrección de comparaciones múltiples fdr_bh) + mapa de calor |
«¿De verdad hay una diferencia entre el grupo A y el grupo B?» | Trío: normality_test → hypothesis_test (t de Welch) → effect_size |
«¿Cuánto de la diferencia en las ventas de tres tiendas es real?» | anova_test: Levene → Welch → Tukey/Games-Howell post-hoc automáticos |
«¿Qué afecta a los ingresos? ¿Se puede predecir?” | linear_regression (R²/VIF/diagnóstico de residuos) + feature_importance |
«¿Comprarán los usuarios nuevos (sí/no)?» | logistic_regression: OR + AUC + matriz de confusión + advertencia de separación |
«¿En cuántos grupos se podría dividir a los clientes?» | cluster_analysis (centrides devueltos a unidades originales + coeficiente de silhouette k±1) |
«¿Cuánto será la venta el próximo mes?» | trend_analysis → time_series_forecast (con ordenamiento automático SARIMA) |
«¿Qué día de esta serie es anómalo?» | anomaly_detect (STL/IQR sobre diferencias/z-score móvil; solo informa, no borra datos) |
«No quiero ver tablas; quiero gráficos y un informe» | Quinto de herramientas plot_* + plantilla de informe auto_analysis |
Características y capacidades destacadas
Determinismo ante todo: todos los procesos aleatorios usan semilla fija (42); ejecutar dos veces el mismo archivo da resultados idénticos byte a byte (es la base de la trazabilidad; hay afirmaciones específicas en las pruebas).
Diseño antialucinación: las 25 herramientas de la primera capa tienen cero LLM; los textos de conclusión se generan con números insertados por plantilla de código; p<0.001 se muestra siempre como «<0.001»; cada conclusión incluye una declaración de limitaciones (correlación ≠ causalidad, si se hizo algo o no con los datos, tamaño de muestra).
Criterios fijados y recalculables: q1/q3 = interpolación lineal (mismo criterio que Excel QUARTILE.INC), asimetría/curtosis = criterio Fisher de scipy, std=ddof=1 (Excel STDEV.S) — la documentación lo hace explícito y las pruebas verifican de forma independiente las fórmulas manuales y las librerías estándar (223 pytest, cobertura en docs/).
Cadena completa en chino: nombres de columna en chino, codificación GBK con retroceso automático, gráficos con fuentes chinas, tipo de letra en chino (si no existe, cae a inglés y lo indica), mensajes de error en chino con sugerencia de solución.
Seguridad y protección: archivos locales únicamente, rechaza rutas UNC/NUL, sin subir nada a la red; protección de tamaño robusta: &>50MB / 200 filas / 500MB de memoria; también protección ante zip o xlsx bomba zip y rangos de fecha; salida de datos atípicos limitada por truncamiento (para que entradas maliciosas no bloqueen el proceso).
Los números tienen dueño (estructura y protocolo):
Éxito:
{status:"ok", result:{...}, summary:"..."}Error:
{status:"error", message:"..."}Imágenes: las herramientas que incluyen gráficos añaden
__image__en el nivel superior del JSON devuelto (ruta absoluta de la imagen; prohibido base64).
Integración fluida:
Todos los resultados son deterministas y reproducibles.
Cada
summaryes una frase de conclusión en chino.Cada
resultes una estructura de datos completa.Parámetros y valores devueltos documentados (equivalente a docstring completa).
Cada conclusión incluye limita el alcance (correlación–causalidad, si se ha corregido o no, tamaño de muestra).
Ingeniería completa: 12 documentos de diseño (tabla de parámetros/tabla de límites por herramienta + esquema JSON + método de verificación), configuración para clientes, cobertura de herramientas de 82–96%, ruff todo pase, smoke test del protocolo stdio.
Inicio rápido
# 1. 安装(Python 3.13+,仅 pip)
git clone https://github.com/good-boy4069/statlab-mcp.git
cd statlab-mcp
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt --timeout 60
# 2. 验证能跑(应输出 ALL-STDIO-OK)
$env:PYTHONUTF8="1"
.\.venv\Scripts\python.exe tests\smoke_stdio.pyConectar Claude Code (.mcp.json en la raíz del proyecto):
{
"mcpServers": {
"statlab-mcp": {
"command": "C:\\path\\to\\statlab-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "statlab_mcp.server"],
"cwd": "C:\\path\\to\\statlab-mcp",
"env": {"PYTHONUTF8": "1"}
}
}
}Tres obligatorios:
-m statlab_mcp.server(no introduzcas la rutaserver.py),cwdapuntando a la raíz del proyecto yPYTHONUTF8=1. El resto de clientes (Cursor/VSCode/Codex/Hermes/DSH) se ven endocs/clients.md.
Primera llamada (se puede usar directamente desde la consola sin conectar un cliente):
.\.venv\Scripts\python.exe -c "import sys; sys.path.insert(0,'.'); from statlab_mcp.tools.data_exploration_describe_statistics import describe_statistics; import json; print(json.dumps(describe_statistics('samples/clean.csv'), ensure_ascii=False, indent=1))"Tres leyes de hierro sobre los datos: ① solo se aceptan archivos csv/xlsx/tsv/json; una ruta absoluta cualquiera es válida (maneja automáticamente nombres chinos/GBK/cabras de valor/fechas incorrectas); ② los datos reales se guardan fuera del directorio del proyecto; ③ en cada análisis primero se lee el summary (un dato legal en chino) y después se mira result (el resultado completo).
Las 25 herramientas de un vistazo
Grupo | Herramienta |
Exploración de datos | describe_statistics, correlation_matrix, missing_report, outlier_detect, data_type_check |
Inferencia estadística | hypothesis_test, anova_test, chi_square_test, normality_test, confidence_interval, effect_size |
Modelado | linear_regression, logistic_regression, cluster_analysis, pca_analysis, feature_importance |
Series temporales | time_series_forecast, seasonal_decompose, trend_analysis, anomaly_detect |
Visualización | plot_scatter, plot_histogram, plot_heatmap, plot_forecast, plot_box |
Capa de orquestación | auto_analysis (el entregable: documento de árbol de decisión + plantilla de informe + prompt del agente, no es una herramienta MCP) |
Valor central y protocolo común
Números trazables: resultados deterministicos, reproducibles y comprobables; para la misma entrada el resultado una y otra vez es igual (semilla global=42).
Estructura uniforme: éxito
{status:"ok", result:{...}, summary:"一句话中文结论"}; fallo{status:"error", message:"中文原因有效提示"}.Adjuntos de imagen: las herramientas que devuelven gráficos adjuntan
__image__en el nivel superior del JSON (ruta absoluta de imagen, prohibido base64).
Entorno previo (Windows)
Dependencia Python 3.13+, entorno virtual aislado (solo pip; prohibidos uv/poetry/conda):
python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt --timeout 60requirements.txtes la única fuente canónica de dependencias (pyproject.tomlsolo describe los metadatos).Configurar UTF-8 antes de ejecutar (si no,
stdioescribe el JSON chino como GBK y la conexión MCP se rompe):$env:PYTHONUTF8="1"La parte superior del archivo de entrada del servidor también incluye
sys.stdout.reconfigure(encoding="utf-8")para mitigación.La lectura de los datos pasa por el envoltorio de
read_table(): intente utf-8-sig, si falla, cambie automáticamente a csv/tsv gbk; si vuelve a fallar, da error en chino «No se puede reconocer la codificación del archivo; por favor guárdese como UTF-8»; lista blanca de extensiones{csv, xlsx, tsv, json}, xlsx se lee solo la primera hoja.
Cómo ven los agentes las imágenes
DeepSeek Harness: use la herramienta
read_imagepara leer la ruta absoluta que viene de__image__.Claude Code: use la herramienta
Readpara leer la misma ruta.Todas las imágenes se guardan en
reports/plots/YYYYmmdd/(por fecha, para no acumularlas), nombre de archivo工具名_<主列名或all>_YYYYmmdd_HHMMSS_fff.png, fuente para chino Microsoft YaHei/SimHei (si falta, se pasa a inglés y se indica dentro del gráfico), dpi=150; el directorio se puede limpiar en cualquier momento (no afecta a ningún cálculo).
Declaración de seguridad
Solo se analizan archivos que tú proporcionas; se rechazan rutas UNC/NUL; no se sube nada a la red.
Aviso de trust en las rutas: la herramienta no valida el origen de archivos (lee lo que le pasas tal cual); no devuelvas rutas que no sean de fiar; guarda datos reales fuera del directorio del proyecto.
Protección con datos: rechaza >50MB; para 5–50MB primero se estima número de filas/memoria y si supera se rechaza; hay protección de la expansión zip bomb y ante rangos de fecha extraños; salida atípica truncada con un tope para que la entrada maliciosa no lo bloquee.
Pruebas y aceptación
& .\.venv\Scripts\python.exe -m pytest tests\ -qLos datos de prueba se obtienen con
tests/make_fixtures.pycon semilla fija y se guardan; los números clave se comprueban con una calculadora independiente común (statistics.mean / tabla de valores esperados), y se prohíbe la circularidad en la verificación.Ciclo de aceptación (desde 2026-08-26 en modo «IA generada»): pytest correcto + dos tipos de datos probados y comparados (el stdout real se queda documento en el registro de aceptación) → commit + actualización de PROGRESS; los usuarios conservan el derecho a auditarlo en cualquier momento.
Línea base: 223 pytest, cobertura de módulos 82–96%, ruff que pasa, resumen correcto del protocolo stdio.
Nota técnica (mcp 2.x)
Dependencia bloqueada en mcp==2.1.0: mcp.server.fastmcp.FastMCP ha sido reemplazado por mcp.server.mcpserver.MCPServer (API compatible, add_tool es compatible; el decorador tool; list_tools/call_tool/run_stdio_async son async).
Documentación
docs/clients.md—— configuración de acceso para cada cliente (Claude Code/Cursor/VSCode/Codex/Hermes/DSH)docs/SPEC.md—— protocolo y criterios estadísticos (estructura de contenido, protocolo numérico, protocolo de imagen, comportamiento)docs/design/—— diseño de interfaz de cada herramienta (parámetros, límites, esquema JSON, método de validación; manual de uso para agentes y desarrolladores)docs/example_report.md—— informe de ejemplo del esquema auto_analysis A (forma de demostración anticuerpo)
Estructura de directorios
statlab_mcp/ # server.py(只注册工具+to_jsonable)+ tools/<组>_<工具>.py
docs/ # SPEC.md(协议与统计口径)、design/(各工具接口设计文档)、clients.md(接入配置)
samples/ # 入库样例数据 + 生成脚本
tests/ # pytest + fixtures 生成脚本
data/ # 使用者亲手造的测试数据(gitignore,不入库)
reports/plots/ # 图片输出(gitignore,按日期归档可随时清理)Licencia
MIT (Copyright © 2026 Zhou Xiangyu).
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides powerful data analysis capabilities for AI systems with functions for data import/export, SQL querying, statistical analysis, and data processing.11
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to perform statistical process control calculations using validated, deterministic tools such as control charts, capability analysis, and tolerance intervals.3MIT
- FlicenseAqualityDmaintenanceProvides comprehensive data analysis utilities including statistical functions, probability distributions, and data processing tools through natural language.81
- AlicenseNot gradedqualityBmaintenanceA statistical analysis MCP server offering 30 tools for descriptive statistics, hypothesis tests, regression, and time series, all returning Markdown reports with automatic interpretations to enable AI agents to perform comprehensive data analysis.MIT
Related MCP Connectors
The statistical analyst in your AI chat — validated, citable, re-runnable analysis of your data.
Precision math engine for AI agents. 203 exact methods. Zero hallucination.
Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/good-boy4069/statlab-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server