App Store & Google Play Review Intelligence について
App Store & Google Play Review Intelligenceは、Apple App StoreとGoogle Playのアプリレビューを分析するMCPサーバーです。プロダクトチームや調査担当者が、苦情、バージョンごとの変化、ストア間の比較をLLMなしの決定的な手法で調べられます。
主な機能
- 01両ストアのアプリを検索
- 02苦情の語句と引用を分析
- 03バージョンごとの評価変化を比較
- 042~10個のアプリを比較
- 05レビュー本文と開発者返信を取得
活用シーン
- 01更新後にユーザー評価が悪化したか確認
- 02iOSとAndroidの反応を比較
- 03企画前に競合への不満を調査
- 04名前やカテゴリからアプリを検索
MCP 対応
アプリ検索、レビュー取得、レビュー分析、アプリ比較をMCPツールとして公開します。ホスト型のStreamable HTTPエンドポイントに加え、ローカルでstdio実行もできます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcpclaude mcp add --transport http gunnargray-dev-app-store-review-intelligence https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp{"mcpServers":{"gunnargray-dev-app-store-review-intelligence":{"type":"http","url":"https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp"}}}Cursor で開く{"servers":{"gunnargray-dev-app-store-review-intelligence":{"type":"http","url":"https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp"}}}VS Code で開く{"mcpServers":{"gunnargray-dev-app-store-review-intelligence":{"type":"http","url":"https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp"}}}{"mcpServers":{"gunnargray-dev-app-store-review-intelligence":{"serverUrl":"https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp認証が必要ツール
詳細
App Store と Google Play のレビュー分析 MCP サーバー
iOS または Android アプリについて、ユーザーが何を不満に思っているか、直近のアップデートで何が壊れたかを AI エージェントに尋ねられます。 この MCP サーバーは Apple App Store と Google Play を検索し、任意のアプリ(自社または競合他社)の最近のレビューを取得して、エージェントが直接活用できる分析を返します。引用付きの主な不満、バージョン別の評価、最新バージョンで悪化した点、競合アプリとの並列比較を確認できます。API キーや App Store Connect、Play Console へのアクセスは不要です。
ホスト版(セットアップ不要): apify.com/parallelstudio/app-store-review-intelligence-mcp。任意の MCP クライアントを Apify トークンとともに
https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcpに接続し、呼び出しごとに料金を支払えます。このオープンソースコードをローカルで stdio 経由で実行することもできます:npm install && npm run build && npx app-review-intel-mcp。
Google Play に対応しました: すべてのツールが Apple App Store と Google Play の両方で動作し、iOS と Android の比較にも対応します。
Claude Desktop、Claude Code、Cursor、VS Code、Windsurf、および Streamable HTTP 経由の MCP に対応するすべてのクライアントで利用できます。
質問できること
- 「Instagram の最新アップデートで何が壊れた?」
review_insightsは最新バージョンと前のバージョンを比較し、評価の変化、低評価レビューの割合の変化、増加幅が最も大きい不満を引用付きで提示します。 - 「Android と iOS で、Duolingo に関する不満トップ 10 は?」 同じツールで、どちらのストアにも対応します。ストアはアプリ ID から推定されます。
- 「Notion、Obsidian、Evernote を比較して。不満を持つユーザーが最も多いのはどれで、その理由は?」
compare_appsは、指標ごとのトップを含む表を返します。Apple と Google Play の ID を混在させることもできます。 - 「Google Play で人気の瞑想アプリを探して。」
search_appsは ID、評価、インストール数、価格を返します。 - 「クラッシュに言及した最新レビューを見せて。」
get_app_reviewsは、独自に分析できる生のレビュー本文を返します。
ツール
| ツール | 使用する場面 | 返される内容 | 課金 |
|---|---|---|---|
search_apps | アプリ名またはカテゴリがわかっていて、ID が必要な場合 | ID(Apple の数値 ID または Play のパッケージ名)、名前、開発者、評価、評価件数、価格、ジャンル、バージョン、URL、Google Play の場合はインストール数 | 呼び出しごと |
review_insights | 「ユーザーが不満な理由/変更点/フィードバックの要約」に関する質問なら、まずはこちら | 評価の分布、バージョン別の評価、主な不満のフレーズ(星 1~2 のレビューに占める割合+引用)、versionDeltas(最新バージョンと前のバージョンの比較:評価の変化、引用付きの増加中の不満)、サンプルの引用 | 呼び出しごとの定額 |
get_app_reviews | 実際のレビュー本文が必要な場合 | 評価、タイトル(Apple)、本文、バージョン、日付、有用票数を含むレビュー、Google Play の場合は開発者からの返信 | 返されるレビューごと |
compare_apps | 2~10 個のアプリの競合比較(Apple と Google Play の混在可) | ストアの評価と件数、インストール数、価格、バージョン、直近の平均評価、低評価/高評価の割合、最新バージョンの平均評価、不満トップ 5、各指標のトップ | 呼び出しごとの定額 |
パラメーター。 app_id は Apple ID(284882215、id284882215、または apps.apple.com の URL)か、Google Play のパッケージ名(com.instagram.android または play.google.com の URL)を受け付けます。store(apple | google)は ID から推定されるため、省略できます。search_apps ではデフォルトで apple になります。country は 2 文字のストアフロントコード(us、gb、de など)です。pages は 1~10 で、各ページ約 50 件のレビューを取得します。lang(Google Play のみ。デフォルトは en)でレビュー言語を指定します。review_insights では、countries(最大 10 のストアフロントをまとめて取得)、since_version(比較元のバージョンを選択)、keyword_limit、quotes も指定できます。
すべてのツールは読み取り専用です。エラーは MCP ツールエラー(isError: true)として返され、invalid_input、upstream_error、internal_error のいずれかが先頭に付きます。
出力例
review_insights { "app_id": "389801252", "countries": ["us", "gb"] }(Instagram for iOS、実際の呼び出し、2026年10月、一部省略):
{
"sample": { "reviews": 300, "negativeReviews": 188, "byCountry": { "us": 150, "gb": 150 } },
"ratingDistribution": { "average": 2.42, "total": 300 },
"storeRating": { "averageRating": 4.69, "ratingCount": 29583259 },
"versionDeltas": {
"basis": "version",
"latest": { "label": "450.1.0", "reviews": 210, "averageRating": 2.17, "negativeShare": 0.695 },
"previous": { "label": "previous versions 448.0.0–450.0.0", "reviews": 90, "averageRating": 3.0, "negativeShare": 0.467 },
"change": { "averageRating": -0.83, "negativeShare": 0.228 },
"whatGotWorse": [
{ "phrase": "ipad", "status": "new", "latestShare": 0.24, "previousShare": 0, "change": 0.24,
"examples": [{ "rating": 1, "text": "iPad Update Ruined Reels. Tiny, unchangeable aspect ratio that hovers over the search page?…" }] },
{ "phrase": "reels", "status": "increased", "latestShare": 0.281, "previousShare": 0.095, "change": 0.186 },
{ "phrase": "full screen", "status": "new", "latestShare": 0.11, "previousShare": 0, "change": 0.11,
"examples": [{ "rating": 1, "text": "Broken UI in latest update. Can no longer see full screen reels in iPad. They now crop reels to square format…" }] }
],
"confidence": "high",
"summary": "Version 450.1.0 (210 reviews) average 2.17★ vs 3.00★ for previous versions 448.0.0–450.0.0 (90 reviews), −0.83; negative share 69.5% vs 46.7% (+22.8 pp). Rising complaints: \"ipad\" (new, 24% of negative reviews), …"
},
"complaintKeywords": [
{ "phrase": "reels", "reviews": 45, "share": 0.239, "example": "…" },
{ "phrase": "ipad", "reviews": 35, "share": 0.186, "example": "…" },
{ "phrase": "account", "reviews": 34, "share": 0.181, "example": "…" },
{ "phrase": "full screen", "reviews": 16, "share": 0.085, "example": "…" }
]
}
search_apps { "term": "meditation", "store": "google", "limit": 3 }:
| id | name | developer | rating | installs |
|---|---|---|---|---|
| com.spotlightsix.zentimerlite2 | Insight Timer - Meditation App | Insight Network Inc | 4.70 | 10,000,000+ |
| meditofoundation.medito | Medito: Meditation & Sleep | Medito for Mindfulness, Meditation and Sleep | 4.79 | 1,000,000+ |
| com.getsomeheadspace.android | Headspace: Sleep & Meditation | Headspace for Meditation, Mindfulness and Sleep | 4.26 | 10,000,000+ |
compare_apps { "app_ids": ["324684580", "com.spotify.music"], "pages": 1 } は、iOS と Android の Spotify を比較します。ストア評価は 4.77 対 4.35、最近の平均評価は 4.18 対 3.90、否定的なレビューの割合は 16% 対 28% と報告されます。Android で多い不満は、プレミアム、曲、広告です。
すべてのツールの省略なしの完全な応答については、demo/transcript.md をご覧ください。
実際の結果とワークフローごとの料金を含む手順別レシピ(リリース確認、競合分析、iOS と Android の比較、Claude Code での週次モニタリング)については、docs/workflows.md をご覧ください。
料金
イベントごとの従量課金です。ツールイベントの料金が発生するのは、呼び出しが成功した場合のみです。検証に失敗した呼び出しや、ストアに接続できなかった呼び出しには、ツールイベントの料金は発生しません。Apify では、サーバーインスタンスの起動ごとに標準の Actor start イベント(メモリ 1 GB あたり $0.00005、最低 1 イベント)の料金も発生します。デフォルトのスタンバイメモリである 512 MB の場合、起動 1 回あたり $0.00005 で、インスタンスはアイドル状態になるまでに多数の呼び出しを処理します。この Actor の Pricing タブが、現在の料金を示す正式な一覧です。
| イベント | 料金 | 課金対象 |
|---|---|---|
search-apps | $0.002 | App Store の search_apps 呼び出しごと |
review | $0.001 | get_app_reviews が返す App Store のレビューごと(50 件のレビュー = 50 イベント、レビュー 0 件 = review イベントなし) |
review-insights | $0.03 | App Store の review_insights 呼び出しごと、一律。内部で分析されたレビューに対して review イベントの料金は発生しません |
compare-apps | $0.05 | App Store アプリのみを対象とする compare_apps 呼び出しごと。アプリ数やレビュー数にかかわらず一律 |
Google Play の呼び出しも、同じ料金で別のイベントとして課金されます。play-search は検索 1 回あたり $0.002、play-review はレビュー 1 件あたり $0.001、play-review-insights は呼び出し 1 回あたり $0.03、play-compare-apps は Google Play アプリを含む比較 1 回あたり $0.05 です。
ヒント: review_insights と compare_apps は、分析するレビュー数にかかわらず同じ料金です。集計データを取得する場合、生のレビューを何百件も取得するよりはるかに低コストです。
MCP クライアントを接続する
エンドポイント(Streamable HTTP):
https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp
Apify API トークンを Authorization: Bearer <APIFY_TOKEN> として送信し、認証します。
Cursor(~/.cursor/mcp.json または .cursor/mcp.json)
{
"mcpServers": {
"app-store-reviews": {
"url": "https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer <APIFY_TOKEN>"
}
}
}
}
Windsurf(~/.codeium/windsurf/mcp_config.json)
{
"mcpServers": {
"app-store-reviews": {
"serverUrl": "https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer <APIFY_TOKEN>"
}
}
}
}
Claude Desktop(claude_desktop_config.json)
Claude Desktop の設定ファイルではローカル(stdio)サーバーのみを起動できるため、ホストされたエンドポイントへのブリッジとして mcp-remote(Node.js が必要)を使用します。同じ設定ブロックは、stdio のみをサポートするほかのクライアントでも使用できます。
{
"mcpServers": {
"app-store-reviews": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp",
"--header", "Authorization: Bearer ${APIFY_TOKEN}"
],
"env": { "APIFY_TOKEN": "<APIFY_TOKEN>" }
}
}
}
ヘッダーを送信できないクライアント
Apify では token クエリパラメーターによるトークンの指定にも対応しているため、URL のみを指定できるクライアントでは次のように設定できます。
https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp?token=<APIFY_TOKEN>
クライアントが対応している場合は、Authorization ヘッダーを使用してください。URL 内のトークンがログに記録される可能性があります。トークンが漏えいした場合の被害を抑えるには、スコープを指定した Apify トークンを使用します。
Claude Code
claude mcp add --transport http app-store-reviews \
https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp \
--header "Authorization: Bearer $APIFY_TOKEN"
VS Code(.vscode/mcp.json)
{
"servers": {
"app-store-reviews": {
"type": "http",
"url": "https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp",
"headers": { "Authorization": "Bearer ${input:apifyToken}" }
}
},
"inputs": [{ "id": "apifyToken", "type": "promptString", "description": "Apify API token", "password": true }]
}
プロンプトの例
プロンプト、ツール呼び出し、実際の結果を含む、すぐに使える4つのワークフローを docs/workflows.md で紹介しています。
| ワークフロー | ツール | ホストサーバーでのツールイベントの費用(上記のActor起動料金に加算) |
|---|---|---|
| リリースチェック:直近のアップデートで状況は悪化したか? | review_insights | $0.03 |
| 競合分析:ロードマップや価格を決める前に | search_apps、compare_apps | $0.052 |
| iOSとAndroidの比較:どちらのプラットフォームのユーザーのほうが不満を抱えているか? | compare_apps | $0.05 |
週次レビューのモニタリング(Claude Codeで実行、cron + claude -p) | review_insights | 週あたり$0.06 |
- 「DuolingoのアプリIDを調べて、米国の直近300件のレビューでユーザーが何に不満を感じていたかをまとめてください。」
- 「Instagramの最新iOSリリースで状況は悪化しましたか?us、gb、caを使ってください。」
- 「iOSとAndroidのSpotifyを比較してください。どちらのプラットフォームのユーザーのほうが不満を抱えていて、何に不満を感じていますか?」
- 「Spotify、Apple Music、YouTube Musicの最近のレビューを比較して、それぞれの最大の不満点を教えてください。」
不満のキーワードと「悪化した点」の算出方法
この手法は透明性があり、決定論的です。LLMもブラックボックスモデルも使用しません。
- 評価が1~2★のレビューをトークン化します。曲線型と直線型のアポストロフィは同じものとして扱います。
- 内容語のみで構成される1語、2語、3語のフレーズを作成します。ストップワード、埋め草の語句(「never」「just」「still」「really」「keep」など)、レビューで定型的に使われる語句(「app」「update」「star」など)、数字、アプリ名と開発者名は除外します。複数形と所有格は統合します(
account/accounts)。 - 言及したレビューの件数に基づいてフレーズを順位付けするため、長い不満の投稿が結果を左右することはありません。複数語のフレーズには、わずかな加点をします。
- 冗長なフレーズを除外します。より長いフレーズで言及の大部分をカバーできる場合は、その単語を除外します(
screen→full screen)。また、類似するフレーズを統合します。 - **バージョンごとの差分:**サンプルを最新のアプリバージョンとその直前のバージョンに分割するか、
since_versionを使用します。平均評価と低評価の割合を比較し、低評価レビューに占める割合がどれだけ増加したかに基づいてフレーズを順位付けします。サンプルに単一バージョンしか含まれない場合は、直近3日間(または24時間)とそれ以前を比較します。それもできない場合は、その旨を伝え、pagesまたはcountriesを増やすよう提案します。confidenceレベルは、各側の低評価レビュー数を反映します。
制限事項
- 最近のレビューのみで、全履歴ではありません。 アプリ、ストアフロント、呼び出しごとに最大500件のレビューを取得します(Appleのフィードは50件ずつ10ページを提供し、Google Playにも同じ上限が適用されます)。インサイトが対象とするのは最近投稿されたレビューです。ストア全体の評価と件数は別途報告されます。
- 利用者の多いアプリでは、数日分しかカバーできないことがあります。 Instagramのようなアプリでは、150件のレビューが1日分、単一バージョンのものに限られる場合があります。その場合、
versionDeltasでその状況を説明し、pagesまたはcountriesを増やすよう提案します。 - 非公式のエンドポイントです。 AppleのiTunes Search/Lookup APIとRSSフィード、Google Playの公開ウェブエンドポイントは、キーなしで利用できますが、この用途については文書化されていません。変更されたり、レート制限されたりする可能性があります。サーバーはバックオフ付きで再試行し、応答を5分間キャッシュします。また、ページまたはストアフロントで失敗が発生した場合は、
warningsとともに部分的な結果を返します。 - Google Play固有の仕様。 レビューにはタイトルがなく、絞り込みは国よりも
lang(デフォルトはen)に基づきます。ストアフロント間で重複があるため、review_insightsは国をまたいでレビューの重複を除去します。多くのアプリでは、バージョン番号の代わりに「デバイスによって異なります」と表示されます。アプリのサイズは取得できません。 - Apple固有の仕様。 フィードにはデベロッパーからの返信も、評価のみの(未記入の)レビューも含まれません。
- 英語中心のキーワードです。 あらゆる言語のレビューが返され、集計されますが、ストップワードリストの大部分は英語で、スペイン語、フランス語、ドイツ語には基本的な対応のみです。
FAQ
Appleデベロッパーアカウント、Play Consoleへのアクセス、またはAPIキーは必要ですか? いいえ。すべてのデータはApp StoreとGoogle Playの公開エンドポイントから取得します。このホスト型サーバーを呼び出すには、Apifyのアカウントとトークンだけが必要です。
自分が所有していないアプリも分析できますか? はい。競合他社のアプリを含め、App StoreまたはGoogle Playに掲載されているアプリであれば、どれでも利用できます。
アプリのAndroid版を分析するにはどうすればよいですか?
Google Playのパッケージ名(com.spotify.music)またはPlayのURLを app_id として指定するか、search_apps を store: "google" とともに呼び出して検索してください。
サンプルの平均評価がストアの評価と大きく異なるのはなぜですか? ストアの評価には、アプリがこれまでに獲得したすべての評価が含まれており、レビュー本文のない多数の5★評価も対象です。サンプルが対象とするのは、最も最近のレビュー本文がある評価のみで、レビューを投稿する人は不満を抱えていることが多くなります。この差は有用です。最近の平均評価が急に下がった場合、最近のリリースに問題があることを示している可能性があります。
review_insights は何件のレビューを分析しますか?
ストアフロントごとに pages × 50 件、国ごとに最大500件です。pages: 10 と10か国を指定すると、1回の呼び出しで最大5,000件のレビューを分析し、課金は1イベント分です。
どの国に対応していますか?
2文字コードで指定できるすべてのストアフロントに対応しています。App Storeのレビューはストアフロントごとに分かれているため、幅広くカバーするには、review_insights に複数の国を指定してください。Google Playでは、他の言語のレビューを取得するには lang を使用します。
データは保存されますか? いいえ。サーバーはステートレスです。短期間のインメモリ応答キャッシュのみを保持し、データセットやキーバリューストアには何も書き込みません。
セルフホストできますか?
はい。npm install && npm run build を実行し、stdioでは node dist/index.js、Streamable HTTPでは node dist/index.js --http を実行してください。Streamable HTTPのURLは http://127.0.0.1:3000/mcp です。セルフホストの場合、BILLING=apify を設定しない限り課金は無効です。
セルフホスティングと開発
npm install
npm run build
npm start # MCP over stdio
npm run start:http # Streamable HTTP at http://127.0.0.1:3000/mcp (GET / and /health = health check)
npm test # build + unit checks + end-to-end smoke test against live Apple and Google Play endpoints
| 環境変数 | デフォルト | 用途 |
|---|---|---|
PORT / HOST | 3000 / 127.0.0.1 | HTTP バインド(--http);--port、--host も使用できます |
HTTP_TIMEOUT_MS | 15000 | Apple / Google Play へのリクエストごとのタイムアウト |
HTTP_MAX_RETRIES | 2 | 408/425/429/5xx/ネットワークエラー時の再試行回数 |
CACHE_TTL_MS | 300000 | メモリ内キャッシュの TTL(0 で無効) |
BILLING | (未設定);Docker イメージでは apify | apify を設定すると、イベントごとの課金に Actor.charge() を使用します |
GOOGLE_PLAY_ENABLED | 有効 | false にすると、ツールのスキーマから Google Play が非表示になり、Google Play の ID に対して「近日公開」エラーが返されます |
Apify での使用(スタンバイモード)。 APIFY_IS_AT_HOME が設定されている場合、サーバーは Actor.init() を呼び出し、HTTP モードを強制して、0.0.0.0:$ACTOR_WEB_SERVER_PORT でリッスンします。設定がない場合は、ACTOR_STANDBY_PORT、次に PORT を使用します。GET / はスタンバイのレディネスプローブに応答し、MCP は /mcp で提供されます。HTTP サーバー自体には認証機能がありません。Apify では、プラットフォームが API トークンを使ってリクエストを認証します。ローカルホスト以外でセルフホストする場合は、認証プロキシの背後に配置してください。
.actor/ actor.json, input_schema.json (empty), output_schema.json (MCP endpoint)
Dockerfile apify/actor-node:20, multi-stage TypeScript build, BILLING=apify
src/
index.ts entry: stdio or stateless Streamable HTTP; Apify Standby wiring
server.ts MCP tool registrations (zod schemas, error mapping, billing)
http.ts shared HTTP client: timeout, retry, cache
itunes.ts Apple API client: search, lookup, review feed parsing
googleplay.ts Google Play client: search, app details, reviews (batchexecute)
insights.ts distribution, by-version stats, n-gram keywords, version deltas, quotes
billing.ts chargeEvent() → Actor.charge() when BILLING=apify
util.ts errors, cache, concurrency limiter, input normalization
test/smoke.mjs unit checks + end-to-end test via the MCP SDK client (stdio + HTTP)
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。