T

mcp-test-client

...
Created 1/2/2025bycrazyrabbitLTC

Language:

TypeScript

Stars:

7

Forks:

0

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 - 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
git clone 
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
Last updated: 2/19/2025

Publisher info

crazyrabbitLTC's avatar

Dennison Bertram

Co-Founder & CEO www.tally.xyz Previously: Founder DappHero.io Developer Advocate: https://openzeppelin.com/

154
followers
41
following
209
repos

More MCP servers built with TypeScript

docbase-mcp-server

MCP Server Implementation for DocBase

By f4401
aapi-mcp-server

Advanced API MCP Server

By Asphere-xyz1
DBX-MCP-Server

MCP Server for Dropbox

By amgadabdelhafez1