MCP Testing Server
A Model Context Protocol (MCP) server for testing API endpoints, web browsers, and phone UI locally.
Features
API Testing
- Make HTTP requests (GET, POST, PUT, DELETE, PATCH)
- Batch API testing
- Custom headers, body, and query parameters
- Response validation
Web Browser Testing
- Navigate to URLs
- Click elements
- Type into input fields
- Take screenshots
- Extract text content
- Wait for elements
- Multiple tabs/pages support
Phone UI Testing
- Mobile browser simulation with device presets
- Tap interactions
- Swipe gestures
- Mobile viewport screenshots
- Device-specific testing (iPhone, Samsung, etc.)
Setup
Prerequisites
- Python 3.8 or higher
- pip (Python package manager)
Installation
- Navigate to the mcp-server directory:
cd mcp-server
- Create a virtual environment (recommended):
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Install Playwright browsers:
playwright install chromium
Running the Server
Method 1: Direct Python execution
python server.py
Method 2: Using the startup script
chmod +x start.sh
./start.sh
Method 3: As an MCP server (for Cursor/Claude Desktop)
Add to your MCP configuration file (usually ~/.cursor/mcp.json or similar):
{
"mcpServers": {
"testing-server": {
"command": "python",
"args": ["/absolute/path/to/mcp-server/server.py"],
"env": {}
}
}
}
Usage Examples
API Testing
Test a GET request: ``json { "tool": "api_test_request", "arguments": { "url": "https://api.example.com/users", "method": "GET", "headers": { "Authorization": "Bearer token" } } } ``
Test a POST request: ``json { "tool": "api_test_request", "arguments": { "url": "https://api.example.com/users", "method": "POST", "headers": { "Content-Type": "application/json" }, "body": { "name": "John Doe", "email": "john@example.com" } } } ``
Web Browser Testing
Navigate to a URL: ``json { "tool": "browser_navigate", "arguments": { "url": "https://example.com", "page_id": "main" } } ``
Click an element: ``json { "tool": "browser_click", "arguments": { "selector": "button#submit", "page_id": "main" } } ``
Take a screenshot: ``json { "tool": "browser_screenshot", "arguments": { "page_id": "main", "full_page": true, "path": "./screenshot.png" } } ``
Phone UI Testing
Navigate on mobile: ``json { "tool": "phone_navigate", "arguments": { "url": "https://example.com", "device": "iPhone 12", "page_id": "mobile_test" } } ``
Tap an element: ``json { "tool": "phone_tap", "arguments": { "selector": "button.login", "page_id": "mobile_test" } } ``
Swipe: ``json { "tool": "phone_swipe", "arguments": { "direction": "up", "distance": 300, "page_id": "mobile_test" } } ``
Available Device Presets
- iPhone 12
- iPhone 13
- iPhone 13 Pro
- iPhone 14
- Samsung Galaxy S21
- Samsung Galaxy S20
- Pixel 5
- iPad Pro
- And more (see Playwright device list)
Troubleshooting
Browser doesn't launch
- Make sure Playwright browsers are installed:
playwright install chromium - Check that you have necessary system dependencies
Import errors
- Ensure all dependencies are installed:
pip install -r requirements.txt - Verify Python version is 3.8+
Port conflicts
- The server uses stdio for communication, so no ports are needed
- If browser instances conflict, close existing browser windows
Notes
- The server runs in non-headless mode by default (browsers are visible)
- Multiple pages/tabs are supported via
page_idparameter - Screenshots can be saved to disk or returned as base64
- All browser instances are managed automatically
License
This is a testing tool for local development purposes.











