mcpField
A
App Store Operator

App Store Operator

本地服务
app-store-operator.com商业与营销314 周前更新

关于 App Store Operator

App Store Operator 是面向独立 iOS 开发者的开源 MCP 服务,用于研究竞品和 App Store 关键词。它结合商店搜索、SensorTower 分析与应用内活动文案准备,且对外部账户仅提供只读访问。

主要功能

  1. 01搜索 App Store 排名结果
  2. 02查看竞品下载量和收入估算
  3. 03获取评分与市场详情
  4. 04撰写应用内活动文案
  5. 05提供只读工具、提示词和资源

适用场景

  1. 01查找目标关键词的排名应用
  2. 02比较不同市场的竞品指标
  3. 03准备本地化应用内活动文案

MCP 相关

向 MCP 客户端提供 4 个工具、6 个提示词和 7 个资源。搜索与活动文案工具无需账户;SensorTower 分析工具需要免费登录。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"meyusufdemirci-app-store-operator": {
"command": "npx",
"args": [
"-y",
"app-store-operator"
],
"env": {
"ASO_CACHE_TTL_HOURS": "<ASO_CACHE_TTL_HOURS>"
}
}
}
}
启动命令npx -y app-store-operator
需要配置的环境变量
ASO_CACHE_TTL_HOURSHours to cache SensorTower results locally. Defaults to 24.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmapp-store-operator0.3.5

工具

4

收录的工具列表 · 更新于 2 周前

参数类型必填说明
countrystring是两字母 App Store 国家/地区代码(例如:us、gb、tr)
keywordstring是要在 App Store 中搜索的关键词(例如:psikoloji、meditation)

详细介绍

App Store Operator

npm 下载量 许可证 node MCP MCP 徽章

在 Claude 中获取 App Store 竞争情报。

App Store Operator 是一个 MCP 服务,可将 App Store 研究直接带入你的 AI 助手。无需切换到仪表板,只需向 Claude 询问排名靠前的关键词结果、竞争对手的下载量和收入估算,或可直接用于 App Store Connect 的 App 内活动文案——然后就在你做决策的对话中获得答案。

专为希望在工作流中而不是另一个浏览器标签页里进行研究的独立 iOS 开发者打造。免费且开源(MIT)。对于仅限 iOS 的竞争研究,它是 SensorTower、AppTweak 和 AppFollow 的轻量级替代方案。

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

→ app-store-operator.com · 设置指南

功能

按指定关键词搜索 App Store 中的竞品应用,并从 SensorTower 获取详细分析数据——下载量、收入、评分、主要市场、发布者信息等。

search_app_store 和 prepare_iae 完全无需账号即可使用。research_rivals 和 get_app_details 会打开一次浏览器,用于登录 SensorTower 免费账号,之后会重复使用保存的会话——无需付费套餐或 API 密钥。

该服务提供的所有内容——四个工具、六个提示词、七个资源——均为只读。不会向你的 App Store Connect 账号、SensorTower 或本地缓存文件以外的任何位置写入数据。

工具

research_rivals

查找指定关键词下排名前 3 的应用,并为每个应用返回完整的指标报告。

参数类型描述
keywordstring要查询的搜索词(例如 meditation、psikoloji)
countrystring两位字母的国家代码(例如 us、tr、gb)

每个竞品返回的信息:

  • App Store 和 SensorTower 链接
  • 全球及上月下载量和收入
  • 评分和评分数量
  • 发布者、类别、主要市场
  • 发布日期、最近更新日期、支持的语言
  • 应用内购买和广告网络信息

缓存 24 小时,因此再次查询相同关键词和国家时无需付费,也不会打开浏览器。


search_app_store

按关键词搜索 App Store,并立即以 Markdown 表格形式返回排名结果,无需 SensorTower。

参数类型描述
keywordstring要查询的搜索词
countrystring两位字母的国家代码
limitnumber返回结果数量(1–25,默认值为 3)

先用此工具了解哪些应用排名靠前,再决定要分析哪些应用。随后可使用 get_app_details 获取特定应用的分析数据。


get_app_details

获取一个或多个你已有应用 ID 的 SensorTower 分析数据。

参数类型说明
app_idsarray数字形式的 App Store ID(例如来自 search_app_store)
countrystring两位国家代码

每个应用返回:

  • 下载量和收入(全球及上个月)
  • 评分和评分数
  • 发布者、类别、主要市场
  • 发布日期、上次更新时间、支持的语言
  • 应用内购买和广告网络信息

不会缓存——每次调用都会抓取最新数据,每个应用 ID 大约需要 10–20 秒。


prepare_iae

生成 iOS App Store 应用内活动(IAE)文案——使用目标语言生成 3 个版本,然后提供最终报告。

