Skip to main content
Glama

TDD MCP Server

A production-quality MCP (Model Context Protocol) server that enables AI agents to run Jest/TypeScript tests in isolated workspaces for Test-Driven Development (TDD) workflows.

Features

  • Run Jest tests on TypeScript and JavaScript code in isolated workspaces

  • Concurrent test execution with isolated workspace directories

  • Detailed test results with pass/fail status, error messages, stack traces, and code coverage

  • Test history tracking to review past test runs with full detail retrieval

  • Dynamic Jest configuration updates for custom test settings

  • Workspace inspection to view test files and configurations

  • Workspace management with discovery, listing, and metadata viewing

  • Incremental iteration - update implementation or add tests without re-uploading

  • Focused testing - run specific tests by name or file pattern

  • Automatic cleanup of old workspaces based on retention policy

Related MCP server: TypeScript LSP MCP

Installation

1. Install Dependencies

npm install

2. Set Up Test Environment

The server needs Jest and related tools installed in a separate test environment directory:

npm run setup:test-env

This creates a test-env/ directory with Jest, ts-jest, and TypeScript installed.

3. Build the Server

npm run build

Usage

Running the Server Directly

npm start

Testing with MCP Inspector

For interactive testing and debugging:

npm run inspect

Then navigate to http://localhost:6274 in your browser.

Available Tools

1. run-test

Execute Jest tests on provided implementation and test files.

Input:

  • implementationFile (object):

    • name (string): File name (e.g., "calculator.ts")

    • content (string): Implementation code

  • testFile (object):

    • name (string): Test file name (e.g., "calculator.test.ts")

    • content (string): Test code

  • language (optional): "typescript" (default) or "javascript"

  • workspaceId (optional): Reuse existing workspace

  • timeoutMs (optional): Test timeout in milliseconds (default: 60000)

Output:

  • Test results with pass/fail status

  • Individual test details with error messages and stack traces

  • Code coverage metrics

  • Workspace ID for future reference

Example:

{
  "implementationFile": {
    "name": "calculator.ts",
    "content": "export function add(a: number, b: number): number { return a + b; }"
  },
  "testFile": {
    "name": "calculator.test.ts",
    "content": "import { add } from './calculator';\n\ntest('adds 1 + 2 to equal 3', () => {\n  expect(add(1, 2)).toBe(3);\n});"
  },
  "language": "typescript"
}

2. update-jest-config

Update Jest configuration in a workspace.

Input:

  • workspaceId (string): Workspace ID

  • configUpdates (object): Jest config properties to merge

Example:

{
  "workspaceId": "abc123...",
  "configUpdates": {
    "coverageThreshold": {
      "global": {
        "branches": 80,
        "functions": 80,
        "lines": 80,
        "statements": 80
      }
    }
  }
}

3. list-test-history

Retrieve past test runs with optional filters.

Input:

  • limit (optional): Max results (default: 10)

  • workspaceId (optional): Filter by workspace

  • status (optional): "passed" or "failed"

Output:

  • Array of test run summaries

  • Statistics (total runs, passed/failed counts, unique workspaces)

4. get-test-workspace

Inspect a workspace's contents and configuration.

Input:

  • workspaceId (string): Workspace ID

Output:

  • Workspace metadata (creation date, language, file count)

  • File contents

  • Current Jest configuration

5. clean-workspace

Delete workspace(s) and associated history.

Input:

  • workspaceId (optional): Specific workspace to clean

  • olderThanHours (optional): Clean workspaces older than N hours

Output:

  • Count of deleted workspaces and history entries

6. get-test-run-details

Retrieve complete details of a historical test run by history ID.

Input:

  • historyId (string): History ID from a previous test run

Output:

  • Full test results with all details

  • Error messages and stack traces

  • Coverage data

  • Timestamp and metadata

Example:

{
  "historyId": "1706234567890-abc12345"
}

7. list-workspaces

List all available test workspaces with metadata.

Input:

  • limit (optional): Maximum workspaces to return (default: 50)

  • sortBy (optional): "created" (default) or "fileCount"

Output:

  • Array of workspaces with IDs, creation dates, languages, and file counts

Example:

{
  "limit": 20,
  "sortBy": "created"
}

8. update-implementation

Update an implementation file in an existing workspace and optionally run tests.

Input:

  • workspaceId (string): Workspace ID

  • implementationFile (object):

    • name (string): File name to update

    • content (string): New implementation code

  • timeoutMs (optional): Test timeout (default: 60000)

  • autoRunTests (optional): Run tests after update (default: true)

Output:

  • Test results (if autoRunTests is true)

  • Updated file name and workspace ID

