← Back to Blog
AI Tooling

How to Set Up App Store Operator with Claude Desktop and Claude Code

AI Tooling·By Yusuf Demirci·Jul 15, 2026·9 min read

App Store Operator is an MCP server that gives Claude direct access to App Store search results and SensorTower analytics. Setting it up takes about two minutes and produces a working competitive research workflow inside Claude — no browser tabs, no spreadsheet, no ASO subscription.

There are two install paths, depending on which Claude client you use. Claude Code takes a single terminal command. Claude Desktop takes a five-line addition to a JSON config file. Both end at the same place: four new tools available to Claude in any conversation.

This guide covers both paths, the first-run behaviour that surprises most people, how to verify the server is actually connected, and what to do when it is not.


Before You Start

App Store Operator has two requirements and no others.

Node.js 18 or higher. The server is distributed on npm and runs through npx. Check what you have:

node --version

If that prints anything below v18, update Node before continuing. If it errors out entirely, install Node from nodejs.org and reopen your terminal.

A Claude client that supports MCP. MCP servers work with Claude Code on any plan, and with Claude Desktop on Pro and above. You do not need Claude API access, an Anthropic developer account, or an API key of any kind.

That is the whole prerequisite list. There is no App Store Operator account to create, no license key, and no SensorTower API key to obtain. The package is MIT-licensed and free.

If the term MCP server is new to you, the plain-English explanation of the model context protocol covers what these things are and why they exist. You do not need to read it to follow this guide, but it makes the mental model easier.


Path 1: Claude Code Setup

Claude Code has a built-in MCP registration command, so the entire setup is one line. Run this once in your terminal:

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

Reading that command left to right: register a server named app-store-operator, communicate with it over stdio (the standard local transport for MCP), and start it by running npx -y app-store-operator@latest. The -y flag tells npx to skip the install confirmation prompt, and @latest means you get the current published version every time the server starts rather than a pinned old copy.

Nothing is installed globally. npx fetches the package into its cache and runs it on demand, which is why there is no uninstall step to worry about later.

Verify it registered

Still in your terminal:

claude mcp list

app-store-operator should appear in the output. If it does, the registration is written to your Claude Code config and the server will start automatically the next time Claude needs it.

Inside a Claude Code session you can also type /mcp to see connected servers and the tools each one exposes. That is the more useful check, because it confirms the server actually started and handshaked, not just that it is listed in a config file.


Path 2: Claude Desktop Setup

Claude Desktop reads MCP servers from a JSON config file. You add one entry to it.

Open the file through the app: Settings → Developer → Edit Config. That reveals claude_desktop_config.json, creating it if it does not exist yet. If you would rather open it directly:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add the App Store Operator entry:

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

If the file already contains an mcpServers object with other servers in it, do not paste the whole block. Add only the "app-store-operator": { ... } entry inside the existing mcpServers object, and mind the commas — a trailing or missing comma is the single most common reason a config change silently fails to load.

Save the file, then fully quit and reopen Claude Desktop. Closing the window is not enough on macOS; the app keeps running and will not re-read the config. Quit it from the menu bar or with Cmd+Q.

Verify it loaded

After the restart, look for the MCP tools indicator in the Claude Desktop input area. App Store Operator should be listed with its four tools. If nothing appears, jump to the troubleshooting section below — it is almost always the JSON or the restart.


The First Run: Expect a Browser Window

This is the step that catches people off guard, so it is worth knowing about before it happens.

App Store data comes from the iTunes Search API, which needs no authentication. The analytics — download estimates, revenue estimates, top markets — come from SensorTower, which does. On the first call to a tool that needs analytics, App Store Operator launches a visible Chromium window through Playwright so you can sign in to SensorTower.

That session is then saved to a persistent browser profile at ~/.app-store-operator/profile and reused on every subsequent call. You log in once. After that the browser work happens in the background and you never see the window again unless the session expires.

A few things worth knowing about this design:

  • The profile lives on your machine. Nothing about your session is transmitted to App Store Operator's author or to any hosted service.
  • You do not need a paid SensorTower plan or an API key. The server reads the same analytics pages you would read manually.
  • If a scrape fails for a particular app — SensorTower changes its markup periodically, and some apps simply have no estimate published — that app's analytics fields come back as N/A rather than failing the whole query. You still get the App Store metadata for it.

Results are cached locally for 24 hours, keyed on keyword plus country. That matters more than it sounds: it means you can sweep a fifteen-keyword list, then re-query any of them repeatedly while you reason through the data, without waiting for a second scrape.


What You Just Installed

Four tools become available to Claude. You never call them by name — Claude picks the right one from your request — but knowing what exists tells you what to ask for.

search_app_store — Searches the App Store by keyword and country and returns ranked results with app names, app IDs, and positions. Up to 25 results. No browser involved, so it returns almost instantly. This is the discovery step.

