npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

mcping

v2.0.0

Published

Minecraft server ping library

Downloads

428

Readme

mcping

Robust, and well-typed Minecraft server ping library for Node.js. Supports both Java Edition (1.7.x - 1.21+) and Bedrock Edition.

Also includes a Modern CLI for quick server status checks directly from your terminal.

Features

  • Unified API: One simple function ping(target, options) for all protocols.
  • Auto-Detect: Automatically detects if a server is Java or Bedrock.
  • High Performance Caching: Built-in support for multiple caching strategies.
  • Modern & Typed: Written in TypeScript with full ESM and CJS support.
  • SRV Support: Native DNS SRV record resolution (_minecraft._tcp and _minecraft._udp).
  • Real IP Resolution: Always resolves and returns the final physical IP address.
  • Rich Responses: Includes normalized MOTD (handling JSON and colors), player counts, versions, and latency.
  • Legacy & Modded: Verified compatibility with 1.7.10+, Forge, and modded network proxies.

Installation

npm install mcping

Usage

Simple Ping (Auto-detect)

import { ping } from "mcping";

const res = await ping("mc.hypixel.net");
console.log(`${res.players.online}/${res.players.max} players online.`);
console.log(`Resolved IP: ${res.target.ip}:${res.target.port}`);

Caching Strategies

The library supports two main caching strategies to optimize performance and reduce network overhead:

  1. lazy (Cache-Aside): Checks for a fresh cached result before making a network request.
  2. swr (Stale-While-Revalidate): Returns cached data immediately (even if stale) while refreshing the cache in the background.
const res = await ping("mc.hypixel.net", {
  cache: {
    ttl: 30000, // 30 seconds
    strategy: "swr", // 'lazy' | 'swr'
  },
});

console.log(res.cached ? "(From Cache)" : "(Live)");

Specific Protocol

const res = await ping("geo.hivebedrock.network", { type: "bedrock" });

Options

const res = await ping("example.com", {
  timeout: 3000, // default: 5000ms
  type: "java", // 'java' | 'bedrock' | null (auto-detect)
});

Response Schema

{
  type: "java" | "bedrock";
  version: {
    name: string;
    protocol: number;
  };
  players: {
    online: number;
    max: number;
  };
  motd: string;        // Cleaned string with formatting preserved as § codes
  latency: number;     // Round-trip time in ms (Java only, 0 for Bedrock)
  target: {
    host: string;      // Resolved hostname (e.g. from SRV)
    port: number;      // Final port
    ip: string;        // Physical IP address
  };
  raw: any;            // The original raw response from the server
  cached?: boolean;    // True if the response was served from cache
}

CLI Usage

The library includes a Neofetch-inspired command-line interface for quick status checks.

# Using npx
npx mcping mc.hypixel.net

# Options
npx mcping mc.hypixel.net --timeout 1000
npx mcping play.cubecraft.net --type bedrock

# Or install globally
npm install -g mcping
mcping mc.hypixel.net

License

MIT © HarmoniaMC