App Store Operator

by meyusufdemirci

Not rated
GitHub

About

App Store competitive research for indie iOS developers — ranked keyword search, competitor download and revenue estimates, and iOS In-App Event copy. Free, no API key.

Details

Author
meyusufdemirci
Categories
Marketing, Other, Developer Tools, Search, Knowledge Base

Setup

Install App Store Operator in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/meyusufdemirci/app-store-operator

Follow the installation instructions in the repository README, then restart your MCP client.

App Store competitive research for indie iOS developers — ranked keyword search, competitor download and revenue estimates, and iOS In-App Event copy. Free, no API key.

App Store competitive intelligence, inside Claude.

App Store Operator is an MCP server that brings App Store research directly into your AI assistant. Instead of switching to a dashboard, you ask Claude for ranked keyword results, competitor download and revenue estimates, or App Store Connect-ready In-App Event copy — and get the answer in the same conversation where you are making the decision.

Built for indie iOS developers who want research inside their workflow rather than in another browser tab. Free and open source (MIT). A lightweight alternative to SensorTower, AppTweak, and AppFollow for iOS-only competitive research.

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

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.

search_app_storeandprepare_iaework with no account at all.research_rivalsandget_app_detailsopen a browser once for afreeSensorTower sign-in, then reuse that saved session — no paid plan, no API key.

Everything the server exposes — four tools, six prompts, seven resources — is read-only. Nothing writes to your App Store Connect account, to SensorTower, or anywhere but a local cache file.

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

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

Cached for 24 hours, so asking again about the same keyword and country costs nothing and opens no browser.

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

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

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

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

Never cached — every call scrapes fresh, at roughly 10–20 seconds per app ID.

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

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).

Any field SensorTower does not expose, or keeps behind its paywall, comes back asN/A. The server reports the gap rather than filling it, and the prompts below tell the assistant to do the same.

Six ready-made workflows that already chain the tools above, so you don't have to describe the sequence yourself. In Claude Code they appear as slash commands; other clients surface them in a prompt picker.

Arguments marked?are optional. Every prompt tells the assistant not to invent figures and, where SensorTower is involved, not to quietly fall back to a weaker tool when login is required.

Reference data and local state a client can attach as context without spending a tool call on it.

Nothing here leaves your machine: the reference resources are static, and the two cache resources read~/.app-store-operator/cache.json.

As an MCP server (Claude Code / Claude Desktop / OpenAI Codex)

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"] } } }
codex mcp add app-store-operator -- npx -y app-store-operator@latest

Codex stores MCP servers in~/.codex/config.toml. If you prefer to edit it directly:

[mcp_servers.app-store-operator] command = "npx" args = ["-y", "app-store-operator@latest"] # Optional but useful for SensorTower scraping flows startup_timeout_sec = 20 tool_timeout_sec = 180

Then restart Codex or start a new thread, and ask things like:

- Research rivals for "hairstyle" in the GB App Store
- Search the App Store for "beard style" in France
- Prepare an in-app event for a summer hairstyle campaign in en-gb

No installation step needed —npxfetches and runs the package automatically.

The server communicates over stdio and is designed to be invoked by an MCP client. It advertises server-wideinstructionsduringinitializeso clients route between the tools correctly, and returns an MCP tool error when SensorTower login is required.

Both settings are optional environment variables on the server process.

The repo ships a Dockerfile built on Playwright's official image:

docker build -t app-store-operator . docker run -i --rm app-store-operator

- Searches the App Store for the keyword and country, and looks up any app IDs you passed directly against Apple's public iTunes Lookup API
- For each app, drives a Chromium browser to scrape SensorTower analytics
- Extracts the metrics and returns a compiled report

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

Results fromresearch_rivalsare cached for 24 hours in~/.app-store-operator/cache.json— override the TTL with theASO_CACHE_TTL_HOURSenvironment variable.

- iOS only.Nothing here covers Google Play or Android.
- Read-only.No tool changes anything in App Store Connect or on SensorTower.
- research_rivalsis fixed at the top 3 results.Usesearch_app_store(up to 25) and thenget_app_detailswhen you need a wider set.
- Scraping is brittle by nature.SensorTower renders its dashboard client-side and changes its markup without notice; when it does, affected fields returnN/Auntil the selectors are updated. A single app failing never fails the whole call.
- SensorTower's free tier decides what you see.Paywalled figures come back asN/A.

Full policy:https://app-store-operator.com/privacy

App Store Operator runs entirely on your machine. There is no backend, no telemetry, and no analytics — the author collects, receives, and storesnothingabout you or your usage.

- ~/.app-store-operator/cache.json— cached results, expiring after 24 hours by default (ASO_CACHE_TTL_HOURS)
- ~/.app-store-operator/profile— the Chromium profile holding your SensorTower session

You type your SensorTower credentials into SensorTower's own page in a browser window on your machine. The server never reads or stores your password, and the author never receives it.

Deleting everything— no request to the author, nothing to wait for:

Apple and SensorTower are independent third parties with their own policies. This project is not affiliated with either.

src/ ├── index.js # MCP server setup and request handlers ├── shared.js # App Store lookup + SensorTower scraping ├── cache.js # 24h local cache (research_rivals only) ├── prompts.js # the six prompt workflows ├── resources.js # reference data + cache resources └── 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 scripts/postinstall.js # installs Playwright Chromium on install scripts/sync-version.js # syncs server.json, manifest.json and CHANGELOG.md on release test/smoke-test-mcp.js # stdio smoke test server.json # MCP registry manifest manifest.json # Claude Desktop / MCPB bundle manifest Dockerfile # container build (no display: search + IAE tools only)

No build step and no linter — clone it,npm install, and runnpm startto boot the server over stdio.

The smoke test verifies the server boots and exposes everything it should. It checksinitialize(including the server instructions and the advertised version),tools/list,prompts/list,prompts/get,resources/list,resources/templates/list, and reads every resource, failing if one declared as JSON does not parse. It makes no network calls and opens no browser:

Releases are tag-driven: write the notes under## UnreleasedinCHANGELOG.md, runnpm version <patch|minor|major>— which syncs the version intoserver.jsonandmanifest.jsonand renames that heading to the new version for you — then push with--follow-tags. GitHub Actions runs the smoke test, publishes to npm and the MCP registry, and creates the release from that changelog section. The bump refuses to run while## Unreleasedis empty.

Contributions are welcome — open an issue or a pull request atgithub.com/meyusufdemirci/app-store-operator.

Free MCP that drives an audit of your marketing. Your AI connects, adsOS digs through your ads, email and site, and hands back a growth plan you can run today.

Python MCP server for TMDB search, Stremio library management, and Android TV playback/control over native ADB.

The AI search visibility platform that tells you why AI won't cite your brand, then hands you the fix.

Track how your brand shows up in AI search: visibility scores, citations, competitors, and recommendations.

The best agent monetization tool: free search, clear rev-share, 10M+ commerce/travel/local offers.

Hosted MCP server to search, preview, and download thousands of royalty-free (CC0) sound effects from any AI assistant.

Official remote MCP server for MAX messenger analytics: search channels and posts, track audience growth, views, reactions, and publishing activity.

Hosted Kuaishou MCP for hot list, search, details, comments, replies, and creator research.

Semantic code search for AI agents without indexing your codebase or storing any data. Fast and accurate.

Create and read feature flags, review experiments, generate flag types, search docs, and interact with GrowthBook's feature flagging and experimentation platform.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.