research_rivals — The main event. Searches a keyword and country, then pulls SensorTower analytics for the top 3 ranked apps in a single call. Returns 16 fields per app: estimated downloads, estimated revenue, rating score, rating count, publisher, publisher country, categories, top markets, release date, last updated, supported languages, in-app purchases, advertising networks, and the App Store and SensorTower URLs. Cached 24 hours.

get_app_details — The same 16-field dataset, but for specific app IDs you already know. Use it when you are tracking a fixed competitor set rather than exploring a keyword, or when search_app_store surfaced something at position 9 that you want to look at properly.

prepare_iae — Unrelated to research: it generates iOS In-App Event copy in 14 locales, returning 3 variations with App Store Connect character limits enforced (event name 30 characters, short description 50, long description 120). It makes no external calls, so it works with no browser and no login.


Your First Three Queries

The install is only done when you have data on screen. Run these in order — they take about a minute total and exercise each part of the stack.

Query 1 — confirm the App Store search works. This one needs no browser, so it isolates the basic connection:

Search the US App Store for "habit tracker" and give me the top 10 apps with their IDs.

You should get a ranked table back within a few seconds. If this works, the MCP server is connected and running correctly.

Query 2 — confirm the analytics pipeline works. This is the call that triggers the SensorTower login on first run:

Research the top rivals for "habit tracker" in the US App Store.

Expect the browser window on the first attempt. Sign in, and the query completes. You get downloads, revenue, ratings, publisher, and top markets for the top 3 apps.

Query 3 — confirm the cache and the reasoning layer. Ask a follow-up that requires Claude to think across results rather than just fetch them:

Now research "daily habits" in the US store and tell me which of the two keywords has the weaker top three.

The second keyword triggers a fresh scrape; the first comes back from cache instantly. Claude compares both sets and gives you an actual answer, which is the entire point of running this inside an assistant rather than exporting a CSV.

Once those three work, you are set up. The 60-second competitor research guide covers the query patterns worth learning next, and the competition analysis framework covers how to read the numbers once you have them.


Troubleshooting

The tools do not appear in Claude Desktop. In order of likelihood: the JSON is malformed (paste it into any JSON validator — a stray comma is usually the culprit), the app was closed rather than quit, or the config was written to the wrong path. Fix the JSON, fully quit the app, reopen.

command not found: claude. You are trying the Claude Code path without Claude Code installed. Either install it, or use the Claude Desktop JSON config path above instead.

The server registers but never returns data. Check node --version. Node below 18 is the usual cause, and the failure mode is unhelpfully quiet. Also try running npx -y app-store-operator@latest directly in a terminal — if the package itself cannot start, you will see the error there instead of having it swallowed by the MCP client.

Analytics fields all come back as N/A. The App Store metadata resolved but the SensorTower scrape did not. Most often the session expired: delete ~/.app-store-operator/profile and run a research query again to trigger a fresh login. If it persists across apps and keywords, SensorTower has likely changed its page structure and the package needs an update — @latest in your config means you pick that up automatically on the next server start.

Results look stale. They are cached for 24 hours per keyword and country. That is deliberate. If you need a genuinely fresh pull sooner, query a different country code, or wait out the window.


Frequently Asked Questions

Do I need a paid Claude plan to use MCP servers?

MCP servers work with Claude Code on any plan and with Claude Desktop on Pro and above. App Store Operator itself is free and MIT-licensed, so the only cost consideration is your Claude client.

Do I need a SensorTower subscription?

No. App Store Operator reads SensorTower analytics through a browser session you sign in to once on first run. There is no API key to obtain and no paid plan required. A fuller comparison of what you get either way is in App Store Operator vs. SensorTower.

Can I install it for both Claude Desktop and Claude Code?

Yes, and there is no conflict. The two clients keep separate configs and each starts its own instance of the server when it needs one. They do share the browser profile at ~/.app-store-operator/profile, so you only log in to SensorTower once across both.

How do I update it?

You do not. Both install paths use app-store-operator@latest, so the server fetches the current published version each time it starts. Restart your Claude client to pick up a new release.

How do I remove it?

For Claude Code, run claude mcp remove app-store-operator. For Claude Desktop, delete the entry from claude_desktop_config.json and restart. Nothing was installed globally, so there is nothing else to clean up beyond deleting ~/.app-store-operator/profile if you want the browser session gone too.

Does it work with Google Play?

No. All four tools target the Apple App Store specifically.


Start With a Real Keyword

Setup is worth doing only if you use it in the same session. Run the install for your client:

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

Then research the keyword you are actually considering for your app, not a test one:

Research the top rivals for "[your keyword]" in the US App Store.

You will have download estimates, revenue estimates, ratings, and publisher data in front of you within a minute. What to do with those numbers is covered in the keyword research guide and the competition analysis framework — but the data pull, which used to be the slow part, is now a sentence.


Run your first competitive research in 60 seconds.

App Store Operator connects Claude to App Store and SensorTower data — no browser, no API keys, no manual copy-paste.

npx app-store-operator@latest
View setup guide →

More from AI Tooling