参数类型说明
keywordsarray按优先级排序的关键词(索引 0–2 = 第 1 级,3–6 = 第 2 级,7–9 = 第 3 级)
localestring目标区域设置(例如 en-us、en-gb、de-de、tr、ja、ko)
event_purposestring活动主题及其对用户的意义
audiencestring目标受众(例如学生、专业人士、家长)
event_contextstring将活动与某个时刻联系起来的现实背景(例如节日、季节)
goalstring主要转化目标(例如吸引新用户、提升参与度)
tonestring文案语气:Engaging、Playful、Motivational、Authoritative、Calm 或 Urgent

返回: 一份结构化简报,用于生成 3 个文案版本;每个版本包含活动名称(≤30 个字符)、简短描述(≤50 个字符)和详细描述(≤120 个字符)。


SensorTower 未提供或设为付费墙限制的任何字段,都会返回 N/A。 服务会报告数据缺口,而不会补填;下方的提示词也会要求助手这样做。

提示词

六个现成的工作流,已将上述工具串联起来,因此你无需自行描述调用顺序。在 Claude Code 中,它们会显示为斜杠命令;其他客户端会在提示词选择器中展示。

提示词参数功能
competitor_snapshotkeyword、country获取某个关键词的竞品分析数据,然后说明该关键词由谁主导以及竞争有多激烈
keyword_shortlistseed_keyword、country、count?扩展种子关键词以生成候选词,用实时搜索结果逐一验证,并按 进攻 / 观察 / 跳过 排序
app_teardownapp_ids、country拆解已知应用——规模、地位、变现、覆盖范围、发展势头、获客情况
positioning_gapkeyword、country、my_app_id用同一套指标衡量你的应用和现有领先应用,并区分 落后 与 可进攻
metadata_rewriteapp_name、keyword、country、must_keep?提供 3 组名称 / 副标题 / 关键词字段方案,并根据 Apple 的限制统计字符数
in_app_eventevent_context、locale、keywords?、audience?、tone?执行完整的应用内活动流程,并询问 prepare_iae 尚需的内容

标有 ? 的参数为可选。每个提示词都会要求助手不得编造数据;涉及 SensorTower 时,如果必须登录,也不得悄悄改用功能较弱的工具。

资源

客户端可以附加为上下文的参考数据和本地状态,无需为此调用工具。

URI类型内容
asops://guide/tool-selectionmarkdown应使用哪个工具、各自的成本,以及 SensorTower 登录的工作方式
asops://reference/country-codesmarkdown各地区的两字母 App Store 代码
asops://reference/aso-fieldsJSONApp Store Connect 字符限制,以及哪些字段会被搜索索引
asops://reference/iae-fieldsJSONApp 内活动限制、素材尺寸、文案规则、关键词层级
asops://reference/iae-localesJSONprepare_iae 接受的所有区域设置——由工具用于验证的同一张表生成
asops://cache/researchJSON此机器上已完成的研究,以及结果是否仍然有效
asops://cache/research/{country}/{keyword}JSON一条缓存的 research_rivals 结果,无需重新抓取

这里的任何内容都不会离开你的机器:参考资源是静态的,两个缓存资源会读取 ~/.app-store-operator/cache.json。

要求

  • Node.js v18+
  • 桌面会话,用于运行 research_rivals 和 get_app_details。它们会驱动一个真实、可见的 Chromium 窗口,以便你登录 SensorTower,因此需要显示器——它们无法通过普通 SSH 或在容器内运行。其他两个工具没有此要求。
  • Chromium 所需的磁盘空间。 安装软件包时,会通过 postinstall 步骤下载一个 Playwright Chromium 版本(数百 MB)。如果该步骤失败,服务会在首次使用时安装它;你也可以自行运行 npx playwright install chromium。

使用方法

作为 MCP 服务使用(Claude Code / Claude Desktop / OpenAI Codex)

Claude Code — 运行此命令一次:

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

Claude Desktop — 添加到 MCP 配置中:

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

OpenAI Codex — 运行此命令一次:

codex mcp add app-store-operator -- npx -y app-store-operator@latest

Codex 将 MCP 服务保存在 ~/.codex/config.toml 中。如果你更愿意直接编辑:

