# @rog0x/mcp-testing-tools Testing and quality assurance tools for AI agents, exposed via the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/). ## 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` | | `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 ```bash npm install npm run build ``` ## Usage with Claude Desktop Add to your `claude_desktop_config.json`: ```json { "mcpServers": { "testing-tools": { "command": "node", "args": ["path/to/mcp-testing-tools/dist/index.js"] } } } ``` ## License MIT