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

@feedmob/sensor-tower-reporting

v0.1.8

Published

MCP server for sensor-tower API

Downloads

100

Readme

Sensor Tower Reporting MCP Server

Deprecated

This local stdio MCP server is deprecated. Use the hosted SensorTower MCP endpoint for new installs and migrate existing clients:

https://insights-mcp.feedmob.com/sensortower

The configuration examples below are retained for legacy/local development only.

Legacy Install with Claude Desktop

curl -fsSL https://raw.githubusercontent.com/feed-mob/fm-mcp-servers/main/scripts/install.sh | bash -s -- sensor-tower-reporting

Pin a specific release:

FM_MCP_INSTALL_REF=v1.0.0 \
curl -fsSL https://raw.githubusercontent.com/feed-mob/fm-mcp-servers/v1.0.0/scripts/install.sh | bash -s -- sensor-tower-reporting

This MCP server provides legacy tools to interact with the Sensor Tower API for mobile app intelligence and market data.

Features

  • Tools:

  • Built-in API Safeguards:

    • Shared request client for all Sensor Tower endpoints
    • Default request pacing of 5 requests per second to stay under the documented 6 req/s cap
    • Monthly quota tracking via x-api-usage-limit and x-api-usage-count
    • Automatic retries for 429, 502, 503, and 504
    • Quota warnings and near-exhaustion blocking before the monthly limit is fully depleted
  • Data Files:

Setup

  1. Install dependencies:

    npm install
  2. Configure environment variables: Create a .env file with the following variables:

    AUTH_TOKEN=your_sensor_tower_auth_token
    SENSOR_TOWER_BASE_URL=https://api.sensortower.com
    SENSOR_TOWER_REQUESTS_PER_SECOND=5
    SENSOR_TOWER_MONTHLY_LIMIT=100000
    SENSOR_TOWER_USAGE_WARN_THRESHOLD=0.2
    SENSOR_TOWER_USAGE_BLOCK_THRESHOLD=0.05
    SENSOR_TOWER_MAX_RETRIES=3
  3. Build the server:

    npm run build

Running the Server

To run the server directly for testing:

npm start

For development with hot reload:

npm run dev

Usage with Claude Desktop

  1. Make sure you have installed and updated to the latest version of Claude for Desktop.
  2. Open the Claude for Desktop configuration file:
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  3. Add the Sensor Tower Reporting MCP server to the configuration:

NPX

{
  "mcpServers": {
    "sensor-tower-reporting": {
      "command": "npx",
      "args": ["-y", "@feedmob/sensor-tower-reporting"],
      "env": {
        "AUTH_TOKEN": "your_sensor_tower_auth_token",
        "SENSOR_TOWER_BASE_URL": "https://api.sensortower.com"
      }
    }
  }
}

Local Development

{
  "mcpServers": {
    "sensor-tower-reporting": {
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "/path/to/sensor-tower-reporting",
      "env": {
        "AUTH_TOKEN": "your_sensor_tower_auth_token",
        "SENSOR_TOWER_BASE_URL": "https://api.sensortower.com"
      }
    }
  }
}

API Reference

App Metadata

  • Platform Support: iOS, Android
  • Limits: Maximum 100 app IDs per request
  • Returns: App name, publisher, categories, description, screenshots, ratings

Sales & Revenue Data

  • Compact Sales Report: Download and revenue estimates with flexible filtering
  • Revenue Format: All revenues returned in cents
  • Filtering: By app IDs, publisher IDs, unified IDs, or categories

User Analytics

  • Active Users: DAU/WAU/MAU estimates by country and time period
  • Retention: Day 1 to day 90 retention rates with baseline comparison
  • Limits: Maximum 500 app IDs for active users and retention

Ranking & Category Data

  • Category History: Detailed ranking history by category and chart type
  • Category Summary: Current ranking summary for specific apps
  • Hourly Rankings: Available for iOS apps

Advertising Intelligence

  • Network Analysis: Share of voice (SOV) for advertising networks
  • Network Rankings: Ranking data across countries and networks
  • Downloads by Sources: Organic vs paid download attribution

Market Research

  • Find Apps by Metric Threshold: Discover apps exceeding a download or revenue threshold in a given time range, category, and geography. OS defaults to iOS when not specified.

Error Handling

The server includes comprehensive error handling with specific error types:

  • ConfigurationError: Missing or invalid configuration
  • SensorTowerApiError: API-related errors with detailed messages
  • Input validation using Zod schemas for all parameters
  • Retries with backoff for 429, 502, 503, and 504
  • Shared quota tracking so tool responses can include api_usage metadata

Environment Variables

| Variable | Required | Description | Default | |----------|----------|-------------|---------| | AUTH_TOKEN | Yes | Sensor Tower API authentication token | - | | SENSOR_TOWER_BASE_URL | No | Sensor Tower API base URL | https://api.sensortower.com | | SENSOR_TOWER_REQUESTS_PER_SECOND | No | Shared in-process request pacing. Keep this at or below 6; defaults to 5 for safety. | 5 | | SENSOR_TOWER_MONTHLY_LIMIT | No | Fallback monthly quota used before API usage headers are observed. | 100000 | | SENSOR_TOWER_USAGE_WARN_THRESHOLD | No | Warning threshold as a fraction of the monthly quota remaining. | 0.2 | | SENSOR_TOWER_USAGE_BLOCK_THRESHOLD | No | Hard stop threshold as a fraction of the monthly quota remaining. Must be lower than the warn threshold. | 0.05 | | SENSOR_TOWER_MAX_RETRIES | No | Max retries for retryable Sensor Tower responses (429, 502, 503, 504). | 3 |

Rate Limit Strategy

  • All outgoing Sensor Tower requests now flow through a shared HTTP client, so the same limits apply across every MCP tool.
  • The client paces requests at 5 req/s by default to stay below Sensor Tower's documented 6 req/s cap.
  • Monthly usage is refreshed from Sensor Tower's response headers whenever available.
  • When remaining monthly quota drops below the warning threshold, tool responses include an api_usage.warning.
  • When remaining monthly quota drops below the block threshold, new requests are rejected instead of fully exhausting the account.
  • get_api_usage returns cached usage headers when available, and otherwise performs one lightweight request to refresh the latest usage headers.

Development

Scripts

  • npm run build: Compile TypeScript and make executables
  • npm run watch: Watch mode for development
  • npm run prepare: Prepare package for publishing

Testing

Use the MCP inspector for manual testing:

npm run inspect

License

MIT