API Tester

by kirti676

Not rated
GitHub

About

This MCP Server accepts swagger/postman documents as input. It then generates API & Load test scenarios, executes the tests and generates the execution report.

Details

Author
kirti676
Categories
Developer Tools, API

2. πŸ”§set_env_vars- Configure Authentication & Environment

Set environment variables with automatic validation and guidance

{ "variables": {}, // Dictionary of custom environment variables (optional) "baseUrl": null, // API base URL (optional) "auth_bearer": null, // Bearer/JWT token (optional) "auth_apikey": null, // API key (optional) "auth_basic": null, // Base64 encoded credentials (optional) "auth_username": null, // Username for basic auth (optional) "auth_password": null // Password for basic auth (optional) }

πŸ”§ Environment Variables (set_env_vars)

πŸ”‘ ALL PARAMETERS ARE OPTIONAL- Provide only what you need:

// Option 1: Just the base URL await mcp.call("set_env_vars", { baseUrl: "https://api.example.com/v1" }); // Option 2: Just authentication await mcp.call("set_env_vars", { auth_bearer: "your-jwt-token-here" }); // Option 3: Multiple parameters await mcp.call("set_env_vars", { baseUrl: "https://api.example.com/v1", auth_bearer: "your-jwt-token", auth_apikey: "your-api-key" }); // Option 4: Using variables dict for custom values await mcp.call("set_env_vars", { variables: { "baseUrl": "https://api.example.com/v1", "custom_header": "custom-value" } });

Default values help you understand available options:

// Ingest with defaults shown await mcp.call("ingest_spec", { spec_type: "openapi", // openapi, swagger, postman file_path: "./api-spec.json", // Path to JSON or YAML specification file preferred_language: "python", // python, typescript, javascript preferred_framework: "requests" // pytest, requests, playwright, jest, cypress, supertest }); // Project generation with defaults await mcp.call("generate_project_files", { language: "python", // python, typescript, javascript framework: "requests", // Framework matching the language project_name: "api-tests", // Project folder name include_examples: true // Include example test files });
// API tests with concurrency control await mcp.call("run_api_tests", { test_case_ids: null, // ["test_1", "test_2"] or null for all max_concurrent: 10 // Number of concurrent requests (1-50) }); // Load tests with performance parameters await mcp.call("run_load_tests", { test_case_ids: null, // ["test_1", "test_2"] or null for all duration: 60, // Test duration in seconds users: 10, // Number of concurrent virtual users ramp_up: 10 // Ramp up time in seconds });
// NEW: Check supported languages and frameworks const languages = await mcp.call("get_supported_languages"); console.log(languages.supported_combinations); // Ingest specification with language preferences await mcp.call("ingest_spec", { spec_type: "openapi", file_path: "./openapi-specification.json", preferred_language: "typescript", preferred_framework: "playwright" }); // Set environment variables for authentication await mcp.call("set_env_vars", { variables: { "baseUrl": "https://api.example.com", "auth_bearer": "your-bearer-token", "auth_apikey": "your-api-key" } }); // Generate test scenarios await mcp.call("generate_scenarios", { include_negative_tests: true, include_edge_cases: true }); // Generate test cases in TypeScript/Playwright await mcp.call("generate_test_cases", { language: "typescript", framework: "playwright" }); // Generate complete project files await mcp.call("generate_project_files", { language: "typescript", framework: "playwright", project_name: "my-api-tests", include_examples: true }); // Run API tests (still works with existing execution engine) await mcp.call("run_api_tests", { max_concurrent: 5 });

Here's a complete example of testing the Petstore API:

# 1. Start the MCP server npx @kirti676/api-tester-mcp@latest

Then in your MCP client (like Claude Desktop):

// 1. Load the Petstore OpenAPI spec await mcp.call("ingest_spec", { spec_type: "openapi", file_path: "./examples/petstore_openapi.json" }); // 2. Set environment variables await mcp.call("set_env_vars", { pairs: { "baseUrl": "https://petstore.swagger.io/v2", "auth_apikey": "special-key" } }); // 3. Generate test cases const tests = await mcp.call("get_generated_tests"); // 4. Run API tests const result = await mcp.call("run_api_tests"); // 5. View results in HTML report const reports = await mcp.call("list_resources", { uri: "file://reports" });
{ "tool": "ingest_spec", "params": { "spec_type": "openapi", "content": "{ ... your OpenAPI spec ... }" } }
{ "tool": "set_env_vars", "params": { "variables": { "auth_bearer": "your-token", "baseUrl": "https://api.example.com" } } }
{ "tool": "generate_scenarios", "params": { "include_negative_tests": true } }

- πŸ“„ Access HTML reports via MCP resources
- πŸ“ˆ Get session status and statistics

{ "tool": "ingest_spec", "params": { "spec_type": "graphql", "file_path": "./schema.graphql" } }
{ "tool": "set_env_vars", "params": { "graphqlEndpoint": "https://api.example.com/graphql", "auth_bearer": "your-jwt-token" } }

A comprehensive Model Context Protocol (MCP) server for QA/SDET engineers that provides API testing capabilities with Swagger/OpenAPI and Postman collection support.

πŸŽ‰Now available on NPM!Install withnpx @kirti676/api-tester-mcp@latest

- βœ…Enhanced Progress Tracking- Real-time progress with completion percentages and ETA
- βœ…Visual Progress Bars- ASCII progress bars with milestone notifications
- βœ…Performance Metrics- Throughput calculations and execution summaries
- βœ…Published on NPM- Install instantly with NPX
- βœ…VS Code Integration- One-click installation buttons
- βœ…Simplified Setup- No manual Python installation required
- βœ…Cross-Platform- Works on Windows, macOS, and Linux
- βœ…Auto-Updates- Always get the latest version with@latest

The API Tester MCP server can be used directly with npx without any installation:

Follow the MCP installguide, use the standard config below:

{ "mcpServers": { "api-tester": { "command": "npx", "args": ["@kirti676/api-tester-mcp@latest"] } } }

The standard configuration works with most MCP clients:

{ "mcpServers": { "api-tester": { "command": "npx", "args": ["@kirti676/api-tester-mcp@latest"] } } }

- πŸ€–Claude Desktop
- πŸ’»
VS Codewith MCP extension
- ⚑
Cursor
- 🌊
Windsurf
- πŸͺΏ
Goose
- πŸ”§ Any other MCP-compatible client

git clone https://github.com/kirti676/api_tester_mcp.git cd api_tester_mcp npm install

Try the API Tester MCP server immediately:

# Run the server npx @kirti676/api-tester-mcp@latest # Check version npx @kirti676/api-tester-mcp@latest --version # Get help npx @kirti676/api-tester-mcp@latest --help

For MCP clients like Claude Desktop, use this configuration:

{ "mcpServers": { "api-tester": { "command": "npx", "args": ["@kirti676/api-tester-mcp@latest"] } } }

- πŸ“₯ Input Support: OpenAPI/Swagger documents, Postman collections, and GraphQL schemas
- πŸ”„ Test Generation: Automatic API and Load test scenario generation
- 🌐 Multi-Language Support: Generate tests in TypeScript/Playwright, JavaScript/Jest, Python/pytest, and more
- ⚑ Test Execution: Run generated tests with detailed reporting
- πŸ” Smart Auth Detection: Automatic environment variable analysis and setup guidance
- πŸ” Authentication: Bearer token and API key support viaset_env_vars
- πŸ“Š HTML Reports: Beautiful, accessible reports via MCP resources
- πŸ“ˆ Real-time Progress: Live updates with progress bars and completion percentages
- ⏱️ ETA Calculations: Estimated time to completion for all operations
- 🎯 Milestone Tracking: Special notifications at key progress milestones (25%, 50%, 75%, etc.)
- πŸ“Š Performance Metrics: Throughput calculations and execution summaries
- βœ… Schema Validation: Request body generation from schema examples
- 🎯 Assertions: Per-endpoint status code assertions (2xx, 4xx, 5xx)
- πŸ“¦ Project Generation: Complete project scaffolding with dependencies and configuration

The API Tester MCP now supports generating test code in multiple programming languages and testing frameworks:

πŸ”§ Supported Language/Framework Combinations

// 1. Get available languages and frameworks const languages = await mcp.call("get_supported_languages"); // 2. Choose your preferred combination await mcp.call("ingest_spec", { spec_type: "openapi", file_path: "./path/to/your/api-spec.json", preferred_language: "typescript", // python, typescript, javascript preferred_framework: "playwright" // varies by language }); // 3. Generate test cases with code await mcp.call("generate_test_cases", { language: "typescript", framework: "playwright" }); // 4. Get complete project setup await mcp.call("generate_project_files", { language: "typescript", framework: "playwright", project_name: "my-api-tests", include_examples: true });

Thegenerate_project_filestool creates a complete, ready-to-run project:

my-api-tests/ β”œβ”€β”€ πŸ“¦ package.json # Dependencies & scripts β”œβ”€β”€ βš™οΈ playwright.config.ts # Playwright configuration β”œβ”€β”€ πŸ“‚ tests/ β”‚ └── πŸ§ͺ api.spec.ts # Generated test code └── πŸ“– README.md # Setup instructions
my-api-tests/ β”œβ”€β”€ πŸ“‹ requirements.txt # Python dependencies β”œβ”€β”€ βš™οΈ pytest.ini # pytest configuration β”œβ”€β”€ πŸ“‚ tests/ β”‚ └── πŸ§ͺ test_api.py # Generated test code └── πŸ“– README.md # Setup instructions
my-api-tests/ β”œβ”€β”€ πŸ“¦ package.json # Dependencies & scripts β”œβ”€β”€ βš™οΈ jest.config.js # Jest configuration β”œβ”€β”€ πŸ“‚ tests/ β”‚ └── πŸ§ͺ api.test.js # Generated test code └── πŸ“– README.md # Setup instructions

- 🎭 Playwright: Browser automation, parallel execution, detailed reporting
- πŸƒ Jest: Snapshot testing, mocking, watch mode for development
- πŸ§ͺ pytest: Fixtures, parametrized tests, extensive plugin ecosystem
- 🌲 Cypress: Interactive debugging, time-travel debugging, real browser testing
- πŸš€ Supertest: Express.js integration, middleware testing
- πŸ“‘ requests: Simple API calls, session management, authentication helpers

The API Tester MCP includes comprehensive progress tracking for all operations:

🎯 API Test Execution: [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘] 50.0% (5/10) | ETA: 2.5s - GET /api/users βœ…

- πŸ“Š Progress Bars: ASCII progress bars with filled/empty indicators
- πŸ“ˆ Completion Percentages: Real-time percentage completion
- ⏰ ETA Calculations: Estimated time to completion based on current performance
- 🎯 Milestone Notifications: Special highlighting at key progress points
- ⚑ Performance Metrics: Throughput and timing statistics
- πŸ“‹ Operation Context: Detailed information about current step being executed

- 🎬 Scenario generation
- πŸ§ͺ Test case generation
- πŸš€ API test execution
- ⚑ Load test execution
- πŸ”„ All long-running operations

The server provides 11 comprehensive MCP tools with detailed parameter specifications:

1. πŸ“₯ingest_spec- Load API Specifications

Load OpenAPI/Swagger, Postman collections, or GraphQL schemas with language/framework preferences

{ "spec_type": "openapi", // openapi, swagger, postman, graphql (optional, auto-detected) "file_path": "./api-spec.json", // Path to JSON, YAML, or GraphQL schema file (required) "preferred_language": "python", // python, typescript, javascript (optional, default: python) "preferred_framework": "requests" // pytest, requests, playwright, jest, cypress, supertest (optional, default: requests) }

2. πŸ”§set_env_vars- Configure Authentication & Environment

Set environment variables with automatic validation and guidance

{ "variables": {}, // Dictionary of custom environment variables (optional) "baseUrl": null, // API base URL (optional) "auth_bearer": null, // Bearer/JWT token (optional) "auth_apikey": null, // API key (optional) "auth_basic": null, // Base64 encoded credentials (optional) "auth_username": null, // Username for basic auth (optional) "auth_password": null // Password for basic auth (optional) }

3. 🎬generate_scenarios- Create Test Scenarios

Generate test scenarios from ingested specifications

{ "include_negative_tests": true, // Generate failure scenarios (default: true) "include_edge_cases": true // Generate boundary conditions (default: true) }

4. πŸ§ͺgenerate_test_cases- Convert to Executable Tests

Convert scenarios to executable test cases in preferred language/framework

{ "scenario_ids": null // Array of scenario IDs or null for all (optional) }

Execute API tests with detailed results and reporting

{ "test_case_ids": null, // Array of test case IDs or null for all (optional) "max_concurrent": 10 // Number of concurrent requests 1-50 (default: 10) }

6. ⚑run_load_tests- Execute Performance Tests

Execute load/performance tests with configurable parameters

{ "test_case_ids": null, // Array of test case IDs or null for all (optional) "duration": 60, // Test duration in seconds (default: 60) "users": 10, // Number of concurrent virtual users (default: 10) "ramp_up": 10 // Ramp up time in seconds (default: 10) }

7. 🌐get_supported_languages- List Language/Framework Options

Get list of supported programming languages and testing frameworks

8. πŸ“¦generate_project_files- Generate Complete Projects

Generate complete project structure with dependencies and configuration

{ "project_name": null, // Project folder name (optional, auto-generated if null) "include_examples": true // Include example test files (default: true) }

9. πŸ“get_workspace_info- Workspace Information

Get information about workspace directory and file generation locations

10. πŸ”debug_file_system- File System Diagnostics

Get comprehensive workspace information and file system diagnostics

11. πŸ“Šget_session_status- Session Status & Progress

Retrieve current session information with progress details

- file://reports- List all available test reports
- file://reports/{report_id}- Access individual HTML test reports

- create_api_test_plan- Generate comprehensive API test plans
- analyze_test_failures- Analyze test failures and provide recommendations

The API Tester MCP now automatically analyzes your API specifications to detect required environment variables and provides helpful setup guidance:

- πŸ” Authentication Schemes: Bearer tokens, API keys, Basic auth, OAuth2
- 🌐 Base URLs: Extracted from specification servers/hosts
- πŸ”— Template Variables: Postman collection variables like{{baseUrl}},{{authToken}}
- πŸ“ Path Parameters: Dynamic values in paths like/users/{userId}

// 1. Ingest specification - automatic analysis included const result = await mcp.call("ingest_spec", { spec_type: "openapi", file_path: "./api-specification.json" }); // Check the setup message for immediate guidance console.log(result.setup_message); // "⚠️ 2 required environment variable(s) detected..." // 2. Get detailed setup instructions const suggestions = await mcp.call("get_env_var_suggestions"); console.log(suggestions.setup_instructions); // Provides copy-paste ready configuration examples

All MCP tools now provide helpful default parameter keys to guide users on what values they can set:

πŸ”§ Environment Variables (set_env_vars)

πŸ”‘ ALL PARAMETERS ARE OPTIONAL- Provide only what you need:

// Option 1: Just the base URL await mcp.call("set_env_vars", { baseUrl: "https://api.example.com/v1" }); // Option 2: Just authentication await mcp.call("set_env_vars", { auth_bearer: "your-jwt-token-here" }); // Option 3: Multiple parameters await mcp.call("set_env_vars", { baseUrl: "https://api.example.com/v1", auth_bearer: "your-jwt-token", auth_apikey: "your-api-key" }); // Option 4: Using variables dict for custom values await mcp.call("set_env_vars", { variables: { "baseUrl": "https://api.example.com/v1", "custom_header": "custom-value" } });

Default values help you understand available options:

// Ingest with defaults shown await mcp.call("ingest_spec", { spec_type: "openapi", // openapi, swagger, postman file_path: "./api-spec.json", // Path to JSON or YAML specification file preferred_language: "python", // python, typescript, javascript preferred_framework: "requests" // pytest, requests, playwright, jest, cypress, supertest }); // Project generation with defaults await mcp.call("generate_project_files", { language: "python", // python, typescript, javascript framework: "requests", // Framework matching the language project_name: "api-tests", // Project folder name include_examples: true // Include example test files });
// API tests with concurrency control await mcp.call("run_api_tests", { test_case_ids: null, // ["test_1", "test_2"] or null for all max_concurrent: 10 // Number of concurrent requests (1-50) }); // Load tests with performance parameters await mcp.call("run_load_tests", { test_case_ids: null, // ["test_1", "test_2"] or null for all duration: 60, // Test duration in seconds users: 10, // Number of concurrent virtual users ramp_up: 10 // Ramp up time in seconds });
// NEW: Check supported languages and frameworks const languages = await mcp.call("get_supported_languages"); console.log(languages.supported_combinations); // Ingest specification with language preferences await mcp.call("ingest_spec", { spec_type: "openapi", file_path: "./openapi-specification.json", preferred_language: "typescript", preferred_framework: "playwright" }); // Set environment variables for authentication await mcp.call("set_env_vars", { variables: { "baseUrl": "https://api.example.com", "auth_bearer": "your-bearer-token", "auth_apikey": "your-api-key" } }); // Generate test scenarios await mcp.call("generate_scenarios", { include_negative_tests: true, include_edge_cases: true }); // Generate test cases in TypeScript/Playwright await mcp.call("generate_test_cases", { language: "typescript", framework: "playwright" }); // Generate complete project files await mcp.call("generate_project_files", { language: "typescript", framework: "playwright", project_name: "my-api-tests", include_examples: true }); // Run API tests (still works with existing execution engine) await mcp.call("run_api_tests", { max_concurrent: 5 });

Here's a complete example of testing the Petstore API:

# 1. Start the MCP server npx @kirti676/api-tester-mcp@latest

Then in your MCP client (like Claude Desktop):

// 1. Load the Petstore OpenAPI spec await mcp.call("ingest_spec", { spec_type: "openapi", file_path: "./examples/petstore_openapi.json" }); // 2. Set environment variables await mcp.call("set_env_vars", { pairs: { "baseUrl": "https://petstore.swagger.io/v2", "auth_apikey": "special-key" } }); // 3. Generate test cases const tests = await mcp.call("get_generated_tests"); // 4. Run API tests const result = await mcp.call("run_api_tests"); // 5. View results in HTML report const reports = await mcp.call("list_resources", { uri: "file://reports" });
{ "tool": "ingest_spec", "params": { "spec_type": "openapi", "content": "{ ... your OpenAPI spec ... }" } }
{ "tool": "set_env_vars", "params": { "variables": { "auth_bearer": "your-token", "baseUrl": "https://api.example.com" } } }
{ "tool": "generate_scenarios", "params": { "include_negative_tests": true } }

- πŸ“„ Access HTML reports via MCP resources
- πŸ“ˆ Get session status and statistics

{ "tool": "ingest_spec", "params": { "spec_type": "graphql", "file_path": "./schema.graphql" } }
{ "tool": "set_env_vars", "params": { "graphqlEndpoint": "https://api.example.com/graphql", "auth_bearer": "your-jwt-token" } }
No reviews yet β€” be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.