MCP Testing Server
README.md
# 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
1. Navigate to the mcp-server directory:
```bash
cd mcp-server
```
2. Create a virtual environment (recommended):
```bash
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
```
3. Install dependencies:
```bash
pip install -r requirements.txt
```
4. Install Playwright browsers:
```bash
playwright install chromium
```
## Running the Server
### Method 1: Direct Python execution
```bash
python server.py
```
### Method 2: Using the startup script
```bash
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):
```json
{
"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_id` parameter
- 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.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues