OpenTester MCP Server

1

Add it to Claude Code

Run this in a terminal.

Run in terminal
claude mcp add --transport http open-tester http://localhost:8001/mcp
README.md

MCP-First Testing Execution Infrastructure for AI coding tools

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/Web)             │
│  ├─ 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 opentester

Option 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 install

Option 3: Direct Run (Development)

cd backend
uv run opentester start

Quick Start

Start Services

# Start both FastAPI + MCP (foreground mode with prefixed logs)
opentester start

# Daemon mode (detached background with log files)
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 doctor

Foreground 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)

Add MCP configuration in .claude/settings.json:

{
  "mcpServers": {
    "opentester": {
      "url": "http://localhost:8001/mcp"
    }
  }
}

Note: Current runtime transport is Streamable HTTP.

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 passed

Project 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 License

Core 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 (implemented)
  • WEB: Playwright-based browser automation (implemented)
  • GUI: experimental executor routing (disabled by default)
  • TUI: experimental executor routing (disabled by default)

3. Web Testing MVP + AI DOM Analysis

  • Web

Tools (4)

validateDSLValidates the syntax correctness of a generated DSL test case.
createProjectInitializes a new testing project.
saveCaseSaves a test case to the project.
runCaseExecutes a specific test case.

Configuration

claude_desktop_config.json
{"mcpServers": {"opentester": {"url": "http://localhost:8001/mcp"}}}

Try it

Help me test the login functionality by generating a DSL test case.
Validate this DSL test script for my new API endpoint.
Create a new testing project for the user authentication module.
Run the login test case and analyze the failure reasons if it fails.

Frequently Asked Questions

What are the key features of OpenTester?

Unified DSL format for defining test cases. Automated code-test-fix workflow integration. Support for CLI and Playwright-based web test execution. Syntax validation for generated test scripts. MCP-first interface for AI agent interaction.

What can I use OpenTester for?

Automating regression testing for web applications during AI-assisted development. Validating API endpoints using custom DSL scripts generated by Claude. Managing test case history and execution reports within an AI coding environment. Performing browser-based UI testing using Playwright via MCP commands.

How do I install OpenTester?

Install OpenTester by running: pip install opentester

What MCP clients work with OpenTester?

OpenTester works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep OpenTester docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare