App Store Review Intelligence MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | HTTP bind host when running self-hosted in HTTP mode (`--http`); default 127.0.0.1. Also configurable via `--host`. | 127.0.0.1 |
| PORT | No | HTTP bind port when running self-hosted in HTTP mode (`--http`); default 3000. Also configurable via `--port`. | 3000 |
| BILLING | No | Set to `apify` to enable `Actor.charge()` pay-per-event billing; unset by default (`apify` in the Docker image). | |
| APIFY_TOKEN | Yes | Your Apify API token, sent as `Authorization: Bearer <APIFY_TOKEN>` to authenticate requests to the hosted MCP endpoint (https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp). | |
| CACHE_TTL_MS | No | In-memory cache TTL in milliseconds (`0` disables caching). Default 300000. | 300000 |
| HTTP_TIMEOUT_MS | No | Per-request timeout in milliseconds to Apple / Google Play. Default 15000. | 15000 |
| APIFY_IS_AT_HOME | No | When set, the server calls `Actor.init()`, forces HTTP mode, and listens on `0.0.0.0:$ACTOR_WEB_SERVER_PORT` (Apify Standby mode). | |
| HTTP_MAX_RETRIES | No | Number of retries on 408/425/429/5xx/network errors. Default 2. | 2 |
| ACTOR_STANDBY_PORT | No | Fallback port when running on Apify in Standby mode if `ACTOR_WEB_SERVER_PORT` is not set. | |
| GOOGLE_PLAY_ENABLED | No | Set to `false` to hide Google Play from tool schemas and reject Google Play ids with a "coming soon" error. Enabled by default. | true |
| ACTOR_WEB_SERVER_PORT | No | Port to listen on when running on Apify in Standby mode (used when `APIFY_IS_AT_HOME` is set). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_appsA | Find apps by name or keyword and get the app id the other tools need. Returns id (Apple numeric id or Google Play package name), name, developer, rating, rating count, price, genre, current version, store URL (Google adds installs). Use when the user names an app ("Duolingo", "Calm") or a category ("budget apps"). Set store: "google" for Android/Google Play. Cheap, one call. Next: review_insights or compare_apps. |
| get_app_reviewsA | Fetch raw reviews for one app: rating, title (Apple only), text, app version, date, helpful votes (Google adds developer replies). Use when the user wants to read or quote actual reviews or you need text for custom analysis. For summaries, complaints or "what broke", call review_insights instead: it is one flat-priced call. Billed per review returned (~50 per page; default 1 page). Max 10 pages ≈ 500 reviews. |
| review_insightsA | Best first call for any question about an app's user feedback. Analyses recent reviews and returns: rating distribution, average rating per app version, top complaint phrases from 1-2★ reviews (share + example quote), versionDeltas (latest version vs earlier: rating change, negative-share change, rising complaints with quotes; falls back to last 3 days vs earlier), and sample quotes. Use for "why are users unhappy with X", "what broke in the last update", "top complaints about X", "summarize feedback". One flat price per call regardless of pages/countries. For the review text itself use get_app_reviews; to benchmark several apps at once use compare_apps. Apple and Google Play. |
| compare_appsA | Benchmark 2-10 apps in one storefront for competitor analysis: store rating, rating count, price, current version & release date (Google adds installs), plus recent-review metrics (sample average, % negative / positive, latest-version average, top 5 complaints) and per-metric leaders. Apple ids and Google Play package names can be mixed (e.g. iOS vs Android of the same app). Examples: "Notion vs Evernote", "which meditation app has the happiest users". One flat price per call. Get ids from search_apps first. For one app in depth (version deltas, more quotes) use review_insights instead. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 4 tools
Each tool targets a distinct step in the workflow: discovery (search_apps), analysis (review_insights), raw retrieval (get_app_reviews), and benchmarking (compare_apps). Descriptions explicitly cross-reference each other with routing guidance ('for summaries call review_insights instead'), leaving no real chance of misselection.
Three tools follow a clean verb_noun pattern (search_apps, get_app_reviews, compare_apps), all snake_case. review_insights breaks the verb-first convention by leading with a noun, a minor but noticeable deviation in an otherwise tight set.
Four tools is well-scoped for an app-review intelligence server: discovery, raw fetch, single-app analysis, and multi-app comparison. Each tool covers a genuinely separate need with no filler or redundancy.
The search → inspect → analyze → compare lifecycle is fully covered, with sensible handoffs between tools. Minor gaps remain: no filtering of raw reviews by rating/version/date, no explicit app-details lookup, and a hard cap of ~500 reviews per fetch.