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

@keyskraft/mcp

v2.0.1

Published

MCP server for Keyskraft product search and queues

Readme

@keyskraft/mcp

Read-only MCP server for Keyskraft product search and queues, backed by the NestJS API at /mcp/*.

Install: npmjs.com/package/@keyskraft/mcp

Cursor configuration

Add to Cursor Settings → MCP or .cursor/mcp.json.

Production (default)

Connects to https://api.keyskraft.com automatically:

{
  "mcpServers": {
    "keyskraft": {
      "command": "npx",
      "args": [
        "-y",
        "--package=@keyskraft/mcp",
        "keyskraft-mcp",
        "--api-key",
        "your-production-api-key"
      ]
    }
  }
}

Or with an environment variable:

{
  "mcpServers": {
    "keyskraft": {
      "command": "npx",
      "args": ["-y", "--package=@keyskraft/mcp", "keyskraft-mcp"],
      "env": {
        "KEYSKRAFT_API_KEY": "your-production-api-key"
      }
    }
  }
}

Local development

Point at your local API with --local or --api-url:

{
  "mcpServers": {
    "keyskraft": {
      "command": "npx",
      "args": [
        "-y",
        "--package=@keyskraft/mcp",
        "keyskraft-mcp",
        "--local",
        "--api-key",
        "your-local-api-key"
      ]
    }
  }
}

Reload MCP servers in Cursor after saving (Settings → MCP → refresh).

CLI usage

Production:

npx -y --package=@keyskraft/mcp keyskraft-mcp --api-key your-production-api-key

Local:

npx -y --package=@keyskraft/mcp keyskraft-mcp --local --api-key your-local-api-key

| Flag / env | Description | | --------------------------------------- | ------------------------------------------------------------------- | | --api-key / KEYSKRAFT_API_KEY | API key matching API_KEY in the NestJS .env (required) | | --local | Use http://localhost:3001 instead of the built-in production URL | | --api-url | Override the API base URL (local dev only) | | KEYSKRAFT_API_URL | Same as --api-url (optional override — not needed for production) | | TRUPLAYS_API_KEY / TRUPLAYS_API_URL | Deprecated aliases kept for backward compatibility |

CLI flags take precedence over environment variables.

Available tools

Products

| Tool | Description | | ----------------- | ------------------------------------------------------------------- | | search_products | Search products by name, platform, region, DRM, category, and stock |

Queues

| Tool | Description | | ---------------------------- | --------------------------------------------- | | get_queue_status | Job counts for all Bull queues | | get_queue_jobs | Jobs in a queue (with optional status filter) | | get_queue_health | Health summary | | get_queue_metrics | Throughput and error rate | | get_key_procurement_status | Detailed key-procurement status | | get_key_procurement_job | Single key-procurement job by ID |

API routes

The MCP server calls these read-only endpoints (protected by X-API-Key unless noted):

  • GET /search/products (public fallback for product search)
  • GET /mcp/products/search
  • GET /mcp/queues
  • GET /mcp/queues/jobs
  • GET /mcp/queues/health
  • GET /mcp/queues/metrics
  • GET /mcp/queues/key-procurement/status
  • GET /mcp/queues/key-procurement/jobs/:jobId

Working on the package locally

cd mcp
npm install
npm run build

Run from the repo without publishing:

{
  "mcpServers": {
    "keyskraft": {
      "command": "npx",
      "args": [
        "-y",
        "--package=/absolute/path/to/truplays/mcp",
        "keyskraft-mcp",
        "--local",
        "--api-key",
        "your-local-api-key"
      ]
    }
  }
}

Publishing

Create the @keyskraft npm org first if it does not exist, then:

cd mcp
npm version patch   # or minor / major
npm publish --access public

The README on npm updates automatically on the next publish.

Migration from @truplays/mcp

Replace @truplays/mcp / truplays-mcp with @keyskraft/mcp / keyskraft-mcp in your Cursor config. Rename TRUPLAYS_API_KEY to KEYSKRAFT_API_KEY (the old env var still works temporarily).