Example:

{
  "workspaceId": "abc123...",
  "implementationFile": {
    "name": "calculator.ts",
    "content": "export function add(a: number, b: number): number { return a + b + 1; }"
  },
  "autoRunTests": true
}

Use Case: Efficient iteration during the refactor phase of TDD without re-uploading test files.

9. add-test-file

Add an additional test file to an existing workspace and optionally run all tests.

Input:

  • workspaceId (string): Workspace ID

  • testFile (object):

    • name (string): Test file name

    • content (string): Test code

  • timeoutMs (optional): Test timeout (default: 60000)

  • autoRunTests (optional): Run all tests after adding (default: true)

Output:

  • Test results for all tests in workspace (if autoRunTests is true)

  • Added file name and workspace ID

Example:

{
  "workspaceId": "abc123...",
  "testFile": {
    "name": "calculator.edge-cases.test.ts",
    "content": "import { add } from './calculator';\n\ntest('handles negative numbers', () => {\n  expect(add(-1, -2)).toBe(-3);\n});"
  }
}

Use Case: Add edge case tests, integration tests, or additional test suites incrementally.

10. run-specific-tests

Run a subset of tests using Jest patterns for focused testing.

Input:

  • workspaceId (string): Workspace ID

  • testNamePattern (optional): Regex pattern to match test names (Jest -t flag)

  • testPathPattern (optional): File path pattern for specific test files

  • timeoutMs (optional): Test timeout (default: 60000)

Note: At least one pattern (testNamePattern or testPathPattern) must be provided.

Output:

  • Test results for matched tests only

  • Applied filters

  • Coverage data

Example:

{
  "workspaceId": "abc123...",
  "testNamePattern": "should multiply",
  "timeoutMs": 30000
}

Use Case: Focused testing during debugging, running only failing tests, or testing specific functionality.

Configuration

Configure the server via environment variables:

Variable

Default

Description

TDD_MCP_BASE_DIR

./test-env

Base directory for test environment

TDD_MCP_WORKSPACE_RETENTION_HOURS

168 (7 days)

How long to keep workspaces

TDD_MCP_TEST_TIMEOUT_MS

60000

Default test timeout

TDD_MCP_MAX_HISTORY_ENTRIES

1000

Maximum history entries to keep

TDD_MCP_AUTO_CLEANUP_ON_START

true

Auto-clean old workspaces on startup

MCP Client Configuration

Claude Desktop

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "tdd-mcp-server": {
      "command": "npx",
      "args": ["-y", "tsx", "G:/tdd-mcp/server.ts"],
      "env": {
        "TDD_MCP_BASE_DIR": "G:/tdd-mcp/test-env",
        "TDD_MCP_WORKSPACE_RETENTION_HOURS": "168"
      }
    }
  }
}

Note: Use absolute paths. Replace G:/tdd-mcp with your actual installation path.

Project Structure

tdd-mcp/
├── server.ts                          # MCP server entry point
├── src/
│   ├── config.ts                      # Configuration management
│   ├── logger.ts                      # Structured logging
│   ├── tool.ts                        # Abstract Tool base class
│   ├── workspace-manager.ts           # Workspace creation & file management
│   ├── jest-config-manager.ts         # Jest configuration handling
│   ├── test-runner.ts                 # Jest execution & result parsing
│   ├── test-history-manager.ts        # Test history storage & queries
│   └── tools/
│       ├── run-test.ts                # Main test execution tool
│       ├── update-jest-config.ts      # Config update tool
│       ├── list-test-history.ts       # History listing tool
│       ├── get-test-workspace.ts      # Workspace inspection tool
        ├── clean-workspace.ts         # Cleanup tool
        ├── get-test-run-details.ts    # History details retrieval
        ├── list-workspaces.ts         # Workspace discovery
        ├── update-implementation.ts   # Implementation file updates
        ├── add-test-file.ts           # Add test files incrementally
        └── run-specific-tests.ts      # Focused test execution
├── test-env/                          # Jest installation directory
│   ├── node_modules/                  # Jest & dependencies
│   ├── workspaces/                    # Isolated test workspaces
│   └── history/                       # Test run history
├── package.json
├── tsconfig.json
└── README.md

Development

Building

npm run build

Testing Tools

Use the MCP Inspector for interactive testing:

npm run inspect

Logging

All logs are written to stderr (MCP protocol requirement). The server uses structured logging with:

  • Timestamps

  • Color-coded levels (info, warn, error)

  • Tool execution tracking

  • Performance metrics

Troubleshooting

"Jest environment not initialized"

Run the setup command:

npm run setup:test-env

