MCP Interface Documentation
March 8, 2026 ยท View on GitHub
OpenTester exposes core project/case/template/execution operations through MCP.
Connection Information
OpenTester currently runs the MCP server with streamable-http transport.
Streamable HTTP (Current Runtime)
- Endpoint:
http://localhost:8001/mcp - Transport: Streamable HTTP
- Behavior: request/response over HTTP; may use streaming patterns depending on client/server support
STDIO (Not Currently Enabled)
STDIO transport is not enabled in the current implementation. The MCP server only supports Streamable HTTP transport at this time.
Future versions may add STDIO support for local process-based clients.
STDIO (Client Configuration Pattern)
For local clients that launch a process (for example Claude Desktop), use stdio server config:
{
"mcpServers": {
"opentester": {
"command": "opentester",
"args": ["mcp"]
}
}
}
Claude Code HTTP Configuration
Add MCP configuration in .claude/settings.json:
{
"mcpServers": {
"opentester": {
"url": "http://localhost:8001/mcp"
}
}
}
Tool Names and Parameters
Tool names below follow the current FastMCP function names from backend/opentester/mcp/server.py.
Project Management
| Tool | Parameters | Description |
|---|---|---|
list_projects | - | List all projects |
get_project | project_id | Get a project with cases |
create_project | name, target_type | Create a new project |
delete_project | project_id | Delete a project |
DSL and Case Management
| Tool | Parameters | Description |
|---|---|---|
validate_dsl | dsl_yaml | Validate DSL YAML and schema |
save_case | project_id, name, dsl_yaml, case_id (optional) | Create or update a case |
delete_case | project_id, case_id | Delete a case |
Execution
| Tool | Parameters | Description |
|---|---|---|
run_case | project_id, case_id | Start single-case execution via FastAPI bridge |
run_project | project_id, case_ids (optional) | Start executions for project cases |
stop_execution | execution_id | Stop a running execution |
get_execution_status | execution_id | Fetch execution status |
get_execution_log | execution_id | Fetch detailed results |
AI DOM Analysis (Web Testing)
| Tool | Parameters | Description |
|---|---|---|
request_dom_analysis | execution_id | Fetch DOM snapshot and context when execution is paused for AI |
submit_ai_selector | execution_id, selector, selector_type (optional), reasoning (optional) | Submit selector and resume paused execution |
list_paused_executions | - | List all executions waiting for AI selector input |
Template Management
| Tool | Parameters | Description |
|---|---|---|
list_templates | category (optional), target_type (optional), tag (optional) | List templates |
get_template | template_id | Get template details |
create_template | name, dsl_template, description (optional), target_type (optional), category (optional), tags (optional) | Create template |
update_template | template_id, mutable fields | Update template |
delete_template | template_id | Delete template |
instantiate_template | template_id, project_id, case_name, variables (optional) | Create case from template |
create_template_from_case | project_id, case_id, template_name, description (optional), category (optional), variable_mappings (optional) | Convert case to template |
Notes
run_case,run_project,stop_execution,get_execution_status, andget_execution_logcall FastAPI endpoints (for example/api/execution/run) so execution state is tracked in the shared execution manager.request_dom_analysis,submit_ai_selector, andlist_paused_executionsoperate directly through the execution manager/shared execution state, not via FastAPI HTTP bridge.- If FastAPI is not reachable, the FastAPI-bridged execution tools fail even if the MCP server itself is running.
- Web executor supports
ai_locatorflow: execution may enterpaused_waiting_for_ai, then resume aftersubmit_ai_selector.