mcpField
M
MCP Test Client

MCP Test Client

Local
github.com/crazyrabbitLTCDeveloper Tools13Updated 95w ago

About MCP Test Client

MCP Test Client is a TypeScript utility for developers testing MCP servers. It connects to servers, calls tools, and validates results, with a mock calculator server included as an example.

Key features

  1. 01Connect to MCP servers
  2. 02List available tools
  3. 03Call named tools
  4. 04Assert response results
  5. 05Includes a mock calculator server

Use cases

  1. 01Test tool calls on an MCP server
  2. 02Validate tool response results
  3. 03Learn testing with the calculator example

MCP support

As an MCP client, it connects to servers, lists and calls tools, and checks their responses.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

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

bun install mcp-test-client

Usage

Basic Example
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:

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
constructor(config: { serverCommand: string; serverArgs: string[] })
Methods
  • init(): Promise<void> - Initialize the client and connect to the server
  • listTools(): Promise<Tool[]> - Get a list of available tools from the server
  • callTool(toolName: string, args: Record<string, unknown>): Promise<ToolResult> - Call a specific tool
  • assertToolCall(toolName: string, args: Record<string, unknown>, assertion: (result: ToolResult) => void | Promise<void>): Promise<void> - Call a tool and run assertions on the result
  • cleanup(): Promise<void> - Clean up resources and disconnect from the server

Development

Prerequisites
  • Bun (v1.0.0 or higher)
Setup
  1. Clone the repository
git clone <repository-url>
cd mcp-test-client
  1. Install dependencies
bun install
  1. Run tests
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

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.