Api Tester Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Api Tester Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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 with npx @kirti676/api-tester-mcp@latest@latestThe API Tester MCP server can be used directly with npx without any installation:
npx @kirti676/api-tester-mcp@latest⚡ Quick Install:
Follow the MCP install guide, 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"]
}
}
}🖥️ Supported Clients:
pip install api-tester-mcpgit clone https://github.com/kirti676/api_tester_mcp.git
cd api_tester_mcp
npm installTry 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 --helpFor MCP clients like Claude Desktop, use this configuration:
{
"mcpServers": {
"api-tester": {
"command": "npx",
"args": ["@kirti676/api-tester-mcp@latest"]
}
}
}set_env_varsThe API Tester MCP now supports generating test code in multiple programming languages and testing frameworks:
| Language | Framework | Description | Use Case |
|---|---|---|---|
| 📘 TypeScript | 🎭 Playwright | Modern E2E testing with excellent API support | 🏢 Enterprise web applications |
| 📘 TypeScript | 🚀 Supertest | Express.js focused API testing | 🟢 Node.js backend services |
| 📙 JavaScript | 🃏 Jest | Popular testing framework with good ecosystem | 🔧 General API testing |
| 📙 JavaScript | 🌲 Cypress | E2E testing with great developer experience | 🌐 Full-stack applications |
| 🐍 Python | 🧪 pytest | Comprehensive testing with fixtures & plugins | 📊 Data-heavy APIs & ML services |
| 🐍 Python | 📡 requests | Simple HTTP testing for quick validation | ⚡ Rapid prototyping & scripts |
// 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
});The generate_project_files tool creates a complete, ready-to-run project:
📘 TypeScript + Playwright:
my-api-tests/
├── 📦 package.json # Dependencies & scripts
├── ⚙️ playwright.config.ts # Playwright configuration
├── 📂 tests/
│ └── 🧪 api.spec.ts # Generated test code
└── 📖 README.md # Setup instructions🐍 Python + pytest:
my-api-tests/
├── 📋 requirements.txt # Python dependencies
├── ⚙️ pytest.ini # pytest configuration
├── 📂 tests/
│ └── 🧪 test_api.py # Generated test code
└── 📖 README.md # Setup instructions📙 JavaScript + Jest:
my-api-tests/
├── 📦 package.json # Dependencies & scripts
├── ⚙️ jest.config.js # Jest configuration
├── 📂 tests/
│ └── 🧪 api.test.js # Generated test code
└── 📖 README.md # Setup instructionsThe API Tester MCP includes comprehensive progress tracking for all operations:
🎯 API Test Execution: [██████████░░░░░░░░░░] 50.0% (5/10) | ETA: 2.5s - GET /api/users ✅The server provides 11 comprehensive MCP tools with detailed parameter 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)
}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)
}Generate test scenarios from ingested specifications
{
"include_negative_tests": true, // Generate failure scenarios (default: true)
"include_edge_cases": true // Generate boundary conditions (default: true)
}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)
}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)
}Get list of supported programming languages and testing frameworks
// No parameters required
{}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)
}Get information about workspace directory and file generation locations
// No parameters required
{}Get comprehensive workspace information and file system diagnostics
// No parameters required
{}Retrieve current session information with progress details
// No parameters required
{}The API Tester MCP now automatically analyzes your API specifications to detect required environment variables and provides helpful setup guidance:
{{baseUrl}}, {{authToken}}/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 examplesAll MCP tools now provide helpful default parameter keys to guide users on what values they can set:
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
});Clear defaults for performance tuning:
// 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@latestThen 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
}
} {
"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"
}
} {
"tool": "generate_test_cases",
"params": {
"preferred_language": "python",
"preferred_framework": "pytest"
}
} {
"tool": "run_api_tests",
"params": {
"max_concurrent": 5
}
}{
"tool": "run_load_tests",
"params": {
"users": 10,
"duration": 60,
"ramp_up": 10
}
}Generated reports include:
auth_bearer environment variableauth_apikey environment variable (sent as X-API-Key header)auth_basic environment variable📦 NPX Command Not Working
# If npx command fails, try:
npm install -g @kirti676/api-tester-mcp@latest
# Or run directly:
node ./node_modules/@kirti676/api-tester-mcp/cli.js🐍 Python Not Found
# Make sure Python 3.8+ is installed and in PATH
python --version
# Install Python dependencies manually if needed:
pip install fastmcp>=0.2.0 pydantic>=2.0.0 requests>=2.28.0🔗 MCP Client Connection Issues
--verbose flag for detailed logginggit checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License - see the LICENSE file for details.
© 2025 kirti676. All rights reserved.
This repository and its contents are protected by copyright law. For permission to reuse, reference, or redistribute any part of this project, please contact the owner at [email protected].
✅ Allowed without permission:
❓ Requires permission:
For licensing inquiries, collaboration opportunities, or permission requests, reach out to [email protected].
<div align="center">
🚀 Built with ❤️ for QA/SDET engineers worldwide 🌍
</div>
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.