[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

然后重启 Codex 或开始一个新对话,并提出类似以下的问题:

  • 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

无需安装步骤——npx 会自动获取并运行软件包。

该服务通过 stdio 通信,设计为由 MCP 客户端调用。它会在 initialize 期间公布服务级 instructions,以便客户端正确选择工具;如果需要 SensorTower 登录,则会返回 MCP 工具错误。

配置

这两个设置都是服务进程上的可选环境变量。

变量默认值作用
ASO_CACHE_TTL_HOURS24research_rivals 结果在本地缓存中保持有效的时长,超过后会重新抓取
ASO_DEBUG_RATINGSunset设置为 1 时,如果评分或数量返回 N/A,则将 SensorTower 的评分面板打印到 stderr——有助于报告抓取错误
在容器中

仓库提供了一个基于 Playwright 官方镜像构建的 Dockerfile:

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

该服务通过 stdio 传输 JSON-RPC,因此不会暴露端口——将 MCP 客户端连接到容器的 stdin/stdout 即可。请注意,容器没有显示器:search_app_store 和 prepare_iae 可以在其中运行,但两个 SensorTower 工具无法打开登录窗口,因此会直接失败,而不会提示你登录。

工作原理

  1. 按关键词和国家/地区搜索 App Store,并通过 Apple 的公共 iTunes Lookup API 直接查询你提供的任何 App ID
  2. 对每个 App,驱动 Chromium 浏览器抓取 SensorTower 分析数据
  3. 提取指标并返回汇总报告

由于 SensorTower 的内容是在客户端渲染的,因此通过 Playwright 抓取数据。

浏览器窗口将会打开。 这是有意为之,并非故障:SensorTower 需要登录,因此首次运行时会打开一个可见窗口供你登录。会话会保存到 ~/.app-store-operator/profile,并在之后的每次调用中重复使用,因此你只需登录一次。如果工具报告 not_logged_in,请在该窗口中完成登录,然后再次运行工具。

research_rivals 的结果会在 ~/.app-store-operator/cache.json 中缓存 24 小时 — 可通过 ASO_CACHE_TTL_HOURS 环境变量更改缓存时长。

限制

  • 仅支持 iOS。 不涵盖 Google Play 或 Android。
  • 只读。 没有任何工具会更改 App Store Connect 或 SensorTower 中的内容。
  • research_rivals 固定返回排名前 3 的结果。 如需更多结果,请使用 search_app_store(最多 25 个),然后使用 get_app_details。
  • 抓取本身容易出错。 SensorTower 在客户端渲染其仪表盘,并且会在不另行通知的情况下更改其标记;发生这种情况时,受影响的字段会返回 N/A,直到更新选择器。单个 App 抓取失败不会导致整个调用失败。
  • 你能看到的内容由 SensorTower 的免费套餐决定。 需要付费才能查看的数据会返回 N/A。

隐私政策

完整政策:https://app-store-operator.com/privacy

App Store Operator 完全在你的计算机上运行。它没有后端、没有遥测,也没有分析功能 — 作者不会收集、接收或存储关于你或你使用情况的任何信息。

各工具发送的内容及其去向:

工具账号离开你计算机的内容
search_app_store无关键词和国家/地区代码 → Apple 的公共 App Store 搜索
prepare_iae无无 — 纯本地计算,不联系任何外部服务
research_rivalsSensorTower 免费账号关键词和国家/地区代码 → Apple,然后通过你自己的浏览器会话访问 SensorTower
get_app_detailsSensorTower 免费账号App Store App ID → Apple 的公共查询 API 和 SensorTower

本地存储的内容:

  • ~/.app-store-operator/cache.json — 缓存的结果,默认在 24 小时后过期(ASO_CACHE_TTL_HOURS)
  • ~/.app-store-operator/profile — 保存 SensorTower 会话的 Chromium 配置文件

你需要在计算机上的浏览器窗口中,向 SensorTower 自己的页面输入 SensorTower 凭据。服务不会读取或存储你的密码,作者也永远不会收到密码。

删除所有内容 — 无需联系作者,也无需等待:

rm -rf ~/.app-store-operator

Apple 和 SensorTower 是各自制定政策的独立第三方。本项目与两者均无关联。

项目结构

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)

开发

无需构建步骤或代码检查工具——克隆项目后,运行 npm install,再运行 npm start,即可通过 stdio 启动服务器。

冒烟测试会验证服务器能否启动并公开所有应有内容。它会检查 initialize(包括服务器说明和公布的版本)、tools/list、prompts/list、prompts/get、resources/list、resources/templates/list,并读取每项资源;如果声明为 JSON 的资源无法解析,测试就会失败。测试不会发起网络请求,也不会打开浏览器:

npm run smoke

发布由标签驱动:在 CHANGELOG.md 的 ## Unreleased 下编写发布说明,运行 npm version <patch|minor|major>——该命令会将版本同步到 server.json 和 manifest.json,并将该标题重命名为新版本号——然后使用 --follow-tags 推送。GitHub Actions 会运行冒烟测试、发布到 npm 和 MCP 注册表,并根据该变更日志部分创建发布版本。如果 ## Unreleased 为空,版本更新将拒绝运行。

欢迎贡献——请在 github.com/meyusufdemirci/app-store-operator 提交问题或拉取请求。

许可证

MIT © Yusuf Demirci

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。