app-store-reviews
Retrieve user reviews from the App Store to analyze feedback, track ratings, and understand customer sentiment for mobile applications.
Instructions
Get reviews for an App Store app. Returns an array of reviews with:
id: Review ID
userName: Reviewer's name
userUrl: Reviewer's profile URL
version: App version reviewed
score: Rating (1-5)
title: Review title
text: Review content
url: Review URL
updated: Review date (ISO string)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Numeric App ID (e.g., 553834731). Either this or appId must be provided. | |
| appId | No | Bundle ID (e.g., 'com.midasplayer.apps.candycrushsaga'). Either this or id must be provided. | |
| country | No | Country code to get reviews from (default: us) | us |
| page | No | Page number to retrieve (default: 1, max: 10) | |
| sort | No | Sort order (recent or helpful) | recent |
Implementation Reference
- src/server.js:120-148 (registration)Registration of the 'app-store-reviews' tool using server.tool(), including description, input schema, and inline handler function.server.tool("app-store-reviews", "Get reviews for an App Store app. Returns an array of reviews with:\n" + "- id: Review ID\n" + "- userName: Reviewer's name\n" + "- userUrl: Reviewer's profile URL\n" + "- version: App version reviewed\n" + "- score: Rating (1-5)\n" + "- title: Review title\n" + "- text: Review content\n" + "- url: Review URL\n" + "- updated: Review date (ISO string)", { id: z.number().optional().describe("Numeric App ID (e.g., 553834731). Either this or appId must be provided."), appId: z.string().optional().describe("Bundle ID (e.g., 'com.midasplayer.apps.candycrushsaga'). Either this or id must be provided."), country: z.string().default("us").describe("Country code to get reviews from (default: us)"), page: z.number().min(1).max(10).default(1).describe("Page number to retrieve (default: 1, max: 10)"), sort: z.enum(["recent", "helpful"]).default("recent").describe("Sort order (recent or helpful)") }, async ({ id, appId, country, page, sort }) => { const reviews = await store.reviews({ id, appId, country, page, sort: sort === "helpful" ? store.sort.HELPFUL : store.sort.RECENT }); return { content: [{ type: "text", text: JSON.stringify(reviews) }] }; } );
- src/server.js:138-147 (handler)Handler function that fetches reviews using the external 'store.reviews' method from '@jeromyfu/app-store-scraper' library, processes sort option, and returns JSON stringified reviews wrapped in MCP content format.async ({ id, appId, country, page, sort }) => { const reviews = await store.reviews({ id, appId, country, page, sort: sort === "helpful" ? store.sort.HELPFUL : store.sort.RECENT }); return { content: [{ type: "text", text: JSON.stringify(reviews) }] }; }
- src/server.js:131-137 (schema)Zod input schema defining parameters for the tool: app ID or bundle ID, country, page, and sort order.{ id: z.number().optional().describe("Numeric App ID (e.g., 553834731). Either this or appId must be provided."), appId: z.string().optional().describe("Bundle ID (e.g., 'com.midasplayer.apps.candycrushsaga'). Either this or id must be provided."), country: z.string().default("us").describe("Country code to get reviews from (default: us)"), page: z.number().min(1).max(10).default(1).describe("Page number to retrieve (default: 1, max: 10)"), sort: z.enum(["recent", "helpful"]).default("recent").describe("Sort order (recent or helpful)") },