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

app-store-operator

v0.2.0

Published

MCP server for iOS App Store operations — rival research, ASO, and more

Downloads

1,585

Readme

App Store Operator

An MCP (Model Context Protocol) server that provides App Store competitive research tools for iOS app developers.

What it does

Searches the App Store for competing apps on a given keyword and pulls detailed analytics from SensorTower — downloads, revenue, ratings, top markets, publisher info, and more.

Tools

research_rivals

Finds the top 3 apps for a keyword and returns a full metrics report for each.

| Parameter | Type | Description | |-----------|------|-------------| | keyword | string | Search term to look up (e.g. meditation, psikoloji) | | country | string | Two-letter country code (e.g. us, tr, gb) |

Returns for each competitor:

  • App Store & SensorTower URLs
  • Worldwide and last-month downloads & revenue
  • Rating and rating count
  • Publisher, categories, top markets
  • Release date, last updated, supported languages
  • In-app purchases and ad network presence

search_app_store

Searches the App Store for a keyword and returns ranked results as a markdown table — instantly, no SensorTower required.

| Parameter | Type | Description | |-----------|------|-------------| | keyword | string | Search term to look up | | country | string | Two-letter country code | | limit | number | Number of results to return (1–25, default 3) |

Use this to discover which apps rank before deciding which to analyse. Follow up with get_app_details for analytics on specific apps.


get_app_details

Fetches SensorTower analytics for one or more app IDs you already have.

| Parameter | Type | Description | |-----------|------|-------------| | app_ids | array | Numeric App Store IDs (e.g. from search_app_store) | | country | string | Two-letter country code |

Returns for each app:

  • Downloads and revenue (worldwide + last month)
  • Rating and rating count
  • Publisher, categories, top markets
  • Release date, last updated, supported languages
  • In-app purchases and ad network presence

prepare_iae

Generates iOS App Store In-App Event (IAE) copy — 3 variations in the target language, then a final report.

| Parameter | Type | Description | |-----------|------|-------------| | keywords | array | Ordered keywords by priority (index 0–2 = Tier 1, 3–6 = Tier 2, 7–9 = Tier 3) | | locale | string | Target locale (e.g. en-us, en-gb, de-de, tr, ja, ko) | | event_purpose | string | What the event is about and why users should care | | audience | string | Target audience (e.g. students, professionals, parents) | | event_context | string | Real-world hook tying the event to a moment (e.g. a holiday, season) | | goal | string | Primary conversion goal (e.g. attract new users, boost engagement) | | tone | string | Copy tone: Engaging, Playful, Motivational, Authoritative, Calm, or Urgent |

Returns: a structured brief used to generate 3 copy variations, each with event name (≤30 chars), short description (≤50 chars), and long description (≤120 chars).

Requirements

  • Node.js v18+

Usage

As an MCP server (Claude Desktop / Claude Code)

Claude Code — run this command once:

claude mcp add --transport stdio app-store-operator -- npx -y app-store-operator@latest

Claude Desktop — add to your MCP config:

{
  "mcpServers": {
    "app-store-operator": {
      "command": "npx",
      "args": ["app-store-operator@latest"]
    }
  }
}

No installation step needed — npx fetches and runs the package automatically.

The server communicates over stdio and is designed to be invoked by an MCP client.

How it works

  1. Queries the iTunes Search API for the top 3 apps matching the keyword and country
  2. For each app, launches a headless Chromium browser to scrape SensorTower analytics
  3. Extracts metrics and returns a compiled plain-text report

SensorTower data is scraped via Playwright because it is rendered client-side.

Project structure

src/
├── index.js                    # MCP server setup and request handlers
└── tools/
    ├── research-rivals.js      # research_rivals tool
    ├── search-app-store.js     # search_app_store tool
    ├── get-app-details.js      # get_app_details tool
    └── prepare-iae.js          # prepare_iae tool