Test execution fails

  1. Check that files are valid TypeScript/JavaScript

  2. Verify test file uses Jest syntax

  3. Check timeout settings (increase if needed)

  4. Inspect workspace with get-test-workspace tool

Workspace not found

Workspaces may have been cleaned up due to retention policy. Check:

  • TDD_MCP_WORKSPACE_RETENTION_HOURS setting

  • Use list-test-history to see available workspaces

Security

  • Path validation: All file operations validate paths to prevent directory traversal

  • Workspace isolation: Each test run is isolated in its own directory

  • No external dependencies: Tests run with provided code only (no npm install in workspaces)

  • Timeout protection: Tests are killed if they exceed timeout

License

MIT

Contributing

Contributions welcome! Please follow the existing code style and architecture patterns.

Support

For issues or questions, please file a GitHub issue with:

  • MCP server version

  • Tool used and parameters

  • Error messages (from stderr logs)

  • Expected vs actual behavior

Available Tools

10 tools
add-test-fileAdd Test FileA

Add an additional test file to an existing workspace and optionally run all tests. Useful for adding edge case tests, integration tests, or additional test suites without re-uploading implementation code. Automatically runs all tests in the workspace unless autoRunTests is false.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceIdYesWorkspace ID to add test file to
testFileYesTest file to add to the workspace
timeoutMsNoTest execution timeout in milliseconds
autoRunTestsNoAutomatically run all tests after adding (default: true)

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses auto-run behavior and workspace prerequisite, but does not mention error conditions, authorization needs, or potential side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: two sentences with no filler. Key information front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema; description does not explain return values or test run result details. Adequate for core action but incomplete for a tool with 4 parameters and nested objects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and description adds value by explaining autoRunTests default and effect. Does not add further to nested object parameters beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'add', resource 'test file', and optional action 'run all tests'. Distinguishes from siblings like 'run-test' and 'update-implementation'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides usage context ('edge case tests, integration tests, additional test suites') and notes automatic test running. Lacks explicit when-not or alternative tool recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clean-workspaceClean WorkspaceA

Delete test workspace(s) and their associated history. Can delete a specific workspace by ID, or clean all old workspaces based on age. Returns a summary of deleted workspaces.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceIdNoOptional workspace ID to clean. If not provided, cleans all old workspaces.
olderThanHoursNoOnly clean workspaces older than this many hours (safety filter)

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description indicates a destructive action and returns a summary, but omits details like irreversibility, permission requirements, or side effects (e.g., cascading deletes). This is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences front-load the key information: what it does (delete workspaces), modes (by ID or age), and what it returns. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with no output schema, the description explains the return value (summary) and basic behavior. It is fairly complete, though it could mention that deletion is irreversible.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds context: workspaceId is optional and triggers age-based cleaning; olderThanHours is a safety filter. This enhances understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool deletes test workspaces and associated history, with two distinct modes: by ID or by age. This distinguishes it from sibling tools like get-test-workspace or list-workspaces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use each mode (specific ID vs. cleaning old workspaces), but does not explicitly state when not to use it or mention alternative tools like list-workspaces for inspection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-test-run-detailsGet Test Run DetailsA

Retrieve complete details of a historical test run by history ID. Returns full test results, error messages, stack traces, and coverage data from a previous test execution. Useful for comparing test results across iterations, reviewing past failures, or analyzing coverage progression.

ParametersJSON Schema
NameRequiredDescriptionDefault
historyIdYesHistory ID of the test run to retrieve (returned by run-test)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses what is returned: full test results, error messages, stack traces, and coverage data. It does not explicitly state that the operation is read-only or idempotent, but the context suggests no side effects. Additional detail on rate limits or permissions would improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the action and resource. No redundant or extraneous information. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description fully explains what is returned and the purpose. For a simple tool with one parameter, this is complete. It covers the what, the inputs, and the use cases adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one parameter 'historyId' and a description. The tool description adds context ('returned by run-test'), which clarifies where the ID comes from, adding value beyond the schema. Baseline is 3 due to high coverage, and this extra context earns a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'Retrieve complete details' and the resource 'historical test run by history ID'. It distinguishes itself from sibling tools like list-test-history (which lists runs) and run-test (creates runs) by focusing on historical detail retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases: 'comparing test results across iterations, reviewing past failures, or analyzing coverage progression.' It implies when to use this tool but does not explicitly state when not to use it or contrast with alternatives like list-test-history for simpler listing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-test-workspaceGet Test WorkspaceA

