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

mcp-reachability

v0.1.0

Published

Two-probe MCP registry reachability dataset and live MCP health check, with controls and coverage caveats

Readme

mcp-reachability

Two observations of MCP registry reachability, plus a live health-check CLI. Zero runtime dependencies; Node.js 22+.

712 of 777 previously failing registry server rows failed again (91.63%). In the same second run, 4 of 300 randomly selected previously working controls failed (1.33%). The frozen threshold was at least 75% repeated failures; more than 15% control failures would void the run. This is evidence of repeated failure with this method, not proof of continuous downtime or global deadness.

npx mcp-reachability summary
npx mcp-reachability check https://tandem.ac/mcp
npx mcp-reachability lookup ac.tandem/docs-mcp
npx mcp-reachability dataset > reachability.jsonl

check performs MCP initialize, notifications/initialized, and paginated tools/list over HTTP POST, accepting JSON or SSE responses. It never invokes a tool. Requests have a 12-second timeout and the check has a 12-minute total cap. Exit codes: 0 for ok/auth_required/empty_tools, 1 for a classified failure, 2 for usage or local errors. Only check URLs you intend to contact; redirects are followed. This CLI is not a hosted URL-checking service.

dataset emits all 4,609 original registry server rows with probe1, probe2, and cohort. Probe 2 is null for 3,532 rows that were not re-probed; null does not mean dead. Each observation retains individual remote endpoint traces, response statuses, timestamps, and error messages. lookup matches an exact registry name or original remote URL. summary supplies counts, transitions, metadata, and caveats. These commands work offline except check.

JavaScript API:

import {check, dataset, summary, metadata} from 'mcp-reachability';
console.log(await check('https://tandem.ac/mcp'));
console.log(summary.persistent_failures); // 712

Probe 1: 2026-09-08T15:26:29.493Z–2026-09-08T15:38:29.541Z. Probe 2: 2026-09-09T03:42:23.820Z–2026-09-09T03:44:15.812Z, more than 12 hours after probe 1 completed. Both use the same protocol/classification logic, concurrency 25, request timeout 12 seconds, and 12-minute run cap. The random control selection and shuffled combined run order were frozen before execution; data/manifest.json records the seed, names, source hashes, and thresholds.

Coverage and limitations:

  • 4,609 of 16,444 remote registry servers were attempted initially, in an ordered, time-capped traversal. The other 11,835 were not probed. The second run covers only the 777 prior failures and 300 controls. Do not extrapolate these rates to the full registry.
  • Single workspace network vantage per run. Geographic location and egress IP were not recorded or verified; controls check degradation, not geographic equivalence. A server failing from here may be alive elsewhere.
  • auth_required is alive, not dead. The 65 recoveries comprise 57 ok and 8 auth_required.
  • Frozen failure outcomes: not_found, network_error, rpc_error, timeout, server_error. These include protocol incompatibility and tools/list errors, not just unreachable hosts. Legacy SSE-only and tools-free servers may be usable by other clients. empty_tools is not one of the frozen failures.
  • Rows are registry servers, sometimes with multiple endpoints. The original aggregation chooses any ok endpoint, otherwise the first endpoint. An auth-required secondary endpoint does not override a failing first endpoint; inspect endpoint traces before drawing endpoint-level conclusions.
  • Repeated network_error is not proof of dead DNS: the original prober captures only the top-level error. Two observations do not prove persistent failure throughout the intervening hours.

The package is free and has no payment mechanism. This result establishes repeated failures in the sampled population; it does not establish customer demand.