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

@sonarapp/mcp

v0.8.1

Published

Sonar MCP server — App Store Optimization tools for AI agents (Claude, Cursor, Cline)

Readme

@sonarapp/mcp

npm license smithery badge

The official Sonar MCP server — App Store Optimization tools for AI agents.

Lets Claude Desktop, Claude Code, Cursor, Cline, and any Model Context Protocol-compatible client look up apps, research keywords, audit ASO, mine reviews, and estimate revenue across the iOS App Store and Google Play. Powered by Sonar.


Tools

Read tools — stateless

| Tool | What it does | |-|-| | sonar_app_lookup | Look up app metadata by store ID | | sonar_app_search | Search apps by keyword (returns store ranking order) | | sonar_app_aso_score | ASO audit score (0-100) with itemized checks | | sonar_app_extract_keywords | Extract target keywords from an app's listing | | sonar_app_reviews | Fetch reviews with rating filters and sort options | | sonar_app_revenue | Estimate monthly revenue with methodology | | sonar_keyword_search | Keyword research (difficulty, popularity, related terms) | | sonar_keyword_metrics | Difficulty + popularity for specific keywords (single or bulk) | | sonar_keyword_suggestions | Autocomplete suggestions from the store | | sonar_top_charts | Top free/paid/grossing chart with day-over-day movement |

Stateless tools work on any plan with credits, with both iOS and Android.

Read tools — your workspace (Indie plan)

| Tool | What it does | |-|-| | sonar_list_apps | List your tracked apps with latest snapshots (rating, reviews, installs) | | sonar_get_app | App detail + up to 90 days of snapshot history | | sonar_app_keywords | Keywords tracked for an app, with difficulty + popularity | | sonar_app_rankings | Daily rank history for an app's tracked keywords | | sonar_app_changes | Detected releases, metadata edits, screenshot/price/category changes | | sonar_keyword_rankings | SERP history for a tracked keyword (who ranked, when) | | sonar_competitor_keywords | Keywords a competitor ranks for + gap analysis vs your app | | sonar_competitor_landscape | Full competitive picture for one of your own apps — gap/winnable/threat/lead stats + latest AI insight |

Workspace reads require an Indie plan (an active trial counts); the default read-scope key is enough.

Write tools (Indie plan + write scope)

| Tool | What it does | |-|-| | sonar_create_product | Create a product in your Sonar workspace and start tracking its app(s) | | sonar_track_app | Link the second-store version (iOS ↔ Android) of an existing product | | sonar_track_competitor | Add a competitor app under a product | | sonar_track_keywords | Start daily rank tracking for keywords on an app (bulk, idempotent) | | sonar_update_keyword_note | Set or clear the note on a tracked keyword | | sonar_scan_competitor | Run a keyword discovery scan on a competitor (read results with sonar_competitor_keywords) | | sonar_analyze_competitors | Generate a fresh AI competitive insight for one of your own apps (7-day cooldown; read it with sonar_competitor_landscape) |

Write tools mutate your workspace and require an Indie plan (an active trial counts) plus either an OAuth sign-in on the hosted endpoint (which carries write access) or an API key created with the write scope. The server enforces both — without them, calls return a 403 explaining what to fix.

Together these close the loop for agents: set up tracking with the write tools, then read back rankings, changes, and gap analyses with the workspace tools.

Hosted endpoint — no install, no API key

OAuth-capable MCP clients (Claude Code, claude.ai custom connectors) can skip both the npm install and the API key entirely:

claude mcp add --transport http sonar https://trysonar.app/mcp

The first tool call that needs your account opens a browser sign-in — approve it with your Sonar login and the agent has full access to the workspace you own (read + write). Clients without OAuth support can pass an API key instead: --header "Authorization: Bearer aso_...".

Try it free — no API key needed