Retrieve the contents and metadata of a test workspace. Returns workspace metadata, list of files with their contents, and current Jest configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceIdYesID of the workspace to inspect

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It describes a read-only retrieval but does not disclose potential side effects, prerequisites (e.g., workspace existence), or performance implications. Basic transparency, no contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence (20 words) is appropriately sized and front-loaded with the main action. Could be slightly tighter by avoiding repetition of 'workspace', but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, so description explains return values (metadata, files with contents, Jest config). Covers input and output adequately for a simple retrieval tool. Missing error conditions or access requirements, but complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema provides full coverage for the single parameter with description 'ID of the workspace to inspect'. The tool description adds context about what the tool returns but does not add new meaning to the parameter itself. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (retrieve) and the specific resource (test workspace contents and metadata). It distinguishes from siblings by detailing what is returned: workspace metadata, file list with contents, and Jest configuration. No ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage: inspect a test workspace. No explicit guidance on when to use vs siblings like 'list-workspaces' or 'get-test-run-details'. Lacks exclusions or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-test-historyList Test HistoryA

Retrieve a list of past test runs with optional filters by workspace, status, or date. Returns summaries of test runs including timestamps, workspace IDs, pass/fail status, and file names.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return
workspaceIdNoFilter by workspace ID
statusNoFilter by test status

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description partially covers behavior: it lists the return fields but does not disclose pagination, sorting order, or whether only completed runs are returned. It does not mention any side effects, but for a read-only tool, this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (two sentences) and efficiently conveys purpose and output content. No redundant or filler information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (3 optional params, no output schema), the description covers the key aspects: what it returns (summaries with specific fields) and the filters. Could mention limit default or sorting, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description mentions 'optional filters' and lists the workspaceId and status implicitly, but does not add meaning beyond the schema descriptions. No additional parameter context provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's purpose: retrieving a list of past test runs. It specifies the resource (past test runs) and the action (retrieve with optional filters). It distinguishes from sibling tools like 'run-test' and 'get-test-run-details' by focusing on listing historical runs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. For example, no mention of when to prefer 'get-test-run-details' for detailed info or 'run-test' for new runs. No hints about prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-workspacesList WorkspacesA

List all available test workspaces with their metadata. Returns workspace IDs, creation timestamps, language type, and file counts. Useful for discovering existing workspaces, understanding workspace organization, and managing workspace lifecycle.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of workspaces to return (default: 50)
sortByNoSort workspaces by creation time or file countcreated

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full burden. It correctly implies a read-only operation by stating 'list all... with their metadata' and lists returned fields. However, it does not disclose potential side effects, authentication needs, or behavior with large result sets beyond the limit parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences that are front-loaded with purpose, followed by output details and use cases. No superfluous language; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a listing tool with two optional parameters and no output schema, the description adequately covers purpose, output fields, and usage context. It could mention pagination or ordering defaults more explicitly, but the limit parameter and sortBy enum cover these.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with both parameters described. The description does not add additional meaning beyond what the schema already provides (limit and sortBy with defaults and descriptions), so it meets the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all available test workspaces with their metadata,' providing a specific verb-resource pair. It distinguishes from sibling tools like 'get-test-workspace' (which retrieves a single workspace) by emphasizing 'all' workspaces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists use cases ('discovering existing workspaces, understanding workspace organization, and managing workspace lifecycle'), giving context for when to use. However, it does not explicitly state when not to use or mention alternatives like 'get-test-workspace' for a single workspace.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run-specific-testsRun Specific TestsA

Run a subset of tests in an existing workspace using Jest test name patterns or file path patterns. Useful for focused testing during debugging, running only failing tests, or testing specific functionality without running the entire suite. Supports Jest's -t flag for test names and file path patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceIdYesWorkspace ID to run tests in
testNamePatternNoJest test name pattern (regex) to run specific tests by name (e.g., "should add", "multiplication")
testPathPatternNoFile path pattern to run specific test files (e.g., "calculator.test.ts", "*.integration.test.*")
timeoutMsNoTest execution timeout in milliseconds

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses use of Jest patterns and timeout, but does not mention potential side effects, authentication needs, or return value format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with front-loaded purpose, no redundant information, each sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description adequately explains functionality and parameters, though missing details on return values or results format. Overall sufficient for a test-runner tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage with descriptions, and description adds context with examples for testNamePattern and testPathPattern, plus mentions Jest's -t flag, adding meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs a subset of tests using Jest test name or file path patterns, distinguishing it from sibling tools like 'run-test' (likely runs all tests) and other workspace management tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (debugging, running only failing tests, specific functionality testing) and references Jest flags, but does not explicitly state when not to use it or compare with alternative tools like 'run-test'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run-testRun Jest TestsA

