crowd-test-mcp
crowd-test-mcp 🔥
The mob, on tap — an MCP server for crowd-test.
Ask Claude Desktop, Claude Code, Cursor, or any MCP client to unleash a crowd of AI virtual users — impatient shoppers, confused seniors, keyboard-only users, chaos monkeys — on your website. They browse it in real Chromium, file findings, and hand back a damage report with a survival grade (S–F).
"Send the mob at https://staging.myapp.com and tell me what to fix first."
That's the whole workflow now.
Install
pip install crowd-test-mcpAn LLM key is required in the server's environment: ANTHROPIC_API_KEY or
OPENAI_API_KEY.
Claude Code
claude mcp add crowd-test -e ANTHROPIC_API_KEY=sk-... -- crowd-test-mcpClaude Desktop / Cursor / anything MCP
{
"mcpServers": {
"crowd-test": {
"command": "crowd-test-mcp",
"env": { "ANTHROPIC_API_KEY": "sk-..." }
}
}
}Related MCP server: Prufa
Tools
Tool | What it does |
| Send the crowd at a URL. Pick personas, add a random |
| The ten built-in ringleaders and what each one catches. |
| Preview the random mob a given |
| Fetch the newest full markdown report from disk. |
The verification tribunal
Findings can be cross-examined by up to three independent harnesses before they count against the grade — a skeptical detective agent, a raw Playwright probe, and a Microsoft Webwright agent. Automation artifacts get disputed instead of panicking you. Details in the crowd-test README.
Deeper layers need one-time extras:
pip install crowd-test[probe] && playwright install chromium # verify="cross"
pip install git+https://github.com/microsoft/Webwright # verify="tribunal"Good to know
Runs take minutes, not seconds — every persona drives a real browser. Start with 2–3 personas; escalate to
mob=10when you mean it.Only test what you own. The mob is for your own staging and production sites, not other people's.
Reports default to
~/crowd-test-reports/<host>-<timestamp>/.
License
Available Tools
3 toolslist_personasA
List the built-in ringleader personas and what each one catches.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read-only operation (listing) and specifies that it covers built-in personas, which is useful behavioral context. However, it does not explicitly state non-destructiveness or any authentication needs. Still, it is clear and not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It directly states the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and the presence of an output schema, the description provides sufficient context for a simple listing tool. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, schema coverage is 100%. The description adds meaning by specifying the scope ('built-in ringleader personas') and the content ('what each one catches'), which is beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list', the resource 'built-in ringleader personas', and the additional information they provide ('what each one catches'). It effectively distinguishes from sibling tools like preview_mob and read_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not indicate when to use this tool vs alternatives, nor does it mention any prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_mobB
Preview the random mob members a given count/seed would generate.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It correctly implies a read-only preview operation, but it does not mention side effects, authentication needs, rate limits, or output format. More detail is needed for a complete behavioral picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without extraneous information. It is front-loaded and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate given the presence of an output schema (not shown), which likely details return values. However, it omits information about default behaviors (e.g., what happens when seed is null) and does not clarify the relationship between count and seed. Overall, it is minimally sufficient but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It mentions 'count/seed', linking them to the parameters, but does not explain what seed controls (e.g., randomness source) or the meaning of count beyond quantity. It adds basic semantic value but lacks detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Preview') and the resource ('random mob members'), and mentions the key parameters (count/seed). It distinguishes the tool from siblings like 'list_personas' and 'read_report' by focusing on a specific preview of mob generation. However, it could be more explicit about what 'mob members' refers to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no scenarios where it should or should not be used. It is a minimal statement of function without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_reportA
Return the newest crowd-test markdown report under a directory.
Defaults to ~/crowd-test-reports, where run_crowd_test writes.
| Name | Required | Description | Default |
|---|---|---|---|
| report_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It declares the tool returns the newest markdown report, which implies read-only behavior. However, it does not specify behavior when no reports exist or potential errors, but the simplicity of the tool limits gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences and 18 words. The main action is front-loaded in the first sentence, and the second sentence adds essential default context with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one optional parameter and an output schema (which defines return structure), the description is largely complete. It mentions the report type (markdown) and connects to run_crowd_test. A minor gap is lack of error handling details, but for a simple read tool this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'report_dir' is optional with default null. The description adds meaning by explaining it specifies 'under a directory' and defaults to '~/crowd-test-reports', which clarifies the parameter's role beyond the schema (which only shows type and default).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool returns the newest crowd-test markdown report under a directory, with a clear verb ('return') and resource ('newest crowd-test markdown report'). It distinguishes itself from sibling tools (list_personas, preview_mob) by focusing on reading a report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating the default directory and noting that run_crowd_test writes there, implying this tool is used to read those reports. However, it does not explicitly state when not to use it or provide alternatives, but the context is sufficient given simple siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
list_personas - First observed
preview_mob - First observed
read_report
TDQS
Scored across 3 tools
Each tool targets a distinct action: listing personas, previewing mob members, and reading reports. There is no overlap in functionality.
All tool names follow the verb_noun pattern consistently (list_personas, preview_mob, read_report).
With only 3 tools, the server is thin but appropriate for a focused utility that augments an external test runner. The count is slightly under but reasonable for the scope.
The tools cover listing, previewing, and reading reports, but there is no tool to execute the crowd test itself, which is a notable gap given the server's purpose.
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 Connectors
Browser-based QA for AI-built software. Test pages with real browsers via agents.
Deploy AI user personas to validate user journeys at scale. Find UX friction before real users do.
AI QA tester — real browsers scan sites for bugs, SEO, perf, and accessibility issues via chat.
A flock of AI users tests your deployed app and reports where real people get stuck, with fixes.
Related MCP Servers
- AlicenseAqualityAmaintenanceAI-powered exploratory QA agent. Explores web apps like a real user — 18 MCP tools for clicking, filling forms, and navigating. Automatically verifies that actions persist (fake deletes, failed edits). Runs 16 detection types including dead links, SEO, accessibility, and performance checks.292MIT
- AlicenseAqualityAmaintenancePoint your coding agent at a URL and get a real-browser QA audit: broken signup/login/checkout flows, JS console errors, missing analytics, consent + security headers, mobile tap targets, and accessibility — returned as machine-verified findings graded A-F.442Apache 2.0
- AlicenseAqualityDmaintenanceSimulates real users navigating your app and delivers qualitative UX feedback, including persona-driven testing, auto-friction detection, and WCAG accessibility audits.14121MIT
- AlicenseNot gradedqualityAmaintenance▎ Enables AI assistants to unleash a crowd of role-played virtual users — impatient shoppers, seniors, keyboard-only users, privacy hawks, chaos monkeys — on a website. Each persona browses in a real Chromium browser, files UX/QA findings in character, and the site receives a damage report with an S–F survival grade. Accusations can be cross-examined by up to three independent verification engines2MIT