The server runs without a key in free mode: sonar_app_search, sonar_app_lookup, sonar_app_aso_score, sonar_app_extract_keywords, and sonar_keyword_suggestions share a free allowance of 30 requests/day per IP, and sonar_keyword_metrics (keyword difficulty + popularity) gets 5 keywords/day. Just install it with no env block and ask your agent about ASO. When you hit the limit, the error tells you how to sign up.

Get an API key

For everything else (tracking, rankings, competitors, higher limits) you'll need a Sonar API key — get one at trysonar.app/developers.

The cheapest path is prepaid API credits — packs from $10 (1,000 credits), with 50 free credits on signup and no subscription. Built specifically for this use case. See pricing.

Install

Claude Desktop

Add to your config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "sonar": {
      "command": "npx",
      "args": ["-y", "@sonarapp/mcp"],
      "env": {
        "SONAR_API_KEY": "aso_your_key_here"
      }
    }
  }
}

Restart Claude Desktop. The sonar_* tools will appear in the tool picker.

Claude Code

claude mcp add sonar -e SONAR_API_KEY=aso_your_key_here -- npx -y @sonarapp/mcp

Cursor

Add to ~/.cursor/mcp.json (or your project's .cursor/mcp.json):

{
  "mcpServers": {
    "sonar": {
      "command": "npx",
      "args": ["-y", "@sonarapp/mcp"],
      "env": {
        "SONAR_API_KEY": "aso_your_key_here"
      }
    }
  }
}

Cline / other MCP clients

Most clients use the same command + args + env shape as above. Point the command at npx -y @sonarapp/mcp and pass SONAR_API_KEY in the env.

Configuration

| Variable | Required | Default | Description | |-|-|-|-| | SONAR_API_KEY | no (free mode without it) | — | Your Sonar API key (aso_...) | | SONAR_API_URL | no | https://trysonar.app | Override the API base URL (only used for self-hosting / staging) |

Example prompts

"Use Sonar to look up Spotify on iOS in the US store and report its rating, review count, and category."

"Run an ASO audit on com.duolingo on Android and tell me what to fix."

"Research the keyword 'habit tracker' on iOS — give me difficulty, popularity, and 5 related terms with lower difficulty I should consider."

"Pull the 50 most recent 1- and 2-star reviews of 1517783697 on iOS US and group complaints by theme."

"Search 'meditation' on the App Store and estimate monthly revenue for the top 5 results."

Privacy Policy

Full policy: https://trysonar.app/privacy

The MCP server is a thin client around Sonar's REST API — it stores nothing locally and no data is logged by this package itself.

  • Data collected: tool inputs (app IDs, keywords, country codes) are sent to Sonar's API over HTTPS to produce results; authenticated requests include your API key as a Bearer token. Sonar logs API requests (endpoint, status, timing) for rate limiting and abuse prevention.
  • Data usage: inputs are used solely to serve the request (keyword metrics, app lookups, etc.); resulting JSON is returned to your AI client.
  • Storage & retention: the package keeps no state on disk. Server-side request logs are retained for 90 days; workspace data (tracked apps/keywords) persists in your Sonar account until you delete it.
  • Third-party sharing: no user data is sold or shared with third parties; queries against public app-store data (Apple, Google) contain no personal information.
  • Contact: [email protected]

Troubleshooting

"SONAR_API_KEY is not set — running in free mode" — Expected if you haven't configured a key: the free tools keep working with per-IP daily limits. If you DID configure a key, the MCP client did not pass the env var through — check the env section of your client's config file. Some clients require an absolute path to npx — try which npx and use that.

"Authentication failed" — Your key is invalid, expired, or your subscription lapsed. Visit trysonar.app/developers to check.

"Access denied. Endpoint may require Indie plan" — The 10 stateless read tools work on any plan with credits. The workspace read tools and write tools require an Indie plan (an active trial counts); write tools additionally need an API key created with the write scope. If you're on a setup or trial-expired plan, reactivate first.

Companion: CLI

Prefer the terminal? Use @sonarapp/cli (sonar binary) — same data, same API key.

License

MIT © Peter Sutarik