OpenTester
MCP-First Testing Execution Infrastructure
OpenTester is a testing execution engine designed for AI coding tools (Claude Code, Cursor, OpenCode, etc.). It provides a unified DSL format and MCP interface, enabling Agents to generate, execute, and manage test cases, achieving an automated "code-test-fix" workflow.
Core Positioning
┌─────────────────────────────────────────┐
│ AI Agent (Claude Code / Cursor / ...) │
│ ├─ Generate DSL test cases │
│ ├─ Decide testing strategies │
│ └─ Analyze failure reasons │
├─────────────────────────────────────────┤
│ OpenTester (MCP Server) │
│ ├─ Validate DSL syntax │
│ ├─ Execute tests (CLI) │
│ ├─ Store cases/projects │
│ └─ Return structured results │
├─────────────────────────────────────────┤
│ Web UI (Auxiliary Observation Panel) │
│ ├─ View execution progress │
│ ├─ Debug cases (create/edit) │
│ └─ View history reports │
└─────────────────────────────────────────┘Design Principles:
Agent Intelligence: Test generation and failure analysis are handled by the Agent
OpenTester Execution: Focuses on DSL validation and test execution
MCP-First: All core features exposed through MCP
Web UI Auxiliary: Visual monitoring and debugging, not required
Installation
Option 1: Install from PyPI (Recommended)
pip install opentester
# Or with uv
uv pip install opentesterOption 2: Install from Source
# Clone repository
git clone https://github.com/kznr02/OpenTester.git
cd OpenTester
# Install backend
uv pip install ./backend
# Install frontend dependencies (optional)
cd frontend
npm installOption 3: Direct Run (Development)
cd backend
uv run opentester startQuick Start
Start Services
# Start both FastAPI + MCP (foreground mode with prefixed logs)
opentester start
# `--daemon` flag is accepted (currently still foreground lifecycle)
opentester start --daemon
# Start only API
opentester start --api
# Start only MCP
opentester start --mcp
# Custom ports
opentester start --api-port 8080 --mcp-port 8081
# Check status
opentester status
# Stop services
opentester stop
# Environment check
opentester doctorForeground Mode Log Output:
[API] INFO: Started server process [12345]
[API] INFO: Waiting for application startup.
[MCP] INFO: Started MCP server on port 8001
[API] INFO: Application startup complete.Configure Claude Code (Streamable HTTP)
Note: MCP supports both STDIO mode (for Claude Desktop) and Streamable HTTP mode (for remote connections).
Add MCP configuration in .claude/settings.json:
{
"mcpServers": {
"opentester": {
"url": "http://localhost:8001/mcp"
}
}
}Note: Claude Code's HTTP MCP support may be incomplete. We recommend using STDIO mode (see below) or Claude Desktop.
Configure Claude Desktop (STDIO)
Add to Claude Desktop configuration file:
Windows: %APPDATA%\Claude\settings.json
{
"mcpServers": {
"opentester": {
"command": "opentester",
"args": ["mcp"]
}
}
}macOS: ~/Library/Application Support/Claude/settings.json
{
"mcpServers": {
"opentester": {
"command": "opentester",
"args": ["mcp"]
}
}
}Linux: ~/.config/Claude/settings.json
{
"mcpServers": {
"opentester": {
"command": "opentester",
"args": ["mcp"]
}
}
}Usage Example
Conversation with Claude Code:
You: Help me test the login functionality
Claude: I'll create tests for the login feature...
[Generate DSL test case]
[Call MCP: validateDSL] ✓ Validation passed
[Call MCP: createProject] ✓ Project created
[Call MCP: saveCase] ✓ Case saved
[Call MCP: runCase]
Executing...
✓ All passedProject Structure
OpenTester/
├── backend/ # FastAPI + Python
│ ├── opentester/
│ │ ├── api/ # REST API (for Web UI)
│ │ ├── core/ # Execution engine, storage
│ │ ├── models/ # Pydantic models (DSL, Project)
│ │ └── mcp/ # MCP Server (core)
│ └── pyproject.toml
├── frontend/ # React + TypeScript + Vite
│ └── src/ # Web UI (observation panel)
├── docs/
│ ├── SKILL_PROMPT.md # Agent Skill Prompt template
│ ├── DSL_SPEC.md # DSL syntax specification
│ └── MCP.md # MCP interface documentation
├── README.md # This document
└── LICENSE # MIT LicenseCore Features
1. DSL Validation
After Agent generates DSL, OpenTester validates syntax correctness:
version: "1.0"
meta:
name: "Login Test"
steps:
- action: exec
command: "curl http://localhost:3000/login"
- action: assert
assertion:
type: stdout_contains
expected: "token"2. Test Execution
Supports execution targets:
CLI: subprocess command execution (currently implemented)
GUI: PyAutoGUI + AI vision (planned for future release)
TUI: pexpect terminal interaction (planned for future release)
3. Project Management
Projects stored in XDG data directory (
~/.local/share/opentester/on Linux,~/Library/Application Support/opentester/on macOS,%LOCALAPPDATA%\opentester\on Windows)PRD content persisted with projects (provided by Agent)
Test case version management
Template library for reusable DSL patterns
4. Real-time Monitoring
WebSocket real-time execution progress push
Web UI visual display
Execution history traceability
MCP Tools
Tool | Description |
| List all test projects |
| Get project details (including cases) |
| Create project |
| Delete project |
| Validate DSL syntax |
| Save test case |
| Delete test case |
| Execute single case |
| Execute project cases |
| Stop execution |
| Get execution status |
| Get detailed logs |
| List templates |
| Create DSL template |
| Create case from template |
See MCP Interface Documentation for details.
Skill Prompt
Agents using OpenTester need to include DSL generation specifications. Refer to SKILL_PROMPT.md
DSL Specification
YAML-based test definition language. See DSL_SPEC.md for details.
Architecture
See ARCHITECTURE.md for system architecture, design principles, and architectural decisions.
Development Guide
Developers refer to DEVELOPMENT.md
Web UI
Auxiliary features:
View project list and details
Edit DSL cases (Monaco editor)
Monitor execution progress
View history reports
Note: Web UI is not the main entry point. All core features are provided through MCP.
Ports
FastAPI (Web UI / REST API): http://localhost:8000
MCP Server: http://localhost:8001/mcp
API Docs: http://localhost:8000/docs
Web UI Dev Server: http://localhost:5173
Data Storage
OpenTester follows the XDG Base Directory Specification:
Projects:
<XDG_DATA_HOME>/opentester/projects/{project_id}.jsonLinux:
~/.local/share/opentester/projects/macOS:
~/Library/Application Support/opentester/projects/Windows:
%LOCALAPPDATA%\opentester\projects\
Executions:
<XDG_DATA_HOME>/opentester/executions/Templates:
<XDG_DATA_HOME>/opentester/templates/PID files:
~/.opentester/pids/(historical location, will migrate to XDG)Config:
~/.config/opentester/(or$XDG_CONFIG_HOME/opentester/)
Distribution
Refer to DISTRIBUTION.md for:
PyPI publishing
PyInstaller packaging
Docker images
System package managers
Quick build executable:
cd backend
pip install pyinstaller
pyinstaller opentester.spec
# Output: dist/opentester.exe (Windows) or dist/opentester (Linux/Mac)Contributing
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Documentation
License
OpenTester - MCP-First Testing Execution Platform
This server cannot be installed
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.