A/B Test Sample Size Calculator MCP
An MCP server that provides tools for calculating A/B test sample sizes, estimating test duration, performing statistical significance tests (z-test, chi-square, Fisher exact), and checking peeking risks. It supports multiple variants, unequal splits, and connects via Streamable HTTP or local stdio.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://ab-test-sample-size-calculator-mcp.lipmichal.workers.dev/mcpWhat you can do with it
- Calculate sample size for two proportions with baseline and MDE
- Estimate test duration based on daily traffic and variant share
- Perform two-proportion z-test and chi-square significance tests
- Check false positive rate from peeking with stopping boundaries
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- ab-test-sample-size-calculator-mcp 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 5 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
5 advertised
calculate_sample_size — A/B test sample size calculator
Exact sample size per variant for an A/B test on a conversion rate (two independent proportions): baseline rate, minimum detectable effect (relative or absolute), alpha, power, one or two-sided, several variants with optional Bonferroni, and unequal allocation. Uses the pooled/unpooled normal formula (same as R power.prop.test) and also reports the figure Evan Miller's calculator gives, so the two can be reconciled.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"baseline_rate",
"mde"
],
"properties": {
"mde": {
"type": "number",
"description": "Minimum detectable effect. Relative by default (0.10 = a 10% lift); set mde_type \"absolute\" for percentage points as a proportion (0.01 = 1 point).",
"exclusiveMinimum": 0
},
"alpha": {
"type": "number",
"default": 0.05,
"description": "Significance level, default 0.05.",
"exclusiveMaximum": 0.5,
"exclusiveMinimum": 0
},
"power": {
"type": "number",
"default": 0.8,
"description": "Statistical power, default 0.80.",
"exclusiveMaximum": 1,
"exclusiveMinimum": 0.5
},
"sided": {
"enum": [
"two",
"one"
],
"type": "string",
"default": "two",
"description": "two-sided (default) or one-sided test."
},
"mde_type": {
"enum": [
"relative",
"absolute"
],
"type": "string",
"default": "relative",
"description": "relative (default) or absolute."
},
"variants": {
"type": "integer",
"default": 2,
"maximum": 20,
"minimum": 2,
"description": "Number of arms including control. 2 = A/B, 3 = A/B/C."
},
"bonferroni": {
"type": "boolean",
"default": false,
"description": "Split alpha across the variant-vs-control comparisons (Bonferroni)."
},
"baseline_rate": {
"type": "number",
"description": "Control conversion rate as a proportion, for example 0.042 for 4.2%.",
"exclusiveMaximum": 1,
"exclusiveMinimum": 0
},
"allocation_ratio": {
"type": "number",
"default": 1,
"maximum": 10,
"description": "Users in each variant per user in control. 1 = even split.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Sample size",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}estimate_test_duration — A/B test duration estimator
How many days an A/B test must run: from a known sample size per variant, or from baseline rate and MDE (computed as in calculate_sample_size), plus daily visitors and the share of traffic in the test. Returns exact days and the recommended whole weeks (to cover weekday effects).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"daily_visitors"
],
"properties": {
"mde": {
"type": "number",
"description": "Minimum detectable effect (relative by default).",
"exclusiveMinimum": 0
},
"alpha": {
"type": "number",
"default": 0.05,
"description": "Significance level, default 0.05.",
"exclusiveMaximum": 0.5,
"exclusiveMinimum": 0
},
"power": {
"type": "number",
"default": 0.8,
"exclusiveMaximum": 1,
"exclusiveMinimum": 0.5
},
"mde_type": {
"enum": [
"relative",
"absolute"
],
"type": "string",
"default": "relative"
},
"variants": {
"type": "integer",
"default": 2,
"maximum": 20,
"minimum": 2,
"description": "Number of arms including control."
},
"baseline_rate": {
"type": "number",
"description": "Control conversion rate, for computing the sample size.",
"exclusiveMaximum": 1,
"exclusiveMinimum": 0
},
"traffic_share": {
"type": "number",
"default": 1,
"maximum": 1,
"description": "Fraction of those visitors entered into the test, default 1.",
"exclusiveMinimum": 0
},
"daily_visitors": {
"type": "number",
"description": "Eligible visitors per day across the whole site or page.",
"exclusiveMinimum": 0
},
"sample_size_per_variant": {
"type": "integer",
"description": "Known users per arm. If omitted, give baseline_rate and mde.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}{
"title": "Test duration",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}test_ab_significance — A/B test significance calculator
Is an A/B test result statistically significant? From visitors and conversions per group: two-proportion z-test (pooled), one or two-sided p-value, Wald confidence interval for the difference, relative lift, Pearson chi-square with and without Yates correction (R prop.test), Fisher exact p for the same 2x2 table, and a sample ratio mismatch (SRM) check against the planned split.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"control_visitors",
"control_conversions",
"variant_visitors",
"variant_conversions"
],
"properties": {
"alpha": {
"type": "number",
"default": 0.05,
"description": "Significance level, default 0.05.",
"exclusiveMaximum": 0.5,
"exclusiveMinimum": 0
},
"alternative": {
"enum": [
"two-sided",
"greater",
"less"
],
"type": "string",
"default": "two-sided",
"description": "greater = variant converts better than control."
},
"expected_split": {
"type": "number",
"default": 0.5,
"description": "Planned share of traffic in control, for the SRM check. Default 0.5.",
"exclusiveMaximum": 1,
"exclusiveMinimum": 0
},
"control_visitors": {
"type": "integer",
"exclusiveMinimum": 0
},
"variant_visitors": {
"type": "integer",
"exclusiveMinimum": 0
},
"control_conversions": {
"type": "integer",
"minimum": 0
},
"variant_conversions": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
}{
"title": "Significance test",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}fisher_exact_test — Fisher exact and Fisher-Freeman-Halton test
Exact p-value for a contingency table of counts. 2x2: Fisher exact test (two-sided, greater or less, as R fisher.test). Larger r x c tables (for example 3 variants x converted/not, or 4 x 4 survey tables): Fisher-Freeman-Halton exact test by a network algorithm. Also returns Pearson chi-square and how many cells have expected counts below 5, so you can see when the chi-square approximation is unsafe.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"table"
],
"properties": {
"table": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0
},
"maxItems": 12,
"minItems": 2
},
"maxItems": 12,
"minItems": 2,
"description": "Rows of counts, for example [[12, 488], [25, 475]] (rows = groups, columns = outcomes)."
},
"alternative": {
"enum": [
"two-sided",
"greater",
"less"
],
"type": "string",
"default": "two-sided",
"description": "One-sided options apply to 2x2 only; greater = odds ratio above 1."
}
},
"additionalProperties": false
}{
"title": "Exact test",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}check_peeking_risk — A/B test peeking and sequential testing risk
What peeking does to an A/B test: the real false positive rate if you check a fixed-horizon test K times and stop at the first p < alpha (for example about 14% at 5 looks with alpha 0.05), and the Pocock and O'Brien-Fleming group sequential boundaries (z and nominal p per look) that keep the overall rate at alpha, for up to 10 equally spaced looks.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"looks"
],
"properties": {
"alpha": {
"type": "number",
"default": 0.05,
"description": "Significance level, default 0.05.",
"exclusiveMaximum": 0.5,
"exclusiveMinimum": 0
},
"looks": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many times the result is checked, including the final look. Equally spaced."
}
},
"additionalProperties": false
}{
"title": "Peeking risk",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 527 ms
- 95th percentile latency
- 527 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 527 ms · metadata changed · 5 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http a-b-test-sample-size-calculator-mcp https://ab-test-sample-size-calculator-mcp.lipmichal.workers.dev/mcpCodex
codex mcp add a-b-test-sample-size-calculator-mcp --url https://ab-test-sample-size-calculator-mcp.lipmichal.workers.dev/mcpCursor
{
"mcpServers": {
"a-b-test-sample-size-calculator-mcp": {
"url": "https://ab-test-sample-size-calculator-mcp.lipmichal.workers.dev/mcp"
}
}
}Cline
{
"mcpServers": {
"a-b-test-sample-size-calculator-mcp": {
"type": "streamableHttp",
"url": "https://ab-test-sample-size-calculator-mcp.lipmichal.workers.dev/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"a-b-test-sample-size-calculator-mcp": {
"type": "http",
"url": "https://ab-test-sample-size-calculator-mcp.lipmichal.workers.dev/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http a-b-test-sample-size-calculator-mcp https://ab-test-sample-size-calculator-mcp.lipmichal.workers.dev/mcpClaude Desktop
{
"mcpServers": {
"a-b-test-sample-size-calculator-mcp": {
"url": "https://ab-test-sample-size-calculator-mcp.lipmichal.workers.dev/mcp"
}
}
}Windsurf
{
"mcpServers": {
"a-b-test-sample-size-calculator-mcp": {
"serverUrl": "https://ab-test-sample-size-calculator-mcp.lipmichal.workers.dev/mcp"
}
}
}Let your agent find its tools
Find servers like A/B Test Sample Size Calculator MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.