mcp-appstore-reviews
This server manages Apple App Store customer reviews and developer responses — and nothing else.
List customer reviews (
list_reviews): Retrieve reviews for a given app (by numeric App Store ID). Each review includes its ID, star rating, title, body, reviewer nickname, territory, date, and any existing developer response ID. Supports filtering by:Territory (e.g.
USA,GBR)Exact star rating (1–5)
Sort order:
recent(default),favorable(highest rated first), orcritical(lowest rated first)Result limit (1–200, default 50)
Publish a developer response (
respond_to_review): Post a public developer reply to a specific customer review using its review ID. Only one response per review is allowed — an existing response must be deleted before a new one can be posted.Delete a developer response (
delete_review_response): Remove an existing developer response using the response ID (obtained fromlist_reviews), not the review ID itself.
Allows reading customer reviews and managing developer responses for apps on the Apple App Store.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-appstore-reviewslist reviews for app ID 123456789"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-appstore-reviews
A small, reviews-only MCP server for the Apple App Store, backed by the App Store Connect API. It lets an agent read customer reviews and publish or delete developer responses — and deliberately nothing else.
Why so narrow?
The capability boundary is the trust guarantee. This server exposes only the three review tools below. There is intentionally no build, release, submission, pricing, in-app-purchase, certificate, profile, or beta-tester tool, so the App Store Connect key you give it can't be used to do any of those things. Scope the key itself narrowly too (the Customer Support role is enough).
It is also dependency-free — pure Node 18+ (fetch + built-in crypto),
no third-party packages — so there is no supply chain to audit beyond this one
file (index.mjs).
Related MCP server: App Store Connect MCP
Tools
Tool | Description |
| List reviews for an app (newest first by default), including any existing developer response and its id. Filters: |
| Publish a developer response to a review ( |
| Delete a developer response by its |
Authentication
Create an App Store Connect API key (Users and Access → Integrations → App Store Connect API). Two kinds of key work:
Team key — needs the Customer Support role (enough to manage reviews without Admin's broader powers), but only an Admin can generate it. Supply the Issuer ID along with the Key ID and
.p8.Individual key — any user can generate their own (no Admin needed) and it inherits that user's permissions. It has no Issuer ID: leave
APP_STORE_CONNECT_ISSUER_IDunset and supply just the Key ID and.p8.
Then provide:
Env var | What |
| Issuer ID shown at the top of the Integrations page — team keys only; omit for individual keys |
| Key ID of the API key |
| Path to the downloaded |
The private key is read only to sign a short-lived ES256 JWT for Apple; it is never logged, copied, or sent anywhere but Apple's API.
Run
# stdio MCP server
APP_STORE_CONNECT_ISSUER_ID=... \
APP_STORE_CONNECT_KEY_ID=... \
APP_STORE_CONNECT_PRIVATE_KEY_PATH=/path/to/AuthKey_XXXX.p8 \
npx -y github:ForgeHQ-Agents/mcp-appstore-reviewsThe agent passes the app's numeric App Store ID as appId (find it in App Store
Connect → your app → App Information, or in the app's App Store URL).
Test
npm test # node --test, zero dependenciesLicense
MIT
Available Tools
3 toolsdelete_review_responseA
Delete an existing developer response. Takes the response id (the response.id field surfaced by list_reviews), not the review id.
| Name | Required | Description | Default |
|---|---|---|---|
| responseId | Yes | The developer-response id from list_reviews |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the destructive action (delete) but lacks mention of irreversibility or permissions; however, for a simple delete operation, the description is mostly adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The critical guidance is placed first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers purpose, parameter source, and usage nuance, leaving no significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with clear description of the parameter. The description adds extra value by clarifying it is not the review id, preventing misuse.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Delete an existing developer response.' Distinguishes from sibling tools list_reviews and respond_to_review by focusing on deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the required parameter and warns against using the review id instead of the response id, providing clear guidance on correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_reviewsA
List customer reviews for an app, newest first by default. Each review includes its id, star rating, title, body, reviewer nickname, territory, date, and the existing developer response (with its id) if one exists. Use the response id with delete_review_response.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App Store app id (the numeric Apple ID of the app) | |
| territory | No | Optional ISO territory filter, e.g. 'USA', 'GBR' | |
| rating | No | Optional exact star rating filter, 1–5 | |
| sort | No | Sort order: recent (default), favorable (highest first), critical (lowest first) | |
| limit | No | Max reviews to return, 1–200 (default 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. Discloses default sort, output fields (star rating, title, body, etc.), and mention of existing developer response. Does not discuss rate limits or auth, but as a read operation, these are less critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with zero fluff. Each sentence adds essential information: purpose, output details, and cross-reference to sibling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description compensates by listing output fields. Parameter details are covered by schema. Tool is straightforward; description is complete enough for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds value by elaborating on default sort ('newest first') and output fields, which help understand parameter effects (e.g., sort parameter).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists customer reviews, specifying 'for an app' and 'newest first by default'. Distinguishes from siblings by mentioning the response id can be used with delete_review_response.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes the tool's purpose and links to sibling tools via response id usage. Lacks explicit when-not-to-use or alternative scenarios, but context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
respond_to_reviewA
Publish a public developer response to a customer review. One response per review — if the review already has a response, delete it first with delete_review_response, then respond again.
| Name | Required | Description | Default |
|---|---|---|---|
| reviewId | Yes | The review id from list_reviews | |
| responseBody | Yes | The response text to publish |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It discloses the publish operation, the one-response limit, and the need to delete first. However, it does not mention potential moderation, character limits, or visibility latency. Still, it adds significant context beyond a simple 'publish'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, followed by a key usage constraint. No extraneous information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation with 2 params and no output schema, the description covers the main usage context (publish, one-per-review, deletion prerequisite). Missing details like return value (success/error), permissions, or public visibility timeline. Adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions already explaining each parameter. The description adds minimal additional meaning for the parameters: it clarifies that reviewId comes from list_reviews and responseBody is the text. This does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Publish' and the resource 'public developer response to a customer review'. It distinguishes from sibling tools 'delete_review_response' and 'list_reviews' by explicitly mentioning the one-response-per-review constraint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: use only if no existing response, otherwise delete first using delete_review_response. Names the alternative tool and gives a clear procedural step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- First observed
delete_review_response - First observed
list_reviews - First observed
respond_to_review
TDQS
Scored across 3 tools
Each tool has a clear, distinct purpose: listing reviews, responding to a review, and deleting a response. No overlap or ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case (list_reviews, respond_to_review, delete_review_response).
Three tools cover the essential operations for app store review responses: list, respond, and delete. The count is well-scoped for this domain.
Covers the full lifecycle of review responses (read, create, delete). Minor gap: no direct update for a response (requires delete+create), but the documentation clarifies the intended workflow.
Maintenance
Related MCP Connectors
- app-managerOAuthapp.lance
App Store Connect operator for AI agents: icons, TestFlight builds, listings, IAP, rejection fixes.
Apple App Store reviews as structured JSON via the Apify Reviews API Actor, hosted MCP.
Read products, sales, subscribers and offer codes; verify, enable and disable product licenses.
Scrape App Store reviews and rating history by app, country, rating or date. Pay per row.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables read-only interaction with App Store Connect via MCP tools, including listing apps, versions, builds, and review submissions, with compliance boundaries and no write operations by default.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage Apple App Store Connect through the official API, including apps, metadata, reviews, TestFlight, provisioning, users, and reports.MIT
- AlicenseNot gradedqualityDmaintenanceEnables automated management of iOS apps, builds, TestFlight beta testing, and user access control through Apple's App Store Connect API.30 npmMIT
- AlicenseAqualityCmaintenanceEnables AI assistants to manage Apple App Store Connect resources like apps, builds, TestFlight, and reviews through natural language.2015 npmMIT