
App Store Operator
io.github.meyusufdemirci由 GitHub 帳號 meyusufdemirci 發布v0.3.5更新於 Oct 24, 2026
Free App Store competitive intelligence for Claude — rival downloads, revenue, and ASO keywords.
概覽
把 iOS App Store 競品研究帶進助手的 MCP 伺服器:關鍵字搜尋、競品下載與營收估算,以及 App 內活動文案產生。
- 可以做什麼
- 依關鍵字與國家搜尋 App Store,並以表格回傳排名結果
- 為競品或指定 App ID 擷取 SensorTower 分析資料:下載量、營收、評分、發行商、市場、App 內購買
- 依目標語言產生三版 iOS App 內活動文案,欄位符合字數限制
- 提供六個現成提示工作流程:競品快照、關鍵字候選篩選、App 拆解、定位落差、中繼資料改寫、App 內活動
- 讀取參考資源:國家代碼、ASO 與 IAE 欄位限制、語言清單,以及本機快取的研究結果
- 適用情境
- 適合獨立 iOS 開發者想在助手對話中完成關鍵字與競品研究、ASO 中繼資料草稿或 App 內活動文案,而不必另開儀表板。僅涵蓋 iOS 且為唯讀,適合研究與文案,不用於管理 App Store Connect。
- 執行需求
- 需要 Node.js v18 以上;透過 npx 執行,安裝時會下載 Playwright 的 Chromium(數百 MB)。兩個 SensorTower 工具需要具備顯示器的桌面工作階段,會開啟可見瀏覽器視窗供免費登入 SensorTower,無法在純 SSH 或容器中使用。可選環境變數 ASO_CACHE_TTL_HOURS 與 ASO_DEBUG_RATINGS。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 App Store Operator,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
App Store Operator
[npm] [downloads] [license] [node] [MCP] [MCP Badge]
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.
→ app-store-operator.com · Setup guide
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.
search_app_store and prepare_iae work with no account at all. research_rivals and
get_app_details open a browser once for a free SensorTower 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.
Tools
research_rivals
Finds the top 3 apps for a keyword and returns a full metrics report for each.
Returns for each competitor:
- 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.
search_app_store
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 with get_app_details for analytics on specific apps.
get_app_details
Fetches SensorTower analytics for one or more app IDs you already have.
Returns for each app:
- 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.
prepare_iae
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 as N/A.
The server reports the gap rather than filling it, and the prompts below tell the assistant
to do the same.
Prompts
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.
Resources
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.
Requirements
- Node.js v18+
- A desktop session for
research_rivalsandget_app_details. They drive a real, visible Chromium window so you can sign in to SensorTower, so they need a display — they do not work over plain SSH or inside a container. The other two tools have no such requirement. - Disk space for Chromium. Installing the package downloads a Playwright Chromium
build (a few hundred MB) via a postinstall step. If that step fails, the server installs
it on first use instead; you can also run
npx playwright install chromiumyourself.
Usage
As an MCP server (Claude Code / Claude Desktop / OpenAI Codex)
Claude Code — run this command once:
Claude Desktop — add to your MCP config:
OpenAI Codex — run this command once:
Codex stores MCP servers in ~/.codex/config.toml. If you prefer to edit it directly:
Then restart Codex or start a new thread, and ask things like:
Research rivals for "hairstyle" in the GB App StoreSearch the App Store for "beard style" in FrancePrepare an in-app event for a summer hairstyle campaign in en-gb
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. It advertises server-wide instructions during initialize so clients route between the tools correctly, and returns an MCP tool error when SensorTower login is required.
Configuration
Both settings are optional environment variables on the server process.
In a container
The repo ships a Dockerfile built on Playwright's official image:
The server speaks JSON-RPC over stdio, so no port is exposed — point your MCP client at
the container's stdin/stdout. Note that a container has no display: search_app_store
and prepare_iae work there, but the two SensorTower tools cannot open a login window and
will fail rather than prompting you to sign in.
How it works
- 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.
A browser window will open. This is deliberate, not a bug: SensorTower requires a login, so the first run opens a visible window for you to sign in. The session is saved to ~/.app-store-operator/profile and reused on every later call, so you only log in once. If a tool reports not_logged_in, finish signing in on that window and run the tool again.
Results from research_rivals are cached for 24 hours in ~/.app-store-operator/cache.json — override the TTL with the ASO_CACHE_TTL_HOURS environment variable.
Limitations
- 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 return
N/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 as
N/A.
Privacy Policy
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 stores nothing about you or your usage.
What each tool sends, and where:
What is stored locally:
~/.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.
Project structure
Development
No build step and no linter — clone it, npm install, and run npm start to boot the
server over stdio.
The smoke test verifies the server boots and exposes everything it should. It checks
initialize (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 ## Unreleased in CHANGELOG.md, run
npm version <patch|minor|major> — which syncs the version into server.json and
manifest.json and 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 ## Unreleased is empty.
Contributions are welcome — open an issue or a pull request at github.com/meyusufdemirci/app-store-operator.
License
MIT © Yusuf Demirci
來源:README.md,提交 c41dfb7
工具
0版本歷史
1- v0.3.5最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分