Assert
The Assert MCP server lets AI coding agents generate, execute, and inspect end-to-end (E2E) browser tests.
Generate tests (
assert_generate): Describe a user flow in plain English with a starting URL to produce a ready-to-run test scenario in Assert Markdown format. Optionally save it to your project for reuse.Run tests (
assert_run): Execute a saved scenario by ID or provide ad-hoc Markdown directly. Runs are asynchronous and return arun_idfor polling. Supports idempotency via a client-suppliedrequest_id.Inspect results (
assert_status): Poll a run for its status and retrieve step-level pass/fail results, error messages, and screenshot URLs for failed steps.List saved scenarios (
assert_list): Browse all scenarios visible to your API key, with pagination and optional project ID filtering — useful for auditing existing coverage before generating new tests.
@assert-click/mcp
MCP server for Assert — lets your AI coding agent generate, run, and inspect E2E tests without leaving the chat.
Describe a user flow in plain English. Assert generates a Playwright test, executes it in a real browser, and returns step-level results and failure screenshots — all from a single tool call in Cursor, Claude, Windsurf, or any MCP-compatible agent.
Sign up free at assert.click to get your API key and project ID before using this package.
What your agent can do
Generate — describe a flow, get back a Markdown scenario ready to save and run
Run — execute a saved scenario or ad-hoc Markdown against a real Chromium browser
Inspect — fetch step-level pass/fail, error messages, and failure screenshot URLs
List — browse saved scenarios visible to the API key
Related MCP server: RunAutomation MCP Server
Requirements
Node.js
>=18.17A project-scoped Assert key — get one at assert.click
Setup
1. Create assert.config.json in your repo:
{
"projectApiKey": "assert_project_key_here",
"projectId": "project_123"
}2. Add the MCP server to your agent config:
{
"mcpServers": {
"assert": {
"command": "npx",
"args": ["-y", "@assert-click/mcp"],
"env": {
"ASSERT_CONFIG": "/absolute/path/to/assert.config.json"
}
}
}
}That's it. Your agent now has access to all four Assert tools.
Private URLs
Targets such as localhost, 127.0.0.1, and LAN or VPN IP addresses are blocked by default.
Use a public URL unless the machine executing the Assert run is intentionally configured to allow private targets with:
ALLOW_PRIVATE_TARGETS=trueSet that on the machine or process running Assert. Do not put it in assert.config.json.
Environment variables
ASSERT_API_KEY: API key (alternative to storing it inassert.config.json)ASSERT_PROJECT_ID: optional default project IDASSERT_CONFIG: optional path to a config file or directory
Config files
The MCP server will look for these files from the current directory upward:
assert.config.jsonassert.config.local.json
assert.config.local.json is merged on top of assert.config.json.
If you prefer env-based secrets instead of committing the key:
{
"projectApiKeyEnv": "ASSERT_API_KEY",
"projectId": "project_123"
}Tools
assert_generate
Generate a Markdown scenario from a plain-English description.
Input:
description: string— what the user should be able to dourl: string— the starting URLproject_id?: stringsave?: boolean— save to the project (default: false)
Returns:
{
"scenario_id": "scenario_123",
"markdown": "URL: https://example.com/login\nSCENARIO: Login\nPROCESS:\n - Fill \"email\" with \"user@example.com\"\nEXPECT: Dashboard",
"saved": true
}assert_run
Execute a saved scenario or ad-hoc Markdown in a real browser.
Input:
scenario_id?: stringmarkdown?: stringproject_id?: stringrequest_id?: string
Exactly one of scenario_id or markdown must be provided.
Returns:
{
"run_id": "run_123",
"status": "queued",
"estimated_duration_seconds": null
}assert_status
Fetch step-level results for a run.
Input:
run_id: string
Returns:
{
"run_id": "run_123",
"status": "passed",
"duration_ms": 4200,
"steps": [
{
"description": "Fill email",
"status": "passed",
"error": null,
"screenshot_url": null
}
],
"failure_summary": null,
"full_log_url": null
}assert_list
List saved scenarios visible to the API key.
Input:
project_id?: stringcursor?: stringlimit?: number
project_id is currently reserved for future filtering support. The current API lists all scenarios visible to the API key.
Returns:
{
"scenarios": [
{
"id": "scenario_123",
"name": "Login flow",
"project_id": null,
"last_run_status": "passed",
"last_run_at": "2026-03-31T10:00:00.000Z",
"url": "https://example.com/login"
}
],
"next_cursor": null
}Errors
Errors are returned as structured JSON:
{
"error": {
"code": "INVALID_API_KEY",
"message": "The ASSERT_API_KEY is invalid or missing.",
"field": null
}
}Common codes:
INVALID_API_KEYSCENARIO_NOT_FOUNDRUN_NOT_FOUNDVALIDATION_ERRORUPSTREAM_ERROR
License
MIT
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
- Alicense-qualityCmaintenanceEnables automated end-to-end testing powered by Playwright where test cases are defined in natural language and executed by AI. Uses lightweight snapshot analysis with vision mode fallback for sophisticated testing scenarios.Last updated3Apache 2.0
- Flicense-qualityCmaintenanceEnables AI assistants to execute browser automation, perform QA tasks, and generate test code through natural language commands using Playwright.Last updated5
- Flicense-qualityDmaintenanceEnables AI agents to run reusable Playwright test fixtures against live deployments, providing structured test results, screenshots, and assertions.Last updated
- Alicense-qualityBmaintenanceEnables AI agents to drive Playwright-based browser automation for UI testing, returning JSON/HTML reports with screenshots without server-side LLM or test scripts.Last updatedMIT
Related MCP Connectors
AI QA tester — real browsers scan sites for bugs, SEO, perf, and accessibility issues via chat.
Browser-backed QA with evidence and fix-ready reports for coding agents.
BuildPulse CI test analytics for AI agents — flaky tests, coverage, and CI run history.
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/Pixel-Funnel/assert-click-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server