mcp-server

siddikshaikh-haptiq/mcp-server

3.2

If you are the rightful owner of mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

The MCP Testing Server is a local development tool designed for testing API endpoints, web browsers, and phone UIs using the Model Context Protocol.

Tools
7
Resources
0
Prompts
0

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:
cd mcp-server
  1. Create a virtual environment (recommended):
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install dependencies:
pip install -r requirements.txt
  1. 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:

{
  "tool": "api_test_request",
  "arguments": {
    "url": "https://api.example.com/users",
    "method": "GET",
    "headers": {
      "Authorization": "Bearer token"
    }
  }
}

Test a POST request:

{
  "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:

{
  "tool": "browser_navigate",
  "arguments": {
    "url": "https://example.com",
    "page_id": "main"
  }
}

Click an element:

{
  "tool": "browser_click",
  "arguments": {
    "selector": "button#submit",
    "page_id": "main"
  }
}

Take a screenshot:

{
  "tool": "browser_screenshot",
  "arguments": {
    "page_id": "main",
    "full_page": true,
    "path": "./screenshot.png"
  }
}

Phone UI Testing

Navigate on mobile:

{
  "tool": "phone_navigate",
  "arguments": {
    "url": "https://example.com",
    "device": "iPhone 12",
    "page_id": "mobile_test"
  }
}

Tap an element:

{
  "tool": "phone_tap",
  "arguments": {
    "selector": "button.login",
    "page_id": "mobile_test"
  }
}

Swipe:

{
  "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.