An open API service indexing awesome lists of open source software.

https://github.com/moekiorg/mcp-testing-library

Test environment for MCP servers
https://github.com/moekiorg/mcp-testing-library

Last synced: 5 months ago
JSON representation

Test environment for MCP servers

Awesome Lists containing this project

README

          

# MCP Testing Library

A CLI tool for running Model Context Protocol (MCP) tests.

## Features

- CLI tool for running MCP tests
- Supports running individual test files or test patterns
- Configurable test timeout and exclusion patterns
- Verbose mode for detailed output
- Written in TypeScript with full type support
- Compatible with the Model Context Protocol SDK
- Colorful test output for better readability
- Comprehensive test coverage

## Installation

To install as a development dependency in your project:

```bash
npm install --save-dev mcp-testing-library
```

## Usage

### Command Line Options

```
Usage: mcpt [options] [test-files...]

Options:
-v, --version output version number
-e, --exclude Exclude files matching the pattern (comma-separated)
(default: "**/node_modules/**,**/dist/**")
-t, --timeout Set test timeout in milliseconds (default: "30000")
--pattern Test file pattern to match (default: "**/*.test.{js,ts}")
--no-color Disable colored output
-h, --help display help for command
```

### Examples

Run all tests in the project:

```bash
mcpt
```

Run a specific test file:

```bash
mcpt sample/index.test.ts
```

Run tests with a longer timeout:

```bash
mcpt --timeout 10000
```

Run tests without color output:

```bash
mcpt --no-color
```

Exclude specific directories:

```bash
mcpt --exclude "**/node_modules/**,**/dist/**,**/build/**"
```

## Using in Code

You can also use the MCP test utilities directly in your code:

```typescript
import { mcpt, expect } from 'mcp-testing-library';

// Test a filesystem MCP server
mcpt(
{
command: 'npx',
args: ['-y', '@modelcontextprotocol/server-filesystem', '/path/to/directory'],
},
async ({ tools, prompts, resources, isMethodExist }) => {
expect(tools.length).to.be.greaterThan(0);
expect(await isMethodExist('list-tools')).to.eq(true);

// More assertions...
}
);
```

## License

MIT