trackmcp
Back to directory
crazyrabbitLTC

mcp-test-client

View on GitHub

MCP Test Client is a TypeScript testing utility for Model Context Protocol (MCP) servers.

11 stars TypeScriptDeveloper Kits Updated Jul 24, 2025

Documentation

MCP Test Client

A testing utility for Model Context Protocol (MCP) servers. This client helps you test MCP server implementations by providing a simple interface for making tool calls and validating responses.

Features

  • Easy-to-use testing interface for MCP servers
  • Built-in support for tool listing and tool calls
  • Type-safe implementation using TypeScript
  • Assertion utilities for validating server responses
  • Mock calculator server implementation for examples

Installation

bash
bun install mcp-test-client

Usage

Basic Example

typescript
import { MCPTestClient } from 'mcp-test-client';

describe('MCP Server Tests', () => {
  let client: MCPTestClient;

  beforeAll(async () => {
    client = new MCPTestClient({
      serverCommand: 'bun',
      serverArgs: ['./path/to/your/server.ts'],
    });
    await client.init();
  });

  afterAll(async () => {
    await client.cleanup();
  });

  test('should list available tools', async () => {
    const tools = await client.listTools();
    expect(tools).toContainEqual(
      expect.objectContaining({
        name: 'your-tool-name',
        description: 'Your tool description',
      })
    );
  });

  test('should call a tool', async () => {
    await client.assertToolCall(
      'your-tool-name',
      { arg1: 'value1', arg2: 'value2' },
      (result) => {
        expect(result.content[0].text).toBe('expected result');
      }
    );
  });
});

Calculator Server Example

The package includes a mock calculator server for testing and learning purposes:

typescript
import { MCPTestClient } from 'mcp-test-client';

describe('Calculator Server Tests', () => {
  let client: MCPTestClient;

  beforeAll(async () => {
    client = new MCPTestClient({
      serverCommand: 'bun',
      serverArgs: ['./tests/mocks/calculator.ts'],
    });
    await client.init();
  });

  afterAll(async () => {
    await client.cleanup();
  });

  test('should perform addition', async () => {
    await client.assertToolCall(
      'calculate',
      { operation: 'add', a: 5, b: 3 },
      (result) => {
        expect(result.content[0].text).toBe('8');
      }
    );
  });
});

API Reference

`MCPTestClient`

Constructor

typescript
constructor(config: { serverCommand: string; serverArgs: string[] })

Methods

  • `init(): Promise` - Initialize the client and connect to the server
  • `listTools(): Promise` - Get a list of available tools from the server
  • `callTool(toolName: string, args: Record): Promise` - Call a specific tool
  • `assertToolCall(toolName: string, args: Record, assertion: (result: ToolResult) => void | Promise): Promise` - Call a tool and run assertions on the result
  • `cleanup(): Promise` - Clean up resources and disconnect from the server

Development

Prerequisites

  • Bun (v1.0.0 or higher)

Setup

1. Clone the repository

bash
git clone 
cd mcp-test-client

2. Install dependencies

bash
bun install

3. Run tests

bash
bun test

License

MIT

Contributing

1. Fork the repository

2. Create your feature branch (`git checkout -b feature/amazing-feature`)

3. Commit your changes (`git commit -m 'Add some amazing feature'`)

4. Push to the branch (`git push origin feature/amazing-feature`)

5. Open a Pull Request

Frequently asked questions

What is mcp-test-client?

mcp-test-client is MCP Test Client is a TypeScript testing utility for Model Context Protocol (MCP) servers.

How do I install mcp-test-client?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is mcp-test-client open source?

Yes — it is hosted on GitHub at https://github.com/crazyrabbitLTC/mcp-test-client and has 11 stars.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP