r-stats-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@r-stats-mcp Perform a t-test on the built-in iris dataset comparing petal length between species."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
r-stats-mcp
An MCP server that gives an LLM the whole of R's statistical toolkit — hypothesis tests, regression, psychometrics, survival analysis, time series and plots — over a persistent R session.
繁體中文說明請見 README.zh-TW.md。
What makes it different
One R session, kept alive. Load a dataset once and every later tool call sees it. Fitted models are saved back into that session under a name, so you can fit a model, diagnose it, compare it against another, and then run arbitrary R on it — all without re-reading the data.
Results written for a reader, not a parser. Tools return formatted markdown tables rather than raw JSON: p-values as <.001, effect sizes with magnitude labels, confidence intervals already assembled. When an assumption is violated the output says what to do about it — a significant Levene's test points you at Welch, sparse expected counts bring in Fisher's exact test automatically.
No dead ends. 32 structured tools cover the common ground, and r_run executes arbitrary R in the same session for everything else.
You: Load survey.csv and check whether the two groups differ on score.
data_load(path="survey.csv", name="df")
data_inspect(data="df")
data_transform(data="df", to_factor=["group"])
check_assumptions(data="df", variables=["score"], group="group")
test_ttest(data="df", y="score", group="group", nonparametric=true)Related MCP server: StatTools
Requirements
Version | Notes | |
R | ≥ 4.0 | Must be on |
Python | ≥ 3.12 | Managed by uv |
uv | any |
Required R packages: jsonlite and evaluate. Everything else is needed only by the tools that use it, and each tool tells you exactly what to install when something is missing.
install.packages(c("jsonlite", "evaluate"))For full coverage of every tool:
install.packages(c(
"ggplot2", "ragg", "corrplot", # plotting
"car", "emmeans", "rstatix", # ANOVA, post-hoc, VIF
"psych", "GPArotation", "lavaan", # scales, factor analysis, SEM
"lme4", "lmerTest", # mixed models
"survival", "forecast", "tseries", # survival, time series
"mgcv", "MASS", "nnet", # GAM, ordinal, multinomial
"haven", "readxl", "openxlsx", # SPSS/Stata/Excel
"sandwich", "lmtest" # robust standard errors
))Install
Claude Code
claude mcp add r-stats -- uvx --from git+https://github.com/Ian3738/r-stats-mcp r-stats-mcpClaude Desktop
Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"r-stats": {
"command": "uvx",
"args": ["--from", "git+https://github.com/Ian3738/r-stats-mcp", "r-stats-mcp"]
}
}
}If the client cannot find uvx, give the absolute path (which uvx).
From a clone
git clone https://github.com/Ian3738/r-stats-mcp
cd r-stats-mcp
uv sync
claude mcp add r-stats -- "$(pwd)/run-server.sh"Configuration
Variable | Default | Purpose |
|
| Path to the R executable |
| Startup directory (home if | Where relative paths in |
|
| Default per-call timeout in seconds |
Verify the setup by asking the model to call r_session_info.
Tools
Session and code
Tool | Purpose |
| Execute arbitrary R code; returns console output and plots |
| Install packages from CRAN |
| R version, platform, which statistics packages are available |
Data
Tool | Purpose |
| CSV, TSV, Excel, SPSS, Stata, SAS, RDS, RData, JSON, Parquet |
| Datasets bundled with R or an installed package |
| Datasets and fitted models currently in the session |
| Drop objects between analyses, keeping named ones |
| Types, missing counts, distinct counts, first rows |
| Filter, derive, recode, factor conversion, sort, long/wide reshape |
| Write out as CSV, TSV, Excel or RDS |
Descriptives and assumptions
Tool | Purpose |
| n, mean, SD, SE, CI, median, quartiles, skew, kurtosis — by group, and survey-weighted |
| Frequency tables and cross-tabulations, weighted or unweighted |
| Normality, homogeneity of variance, outliers, VIF, residual diagnostics |
Complex surveys
Large-scale assessments (TIMSS, PIRLS, PISA, ICILS) need two corrections that ordinary tools skip: replicate weights for clustered sampling, and plausible values for latent ability. Omitting either understates the standard error — on TIMSS 2023 Taiwan, ignoring the weights alone shifts the mean by 4.1 points, more than its own standard error.
Tool | Purpose |
| Means with replicate-weight standard errors and plausible-value pooling |
| Weighted regression with the same corrections, plus standardised betas |
| Correlations with design-correct standard errors |
JK2 (TIMSS, PIRLS), JK1, BRR and Fay (PISA) are supported. Give either
jkzone + jkrep to have JK2 replicates built, or replicate_weights to use
columns the study already ships. Achievement scores go in as plausible values —
pv_prefix="BSMMAT" (TIMSS style) or pv_pattern="PV{i}MATH" (PISA style) —
and the output reports how much of the standard error is sampling versus
measurement.
Hypothesis tests
Tool | Purpose |
| One-sample, independent and paired t-tests, with Levene, Cohen's d and rank-based equivalents |
| One-way, factorial, ANCOVA, repeated-measures and mixed designs, with effect sizes and post-hoc comparisons |
| Chi-square independence and goodness-of-fit, Fisher, McNemar, Cramér's V, odds ratios |
| One-sample and multi-group proportion tests, including the exact binomial |
| Pearson, Spearman, Kendall; partial correlations; multiple-comparison adjustment |
Regression and models
Tool | Purpose |
| Linear, logistic, Poisson, negative binomial, ordinal, multinomial, mixed-effects, GAM |
| Residual normality, heteroscedasticity, autocorrelation, VIF, influential cases |
| AIC, BIC, log-likelihood, ΔAIC, plus nested-model tests |
| Estimated marginal means, or predictions on new data |
Scales and questionnaires
Tool | Purpose |
| Cronbach's α, McDonald's ω, item-total correlations, α-if-dropped |
| EFA and PCA with KMO, Bartlett, parallel analysis, rotated loadings, scree plot |
| lavaan CFA / SEM / path / growth models with fit indices, CR and AVE |
| Bootstrap confidence intervals for indirect effects, multiple mediators supported |
| Interaction models with ΔR², simple slopes and an interaction plot |
Survival and time series
Tool | Purpose |
| Kaplan-Meier with log-rank, Cox regression with the proportional-hazards test |
| Stationarity tests, STL decomposition, automatic ARIMA/ETS, forecasts |
Plotting
Tool | Purpose |
| ggplot2 histogram, density, box, violin, scatter, line, bar, Q-Q, correlation heatmap |
Examples
Regression with model comparison
regression(data="df", dv="score", predictors=["age","sex","group"], save_as="full")
regression(data="df", dv="score", predictors=["age"], save_as="base")
model_compare(models=["base","full"])
model_diagnostics(model="full")Complex survey analysis (TIMSS)
data_load(path="bsgtwnm8.sav", name="twn")
survey_mean(data="twn", pv_prefix="BSMMAT", weight="TOTWGT",
jkzone="JKZONE", jkrep="JKREP", by="ITSEX")
survey_regression(data="twn", pv_prefix="BSMMAT", predictors=["BSBGHER","BSBGSCM"],
weight="TOTWGT", jkzone="JKZONE", jkrep="JKREP")Scale validation
reliability(data="df", items=["q1",...,"q10"], reverse=["q3","q7"], scale_max=5)
factor_analysis(data="df", variables=["q1",...,"q10"])
sem(data="df", type="cfa", model="anxiety =~ q1 + q2 + q3\ndepression =~ q4 + q5 + q6")Repeated measures
data_transform(data="df", reshape={
"direction": "long", "value_cols": ["t1","t2","t3"],
"id_cols": ["id"], "names_to": "time", "values_to": "score"
})
test_anova(data="df", dv="score", within=["time"], id="id", posthoc="bonferroni")Survival
survival_analysis(data="df", time="days", event="died", group="treatment",
type="km", times_of_interest=[180, 365])
survival_analysis(data="df", time="days", event="died",
covariates=["age","sex","stage"], type="cox")How it works
MCP client ──stdio/JSON-RPC──▶ Python server ──NDJSON over pipes──▶ Rscript worker
(tool schemas) (.GlobalEnv)Transport. A long-lived Rscript process reads newline-delimited JSON requests and writes sentinel-delimited JSON responses. Plots are captured with the evaluate package — the same machinery knitr uses — so base graphics, ggplot2 and lattice all work, and are returned as inline PNGs.
Namespace hygiene. User objects live in .GlobalEnv; the server's own machinery lives in a separate .rmcp_sys environment. data_list and r_run therefore see only your data and models.
Timeouts. Two layers: R enforces its own limit with setTimeLimit(), and Python applies a hard timeout on the pipe. If the session has to be restarted, the tool says so explicitly rather than silently losing your data.
Failure messages are actionable. Passing a three-level factor to a t-test does not produce a stack trace — it tells you the levels it found and points you at test_anova.
Development
uv sync
uv run python -c "
import asyncio
from r_stats_mcp.server import server
print(len(asyncio.run(server.list_tools())), 'tools')
"Adding a statistical tool means two edits: an R helper in src/r_stats_mcp/R/ returning list(md=, plots=), and a decorated function in server.py describing its parameters. The R files are sourced in filename order at worker startup.
src/r_stats_mcp/
├── server.py MCP tool definitions and schemas
├── session.py persistent R subprocess, transport, timeouts
└── R/
├── worker.R protocol loop, plot capture
├── 00-util.R markdown tables, formatting, session objects
├── 10-data.R loading, inspection, reshaping
├── 20-descriptive.R descriptives, frequencies, assumptions
├── 30-htest.R t-tests, ANOVA, categorical, correlation
├── 40-regression.R regression family, diagnostics, comparison
├── 50-psychometrics.R reliability, factor analysis, SEM, mediation
├── 60-survival-ts.R survival analysis, time series
├── 70-viz.R ggplot2 charts
└── 80-survey.R replicate weights, plausible valuesLicense
MIT — see LICENSE.
Available Tools
33 toolscheck_assumptionsA
Check the assumptions behind parametric tests. On raw data: normality (Shapiro-Wilk, Kolmogorov-Smirnov, skew/kurtosis), homogeneity of variance across a group (Levene, Bartlett), outliers (z-scores and Tukey fences) and highly correlated variable pairs, plus Q-Q plots. On a fitted model (pass model instead of variables): residual normality, Breusch-Pagan heteroscedasticity, Durbin-Watson independence, VIF, and the standard four-panel diagnostic plot.
Inputs: data, group, model, plots, +4 more.
correlationA
Correlations between numeric variables: a full matrix plus per-pair tests with n, r, p, confidence intervals and a magnitude label. Supports Pearson, Spearman and Kendall, multiple-comparison adjustment, and partial correlations - pass control to residualise one or more variables out of every pair first.
Inputs: data (required), plots, adjust, digits, +5 more.
data_builtinA
Load a dataset that ships with R or with an installed package (mtcars, iris, ToothGrowth, sleepstudy from lme4, bfi from psych, lung from survival, HolzingerSwineford1939 from lavaan, ...). Useful for demonstrating a method or checking that an analysis works before running it on real data.
Inputs: dataset (required), name, package.
data_exportB
Write a dataset from the session to disk as CSV, TSV, Excel or RDS.
Inputs: data (required), path (required), format.
data_inspectA
Inspect a dataset: dimensions, per-column type, missing counts, distinct counts, example values, and the first rows. Run this before choosing an analysis - it tells you which columns are numeric versus factors, which is what determines whether a test will work.
Inputs: data (required), n, variables.
data_listA
List the datasets and other objects (fitted models, vectors) currently in the R session, with their dimensions.
Inputs: no named parameters.
data_loadA
Load a data file into the session under a name. Supports CSV, TSV, Excel (.xlsx/.xls), SPSS (.sav), Stata (.dta), SAS (.sas7bdat), RDS, RData, JSON and Parquet; the format is detected from the extension. Returns the dimensions and a per-column summary of types, missing values and example values. The dataset is then available to every other tool as data="<name>".
Inputs: path (required), sep, name, skip, +7 more.
data_transformA
Clean and reshape a dataset. Operations run in a fixed order: filter, mutate, to_numeric, recode, to_factor, factor_levels, select, drop, rename, arrange, drop_na, distinct, slice_head, reshape. Writes back to the same name unless save_as is given.
Converting grouping variables to factors is the most common prerequisite for the test tools: to_factor=['group']. Ordered factors for an ordinal outcome need factor_levels={'severity': ['low','medium','high']}.
Inputs: data (required), drop, filter, mutate, +12 more.
describeA
Descriptive statistics: n, missing, mean, SD, SE, confidence interval for the mean, median, min/max, quartiles, IQR, skewness and kurtosis - optionally split by one or more grouping variables. Categorical columns get a level count and modal category instead.
Inputs: data (required), digits, weight, group_by, +3 more.
factor_analysisA
Exploratory factor analysis or principal component analysis. Reports KMO sampling adequacy, Bartlett's test of sphericity, the number of factors suggested by parallel analysis and by the Kaiser criterion, the rotated loading matrix with communalities, variance accounted for, a scree plot, and a list of items that cross-load or fail to load. Leave n_factors empty to use the parallel-analysis suggestion.
Inputs: data (required), type, plots, cutoff, +6 more.
frequency_tableA
Frequency tables for categorical variables, or a cross-tabulation with counts and row percentages when by is given. Use test_categorical afterwards to test the association.
Inputs: data (required), variables (required), by, digits, +3 more.
mediationA
Mediation analysis: does X affect Y through M? Builds and fits the path model, and reports the a, b, direct (c') and indirect paths with bootstrap confidence intervals - the standard Preacher-Hayes evidence for mediation. Supports several mediators at once (each gets its own indirect effect plus a total) and covariates.
Inputs: m (required), x (required), y (required), data (required), +5 more.
model_compareA
Compare two or more fitted models on AIC, BIC, log-likelihood and delta AIC, plus a likelihood-ratio or F test when the models are nested. Fit the models first with regression or test_anova, giving each a save_as name.
Inputs: models (required), test, digits.
model_diagnosticsB
Full diagnostic report for a fitted model: residual normality, Breusch-Pagan test for heteroscedasticity, Durbin-Watson test for independence, VIF for multicollinearity, the most influential cases by Cook's distance and leverage, and the four standard diagnostic plots.
Inputs: model (required), plots, digits, influence_n.
model_predictA
Predictions from a fitted model. Pass at for estimated marginal means at chosen predictor values (e.g. {'dose': [0, 10, 20]}), holding everything else at its average - this is the usual way to describe what a model implies. Pass newdata for predictions on specific new cases, or neither for fitted values on the original data.
Inputs: model (required), at, type, digits, +2 more.
moderationA
Moderation analysis: does the effect of X on Y depend on W? Fits the interaction model with mean-centred predictors, reports the R-squared change contributed by the interaction, and gives simple slopes at -1 SD / mean / +1 SD of a continuous moderator (or within each level of a categorical one), plus an interaction plot.
Inputs: x (required), y (required), data (required), moderator (required), +6 more.
plotA
Draw a publication-style ggplot2 chart and return it as an image. Types: histogram, density, box, violin, scatter, line, bar, qq, heatmap.
x is the main variable (the grouping variable for box/violin plots), y the outcome, group adds colour, facet splits into panels. For scatter plots set smooth=true to overlay a fitted line; for bar plots giving y shows group means (with error_bars=true for standard errors) instead of counts. For anything more specific, write ggplot2 code in r_run.
Inputs: data (required), x, y, bins, +19 more.
regressionA
Fit a regression model and report coefficients with confidence intervals, model fit and diagnostics. Supported type values:
linear: OLS, with optional standardised betas and robust (HC3) standard errors
logistic: binary outcome, reported with odds ratios and a classification table
poisson / negbin: count outcomes, reported with incidence rate ratios
ordinal: ordered outcome (proportional odds); order the levels with data_transform first
multinomial: unordered outcome with more than two categories
mixed / mixed_logistic: multilevel models; give the random part in
random, e.g. random='(1 | school)'gam: smooth terms, written in the formula as s(x)
Specify the model either as formula ('y ~ x1 + x2 + x1:x2') or as dv plus predictors. The fit is saved in the session for model_diagnostics, model_compare and model_predict.
Inputs: data (required), dv, link, type, +11 more.
reliabilityA
Internal-consistency reliability for a set of scale items: Cronbach's alpha with its confidence interval, McDonald's omega, the average inter-item correlation, and per-item statistics including the corrected item-total correlation and alpha-if-dropped. Flags items that weaken the scale. Use reverse (with scale_max) for reverse-worded items.
Inputs: data (required), items (required), digits, reverse, +2 more.
r_install_packagesA
Install R packages from CRAN into the user's R library. Use when a tool reports that a package is missing. Installation can take several minutes for packages that compile.
Inputs: packages (required), force.
r_runA
Run arbitrary R code in the persistent session and return the console output plus any plots. This is the escape hatch for anything the structured tools do not cover: custom models, package-specific functions, data wrangling, or follow-up on a saved model (e.g. summary(anova_fit1)). Objects created here persist and are visible to the other tools; a data frame you create is usable as data="<name>" everywhere.
Inputs: code (required), timeout, plot_width, plot_height.
r_session_infoA
Report the R version, platform, working directory and which key statistics packages are available.
Inputs: no named parameters.
semA
Confirmatory factor analysis or structural equation modelling with lavaan. Give the model in lavaan syntax:
=~ defines a latent factor ('anxiety =~ q1 + q2 + q3')
~ a regression ('outcome ~ anxiety + age')
~~ a covariance
:= a derived quantity
Reports chi-square, CFI, TLI, RMSEA with its interval, SRMR, standardised loadings and path estimates, and composite reliability / AVE per factor. Set modification_indices=true to see which fixed parameters would most improve fit.
Inputs: data (required), model (required), type, group, +8 more.
session_clearA
Remove datasets and models from the session, freeing memory and preventing one analysis from leaking into the next. Use it when switching to an unrelated topic. Pass keep to hold on to named objects. Safer than clearing by hand: it never touches the server's own internal bindings.
Inputs: keep.
survey_correlationA
Correlations for complex survey data, with replicate-weight standard errors and plausible-value pooling. Correlates each column in x against either variables or a plausible-value set.
Give the design one of two ways: replicate_weights (existing columns — either a list of names or a prefix such as 'W_FSTURWT' that matches W_FSTURWT1..80), or jkzone + jkrep so JK2 replicates are built for you (TIMSS/PIRLS ship JKZONE and JKREP). method defaults to JK2 for constructed replicates and Fay for 60+ supplied columns, which is what PISA needs.
Inputs: x (required), data (required), weight (required), fay, +9 more.
survey_meanA
Means for complex survey data, with design-correct standard errors. Use this instead of describe whenever the data comes from a clustered or stratified sample — the ordinary standard error assumes a simple random sample and can be less than half the true value.
For achievement scores use plausible values, never a single score: pv_prefix='BSMMAT' expands to BSMMAT01..05 (TIMSS style), or pv_pattern='PV{i}MATH' expands to PV1MATH.. (PISA style). The output reports how much of the standard error comes from sampling versus measurement.
Give the design one of two ways: replicate_weights (existing columns — either a list of names or a prefix such as 'W_FSTURWT' that matches W_FSTURWT1..80), or jkzone + jkrep so JK2 replicates are built for you (TIMSS/PIRLS ship JKZONE and JKREP). method defaults to JK2 for constructed replicates and Fay for 60+ supplied columns, which is what PISA needs.
Inputs: data (required), weight (required), by, fay, +9 more.
survey_regressionA
Weighted regression for complex survey data, with replicate-weight standard errors and plausible-value pooling (Rubin's rules, Barnard-Rubin degrees of freedom). Use this instead of regression for TIMSS/PISA-style data: passing a single plausible value to an ordinary regression ignores measurement uncertainty, which is often 10-20% of the total.
For achievement scores use plausible values, never a single score: pv_prefix='BSMMAT' expands to BSMMAT01..05 (TIMSS style), or pv_pattern='PV{i}MATH' expands to PV1MATH.. (PISA style). The output reports how much of the standard error comes from sampling versus measurement.
Give the design one of two ways: replicate_weights (existing columns — either a list of names or a prefix such as 'W_FSTURWT' that matches W_FSTURWT1..80), or jkzone + jkrep so JK2 replicates are built for you (TIMSS/PIRLS ship JKZONE and JKREP). method defaults to JK2 for constructed replicates and Fay for 60+ supplied columns, which is what PISA needs.
Inputs: data (required), weight (required), dv, fay, +10 more.
survival_analysisA
Survival / time-to-event analysis. type='km' gives Kaplan-Meier estimates with median survival, a survival curve, and a log-rank test when group is supplied; times_of_interest adds survival probabilities at chosen follow-up times. type='cox' fits a Cox proportional hazards model with hazard ratios, concordance, and the Schoenfeld test of the proportional-hazards assumption. event must be coded 1 = event occurred, 0 = censored.
Inputs: data (required), time (required), event (required), type, +8 more.
test_anovaA
ANOVA in all its usual forms, with effect sizes (eta squared, partial eta squared, omega squared), Levene's test and post-hoc comparisons via estimated marginal means.
one-way / factorial:
dvplusbetween=['factor1','factor2']ANCOVA: add
covariates=['age']repeated measures:
within=['time']plusid='subject'(data must be in long format)mixed: both
betweenandwithin, plusid
Set nonparametric=true for Kruskal-Wallis (between) or Friedman (within) with post-hoc tests, and welch=true for a Welch ANOVA when variances differ. The fitted model is saved for use with model_diagnostics.
Inputs: dv (required), data (required), id, type, +9 more.
test_categoricalA
Tests for categorical data. With x and y: a chi-square test of independence with the contingency table, expected counts, standardised residuals, Cramer's V, and - for 2x2 tables - the odds ratio, risk ratio and phi. Fisher's exact test is added automatically when expected counts are too small. With x only: a goodness-of-fit test against expected_probs (uniform by default). Set test='mcnemar' for paired binary data.
Inputs: x (required), data (required), y, test, +4 more.
test_proportionA
Test proportions. One sample: a binary column (or raw successes/n) against a hypothesised proportion, with both the normal approximation and the exact binomial test. Two or more samples: pass group to compare the proportion across groups.
Inputs: n, p, x, data, +4 more.
test_ttestA
Compare means with a t-test, reporting group descriptives, Levene's test, both the Student and Welch results, the mean difference with its confidence interval, and Cohen's d / Hedges' g with a confidence interval.
Three designs:
one sample: give
yandmu(the test value)two independent groups: give
yandgroup(a 2-level factor)paired: give
yandy2(the two measurement columns) withpaired=true
Set nonparametric=true to add the Mann-Whitney U / Wilcoxon signed-rank equivalent with a rank-based effect size.
Inputs: y (required), data (required), mu, y2, +8 more.
time_seriesA
Time series analysis and forecasting. Reports stationarity (ADF and KPSS), STL decomposition with trend and seasonal strength, an automatically selected ARIMA or ETS model, in-sample accuracy, a Ljung-Box test on the residuals, and a forecast with prediction intervals - plus forecast, decomposition and ACF/PACF plots. Set frequency to the number of observations per cycle (12 for monthly, 4 for quarterly, 7 for daily data with a weekly cycle).
Inputs: data (required), value (required), h, time, +7 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 33 tools
Most tools are clearly separated by domain (data_, test_, model_, survey_), and the survey_* tools are well distinguished by their design-corrected standard errors. However, check_assumptions and model_diagnostics overlap heavily when given a fitted model: both report residual normality, Breusch-Pagan, Durbin-Watson, VIF and the diagnostic plots, which could lead an agent to pick the wrong tool.
The set uses snake_case throughout and useful prefixes (data_, test_, model_, survey_) give a predictable pattern. It is not perfect: r_session_info vs session_clear splits the r_/session_ prefix, and a few commands are bare nouns (describe, correlation, sem, plot) rather than verb_noun forms.
33 tools is well above the 25+ threshold and will burden an agent with a very large action space. Each tool is individually defensible for a broad statistics server, but the set could be consolidated—for example, survey_mean, survey_regression and survey_correlation share a lot of design specification boilerplate.
The surface is remarkably complete: data ingestion/inspection/transform/export, descriptives, common tests, regression with diagnostics/comparison/prediction, survey methods, psychometrics, SEM, mediation/moderation, survival and time series are all covered. The r_run escape hatch also prevents dead ends for any analysis the structured tools do not anticipate.
Maintenance
Related MCP Connectors
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Educational MCP server with 17 math/stats tools, visualizations, and persistent workspace
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseAqualityAmaintenanceAn MCP server that lets Large Language Models interact with Stata software to perform regression analysis and other statistical operations.41,278 PyPI275AGPL 3.0
- FlicenseNot gradedqualityDmaintenanceMCP server that lets AI agents discover and call R and Python statistical functions without writing code.-
- FlicenseAqualityDmaintenanceAn MCP server for dataset exploration and analysis, enabling LLM clients to perform summary, correlation, distribution, missing value analysis, data cleaning, and statistical tests directly on CSV files.3-
- AlicenseNot gradedqualityDmaintenanceMCP server that enables verified code execution with LLM reasoning using Recursive Language Models (RLM). It supports tasks like code generation, data analysis, and complex task decomposition.2MIT