@rog0x/mcp-testing-tools
Testing and quality assurance tools for AI agents, exposed via the Model Context Protocol (MCP).
Tools
generate_tests
Generate test cases from a function signature. Produces four categories of tests as ready-to-run Jest or Vitest code:
- Happy path -- valid inputs, expected outputs
- Edge cases -- empty strings, zero values, null parameters
- Error cases -- missing arguments, wrong types
- Boundary values -- extreme numbers, large arrays, NaN
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
signature |
string | Yes | Function signature, e.g. async function fetchUser(id: number): Promise<User> |
framework |
string | No | jest or vitest (default: vitest) |
module_path |
string | No | Import path for the module under test (default: ./module) |
generate_mock_data
Generate realistic mock data for testing. Supported types:
name, email, address, date, uuid, phone, company, credit_card, ip
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
type |
string | Yes | Data type to generate |
count |
number | No | Number of items (default: 10, max: 1000) |
locale |
string | No | en or es (default: en) |
types |
string[] | No | Generate mixed records with multiple field types |
generate_api_mock
Generate mock API responses from a schema definition. Creates realistic JSON payloads for REST endpoints by inferring values from field names and types.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
endpoint |
string | Yes | API endpoint path |
method |
string | No | HTTP method (default: GET) |
fields |
object[] | Yes | Field schemas with name, type, optional items, fields, nullable, enum |
count |
number | No | Number of records (default: 1, max: 100) |
status_code |
number | No | HTTP status code (default: 200) |
wrap_in_envelope |
boolean | No | Wrap in { success, data, meta } (default: true) |
analyze_test_coverage
Analyze source code and test code to find untested functions. Prioritizes suggestions by:
- Export status (public API surface)
- Cyclomatic complexity estimate
- Parameter count
- Async functions (more error paths)
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
source_code |
string | Yes | Source code to analyze |
test_code |
string | Yes | Existing test code |
source_file_name |
string | No | Filename label (default: source.ts) |
generate_assertions
Generate detailed assertion code by comparing expected and actual values. Performs deep diff and produces per-field assertions with descriptive comments.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
expected |
string | Yes | Expected value as JSON string |
actual |
string | Yes | Actual value as JSON string |
label |
string | No | Description for the comparison |
framework |
string | No | jest, vitest, or chai (default: jest) |
deep |
boolean | No | Deep equality for objects/arrays (default: true) |
Setup
npm install
npm run build
Usage with Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"testing-tools": {
"command": "node",
"args": ["path/to/mcp-testing-tools/dist/index.js"]
}
}
}
License
MIT