Execute Jest tests on provided implementation and test files in an isolated workspace. Returns detailed test results including pass/fail status, individual test results, error messages, stack traces, and code coverage metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
implementationFileYesImplementation file to test
testFileYesTest file containing Jest tests
languageNoLanguage of the filestypescript
workspaceIdNoOptional workspace ID to reuse existing workspace
timeoutMsNoTest execution timeout in milliseconds

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses return details (pass/fail, errors, stack traces, coverage) and mentions isolation. However, it does not clarify side effects like workspace creation or cleanup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first sentence clearly states action and context, second describes output. No wasted words, front-loaded with key info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description covers what the tool does and what it returns, which is important since no output schema exists. It mentions isolation but could clarify workspace lifecycle. Still fairly complete for a test execution tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions. The tool description does not add extra semantic meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it executes Jest tests on provided files in an isolated workspace, specific verb and resource. However, it does not explicitly differentiate from sibling tool 'run-specific-tests', so it's not a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'run-specific-tests' or what conditions are necessary. The description only states what it does without any contextual usage advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-implementationUpdate ImplementationA

Update an implementation file in an existing workspace and optionally run tests. This enables efficient iteration during the refactor phase of TDD without re-uploading test files. Automatically runs tests and saves results to history unless autoRunTests is false.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceIdYesWorkspace ID to update
implementationFileYesImplementation file with updated content
timeoutMsNoTest execution timeout in milliseconds
autoRunTestsNoAutomatically run tests after updating (default: true)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that tests are automatically run and results saved to history unless autoRunTests is false, and emphasizes efficient iteration. It does not mention potential destructive overwrite behavior, but that is implied by 'update'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main action and purpose. Every sentence adds value: first sentence states the action and option, second sentence explains the use case and auto-run behavior. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main behavior and use case, but lacks explanation of the return value or what 'saves results to history' means for the agent. Given the tool has no output schema and 4 parameters including a nested object, the description is mostly complete but could clarify the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds context about auto-run tests related to autoRunTests but does not add meaning to workspaceId or implementationFile beyond the schema. This is adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'update' and the resource 'implementation file', and specifies the context 'during the refactor phase of TDD' and the benefit 'without re-uploading test files'. It distinguishes from siblings like 'add-test-file' and 'run-test'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (during TDD refactor) and contrasts with not needing to re-upload test files. However, it does not explicitly state when not to use it or mention alternatives beyond sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-jest-configUpdate Jest ConfigurationA

Update the Jest configuration in a workspace by merging new settings with the existing config. Useful for adjusting coverage thresholds, test patterns, or other Jest options.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceIdYesID of the workspace to update Jest config for
configUpdatesYesJest configuration options to merge with existing config

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden. It mentions 'merging new settings' but does not elaborate on merge semantics (e.g., shallow vs deep, error handling, persistence). Basic transparency is provided but lacks detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences concisely convey the purpose and typical use cases without extraneous information. The key point is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, but the description adequately covers the input and operation. However, it could mention return value or side effects (e.g., if validation occurs). Overall sufficient for a straightforward update tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description adds context by explaining the merge behavior, which goes beyond the schema's 'merge with existing config' note. This helps the agent understand the update mechanism.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: update Jest configuration in a workspace via merging. It distinguishes from sibling tools like 'add-test-file' or 'run-test', which focus on other test-related operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage guidance by listing example adjustments (coverage thresholds, test patterns). However, it does not specify when not to use this tool or mention alternatives, though sibling tools imply distinct purposes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv1.1.0
    • First observedadd-test-file
    • First observedclean-workspace
    • First observedget-test-run-details
    • First observedget-test-workspace
    • First observedlist-test-history
    • First observedlist-workspaces
    • First observedrun-specific-tests
    • First observedrun-test
    • First observedupdate-implementation
    • First observedupdate-jest-config

TDQS

A4.1/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: adding test files, cleaning workspaces, retrieving details, listing, running tests, updating implementation or config. The only potential overlap is between run-test and run-specific-tests, but their descriptions clarify one is for initial execution and the other for subset runs.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with hyphens (e.g., add-test-file, list-workspaces, update-jest-config). The naming is predictable and uniform.

Tool Count5/5

10 tools appropriately cover the TDD workspace lifecycle: creating, listing, running tests, updating code, configuring Jest, and cleaning. This is a well-scoped set without unnecessary tools.

Completeness4/5

The tools cover the main TDD workflow well, including adding tests, updating implementation, running tests, viewing history, and managing workspaces. A minor gap is the lack of a tool to delete individual test files from a workspace, but the overall surface is comprehensive.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers