punkpeye
MCP Serverpunkpeyepublic

mcp client

An MCP client for Node.js.

Repository Info

95
Stars
9
Forks
95
Watchers
3
Issues
TypeScript
Language
MIT License
License

About This Server

An MCP client for Node.js.

Model Context Protocol (MCP) - This server can be integrated with AI applications to provide additional context and capabilities, enabling enhanced AI interactions and functionality.

Documentation

MCP Client

An MCP client for Node.js.

TIP

This client has been tested with FastMCP.

Why?

  • MCP TypeScript SDK provides a client for the MCP protocol, but it's a little verbose for my taste. This client abstracts away some of the lower-level details (like pagination, Zod schemas, etc.) and provides a more convenient API.
  • The MCP protocol follows some REST-like naming conventions, like listTools and readResource, but those names look a bit awkward in TypeScript. This client uses more typical method names, like getTools and getResource.

Usage

Creating a client

import { MCPClient } from "mcp-client";

const client = new MCPClient({
  name: "Test",
  version: "1.0.0",
});

Connecting using Streaming HTTP

await client.connect({
  type: "httpStream",
  url: "http://localhost:8080/mcp",
});

Connecting using stdio

await client.connect({
  type: "stdio",
  args: ["--port", "8080"],
  command: "node",
  env: {
    PORT: "8080",
  },
});

Connecting using SSE (Deprecated)

await client.connect({
  type: "sse",
  url: "http://localhost:8080/sse",
});

Pinging the server

await client.ping();

Calling a tool

const result = await client.callTool({
  name: "add",
  arguments: { a: 1, b: 2 },
});

Calling a tool with a custom result schema

const result = await client.callTool(
  {
    name: "add",
    arguments: { a: 1, b: 2 },
  },
  {
    resultSchema: z.object({
      content: z.array(
        z.object({
          type: z.literal("text"),
          text: z.string(),
        }),
      ),
    }),
  },
);

Listing tools

const tools = await client.getAllTools();

Listing resources

const resources = await client.getAllResources();

Reading a resource

const resource = await client.getResource({ uri: "file:///logs/app.log" });

Getting a prompt

const prompt = await client.getPrompt({ name: "git-commit" });

Listing prompts

const prompts = await client.getAllPrompts();

Setting the logging level

await client.setLoggingLevel("debug");

Completing a prompt

const result = await client.complete({
  ref: { type: "ref/prompt", name: "git-commit" },
  argument: { name: "changes", value: "Add a new feature" },
});

Listing resource templates

const resourceTemplates = await client.getAllResourceTemplates();

Receiving logging messages

client.on("loggingMessage", (message) => {
  console.log(message);
});

NOTE

Equivalent to setNotificationHandler(LoggingMessageNotificationSchema, (message) => { ... }) in the MCP TypeScript SDK.

Quick Start

1

Clone the repository

git clone https://github.com/punkpeye/mcp-client
2

Install dependencies

cd mcp-client
npm install
3

Follow the documentation

Check the repository's README.md file for specific installation and usage instructions.

Repository Details

Ownerpunkpeye
Repomcp-client
LanguageTypeScript
LicenseMIT License
Last fetched8/10/2025

Recommended MCP Servers

💬

Discord MCP

Enable AI assistants to seamlessly interact with Discord servers, channels, and messages.

integrationsdiscordchat
🔗

Knit MCP

Connect AI agents to 200+ SaaS applications and automate workflows.

integrationsautomationsaas
🕷️

Apify MCP Server

Deploy and interact with Apify actors for web scraping and data extraction.

apifycrawlerdata
🌐

BrowserStack MCP

BrowserStack MCP Server for automated testing across multiple browsers.

testingqabrowsers

Zapier MCP

A Zapier server that provides automation capabilities for various apps.

zapierautomation