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

@mcptoolshop/npm-launcher

v1.1.0

Published

Generic GitHub-release binary launcher with cache + SHA256 verification

Downloads

274

Readme

这是一个通用的 GitHub 发布二进制文件启动器,用于 npm。它从 GitHub 发布页面下载特定平台的二进制文件,将它们缓存在本地,验证 SHA256 校验和,并以完整参数传递的方式运行它们。

该工具旨在使 Python 命令行工具(或任何编译后的二进制文件)能够以零依赖的方式通过 npx 进行分发。

安全性和威胁模型

npm-launcher 下载并执行二进制文件。以下是它所涉及的内容以及它不涉及的内容:

  • 网络: 仅使用 HTTPS,连接到 github.com 和 GitHub 的 CDN。 不连接到其他目标地址。
  • 文件系统: 仅写入本地缓存目录 (~/.cache/mcptoolshop/%LOCALAPPDATA%\mcptoolshop\)。 不修改系统文件,也不读取缓存目录以外的文件。
  • 验证: 每个二进制文件都与同一发布页面中的 checksums-<version>.txt 文件的 SHA256 值进行比较。 如果不匹配,则中止执行并删除下载的文件。
  • 无遥测。 不处理任何密钥。 不存储或传输任何凭据。
  • 权限: 仅需要正常的用户文件系统访问权限和出站 HTTPS 连接权限。

工作原理

npx @mcptoolshop/sovereignty tutorial
        │
        ▼
  wrapper sets config JSON
        │
        ▼
  npm-launcher resolves platform (linux-x64, darwin-arm64, etc.)
        │
        ▼
  checks local cache (~/.cache/mcptoolshop/<tool>/<version>/)
        │
        ├─ cached → run binary
        │
        └─ not cached:
             fetch checksums-<version>.txt from GitHub Release
             download <tool>-<version>-<os>-<arch>[.exe]
             verify SHA256
             cache + chmod +x
             run binary

安装

npm install @mcptoolshop/npm-launcher

此包是一个用于包装程序的库——最终用户安装包装程序(例如 npx @mcptoolshop/sovereignty),而不是直接安装此包。

配置接口

包装程序通过 MCPTOOLSHOP_LAUNCH_CONFIG 传递纯 JSON 数据。 不支持任何函数或魔法操作。

| 字段 | 是否必需 | 示例 | 描述 | |------------|----------|------------------------|--------------------------------------| | toolName | 是 | "sovereignty" | 二进制文件基础名称 | | owner | 是 | "mcp-tool-shop-org" | GitHub 组织/用户名 | | repo | 是 | "sovereignty" | GitHub 仓库名称 | | version | 是 | "1.4.0" | 语义版本号(不带 v 前缀) | | tag | no | "v1.4.0" | Git 标签(默认为 v<version>) | | quiet | no | true | 抑制进度消息 |

资源命名约定

已锁定。 所有工具都遵循相同的模式:

<toolName>-<version>-<os>-<arch><ext>

| 平台 | 示例资源 | |---------------|--------------------------------------| | Linux x64 | sovereignty-1.4.0-linux-x64 | | macOS ARM | sovereignty-1.4.0-darwin-arm64 | | macOS Intel | sovereignty-1.4.0-darwin-x64 | | Windows x64 | sovereignty-1.4.0-win-x64.exe |

校验和文件:checksums-<version>.txt (GNU coreutils 格式)。

编写包装程序

一个包装程序是一个非常小的 npm 包(约 3 个文件):

package.json:

{
  "name": "@mcptoolshop/sovereignty",
  "version": "1.4.0",
  "bin": { "sovereignty": "bin/sovereignty.js" },
  "dependencies": { "@mcptoolshop/npm-launcher": "^1.0.0" }
}

bin/sovereignty.js:

#!/usr/bin/env node
process.env.MCPTOOLSHOP_LAUNCH_CONFIG = JSON.stringify({
  toolName: "sovereignty",
  owner: "mcp-tool-shop-org",
  repo: "sovereignty",
  version: "1.4.0",
});
require("@mcptoolshop/npm-launcher/bin/mcptoolshop-launch.js");

请参阅 examples/ 目录,了解完整的包装程序模板和 CI 工作流程。

环境变量

| 变量 | 效果 | |----------|--------| | MCPTOOLSHOP_LAUNCHER_QUIET=1 | 抑制进度消息(错误仍然会显示) |

支持的平台

  • Linux x64
  • macOS ARM64 (Apple Silicon)
  • macOS x64 (Intel)
  • Windows x64

缓存位置

| OS | 路径 | |---------|----------------------------------------------| | Linux | ~/.cache/mcptoolshop/<tool>/<version>/ | | macOS | ~/.cache/mcptoolshop/<tool>/<version>/ | | Windows | %LOCALAPPDATA%\mcptoolshop\<tool>\<version>\ |


MCP Tool Shop 构建。