This server gives Claude five tools for generating and analyzing tests without leaving the conversation. You can scaffold Jest or Vitest test suites from function signatures, complete with happy path, edge cases, and boundary conditions. It generates mock data for common types like emails and UUIDs, creates realistic API response payloads from schema definitions, and analyzes source code against test files to surface untested functions ranked by complexity. The generate_assertions tool diffs expected versus actual values and writes granular assertion code for you. Useful when you're writing tests alongside implementation or need to quickly populate fixture data for integration tests.
Testing and quality assurance tools for AI agents, exposed via the Model Context Protocol (MCP).
Generate test cases from a function signature. Produces four categories of tests as ready-to-run Jest or Vitest code:
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 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 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 source code and test code to find untested functions. Prioritizes suggestions by:
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 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) |
npm install
npm run build
Add to your claude_desktop_config.json:
{
"mcpServers": {
"testing-tools": {
"command": "node",
"args": ["path/to/mcp-testing-tools/dist/index.js"]
}
}
}
MIT