Install
$ agentstack add mcp-appreply-co-mcp-appstore ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
App Store Scraper MCP Server
This is an MCP (Model Context Protocol) server that provides tools for searching and analyzing apps from both the Google Play Store and Apple App Store.
Perfect for ASO (App Store Search Optimization).
Built by AppReply.co. For more information, see our MCP documentation.
Installation
# Clone the repository
git clone https://github.com/appreply-co/mcp-appstore.git
cd mcp-appstore
# Install dependencies
npm install
Running the Server
npm start
This will start the server in studio mode, which is compatible with MCP clients.
Claude Code: Add to .mcp.json or your MCP config (path must be absolute; on Windows you can use forward slashes):
{
"mcpServers": {
"mcp-appstore": {
"command": "node",
"args": ["/absolute/path/to/mcp-appstore/server.js"]
}
}
}
Or: claude mcp add --transport stdio mcp-appstore -- node /absolute/path/to/mcp-appstore/server.js
Claude Desktop: Same mcpServers entry in claude_desktop_config.json (see Claude’s docs for the file path on your OS).
Available Tools
The server provides the following tools:
1. search_app
Search for apps by name and platform.
Parameters:
term: The search term to look upplatform: The platform to search on (iosorandroid)num(optional): Number of results to return (default: 10, max: 250)country(optional): Two-letter country code (default: "us")
Example usage:
const result = await client.callTool({
name: "search_app",
arguments: {
term: "spotify",
platform: "android",
num: 5
}
});
Response:
{
"query": "spotify",
"platform": "android",
"results": [
{
"id": "com.spotify.music",
"appId": "com.spotify.music",
"title": "Spotify: Music and Podcasts",
"developer": "Spotify AB",
"developerId": "Spotify+AB",
"icon": "https://play-lh.googleusercontent.com/...",
"score": 4.3,
"scoreText": "4.3",
"price": 0,
"free": true,
"platform": "android",
"url": "https://play.google.com/store/apps/details?id=com.spotify.music"
},
// Additional results...
],
"count": 5
}
2. getappdetails
Get detailed information about an app by ID.
Parameters:
appId: The unique app ID (com.example.app for Android or numeric ID/bundleId for iOS)platform: The platform of the app (iosorandroid)country(optional): Two-letter country code (default: "us")lang(optional): Language code for the results (default: "en")
Example usage:
const result = await client.callTool({
name: "get_app_details",
arguments: {
appId: "com.spotify.music",
platform: "android"
}
});
Response:
{
"appId": "com.spotify.music",
"platform": "android",
"details": {
"id": "com.spotify.music",
"appId": "com.spotify.music",
"title": "Spotify: Music and Podcasts",
"description": "With Spotify, you can play millions of songs and podcasts for free...",
"summary": "Listen to songs, podcasts, and playlists for free...",
"developer": "Spotify AB",
"developerId": "Spotify+AB",
"developerEmail": "androidapp@spotify.com",
"developerWebsite": "https://www.spotify.com/",
"icon": "https://play-lh.googleusercontent.com/...",
"headerImage": "https://play-lh.googleusercontent.com/...",
"screenshots": ["https://play-lh.googleusercontent.com/...", "..."],
"score": 4.3,
"scoreText": "4.3",
"ratings": 15678956,
"reviews": 4567890,
"histogram": {
"1": 567890,
"2": 234567,
"3": 890123,
"4": 2345678,
"5": 11640698
},
"price": 0,
"free": true,
"currency": "USD",
"categories": [
{ "name": "Music & Audio", "id": "MUSIC_AND_AUDIO" }
],
"genre": "Music & Audio",
"genreId": "MUSIC_AND_AUDIO",
"contentRating": "Teen",
"updated": 1648234567890,
"version": "8.7.30.1356",
"size": "30M",
"recentChanges": "We're always making changes and improvements to Spotify...",
"platform": "android"
}
}
3. analyzetopkeywords
Analyze top keywords for apps including brand analysis and competition metrics.
Parameters:
keyword: The keyword to analyzeplatform: The platform to analyze (iosorandroid)country(optional): Two-letter country code (default: "us")lang(optional): Language code for the results (default: "en")num(optional): Number of apps to analyze (default: 10, max: 50)
Example usage:
const result = await client.callTool({
name: "analyze_top_keywords",
arguments: {
keyword: "fitness tracker",
platform: "ios",
num: 10
}
});
Response:
{
"keyword": "fitness tracker",
"platform": "ios",
"topApps": [
{
"appId": "com.fitbit.FitbitMobile",
"title": "Fitbit: Health & Fitness",
"developer": "Fitbit, Inc.",
"developerId": "347935733",
"score": 4.5,
"ratings": 238456,
"free": true,
"price": 0,
"currency": "USD",
"category": "Health & Fitness",
"url": "https://apps.apple.com/us/app/fitbit/id...",
"icon": "https://is1-ssl.mzstatic.com/..."
},
// Additional apps...
],
"brandPresence": {
"topBrands": ["Fitbit, Inc.", "Garmin"],
"brandDominance": 0.45,
"competitionLevel": "Medium - mix of major brands and independents"
},
"metrics": {
"totalApps": 10,
"averageRating": 4.2,
"paidAppsPercentage": 30.0,
"categoryDistribution": {
"Health & Fitness": 8,
"Lifestyle": 2
}
}
}
4. analyze_reviews
Analyze app reviews and ratings to extract user sentiment and key insights.
Parameters:
appId: The unique app ID (com.example.app for Android or numeric ID/bundleId for iOS)platform: The platform of the app (iosorandroid)country(optional): Two-letter country code (default: "us")lang(optional): Language code for the results (default: "en")sort(optional): How to sort the reviews (newest,rating,helpfulness) (default: "newest")num(optional): Number of reviews to analyze (default: 100, max: 1000)
Example usage:
const result = await client.callTool({
name: "analyze_reviews",
arguments: {
appId: "com.spotify.music",
platform: "android",
sort: "helpfulness",
num: 200
}
});
Response:
{
"appId": "com.spotify.music",
"platform": "android",
"totalReviewsAnalyzed": 200,
"analysis": {
"sentimentBreakdown": {
"positive": 62.5,
"somewhat positive": 15.0,
"neutral": 10.0,
"somewhat negative": 7.5,
"negative": 5.0
},
"keywordFrequency": {
"music": 89,
"playlist": 76,
"premium": 65,
"offline": 43,
"podcasts": 38,
"shuffle": 27,
"recommend": 25,
"interface": 21,
"free": 19,
"account": 18
},
"ratingDistribution": {
"1": 10,
"2": 15,
"3": 20,
"4": 55,
"5": 100
},
"commonThemes": [
{
"theme": "User Experience",
"description": "Users are commenting on the app's design or usability"
},
{
"theme": "Pricing Concerns",
"description": "Users are discussing price or subscription costs"
}
],
"recentIssues": {
"premium": 12,
"account": 8,
"login": 7,
"crash": 5,
"error": 4
},
"topPositiveKeywords": {
"music": 65,
"playlist": 48,
"recommend": 22,
"discover": 18,
"variety": 15
},
"topNegativeKeywords": {
"premium": 18,
"shuffle": 12,
"advertisements": 10,
"connect": 8,
"subscription": 7
}
}
}
5. fetch_reviews
Fetches raw reviews without analysis, including developer responses for Android apps.
Parameters:
appId: The unique app ID (com.example.app for Android or numeric ID/bundleId for iOS)platform: The platform of the app (iosorandroid)country(optional): Two-letter country code (default: "us")lang(optional): Language code for the results (default: "en")sort(optional): How to sort the reviews (newest,rating,helpfulness) (default: "newest")num(optional): Number of reviews to fetch (default: 100, max: 1000)
Example usage:
const result = await client.callTool({
name: "fetch_reviews",
arguments: {
appId: "com.spotify.music",
platform: "android",
sort: "helpfulness",
num: 50
}
});
Response for Android:
{
"appId": "com.spotify.music",
"platform": "android",
"count": 50,
"reviews": [
{
"id": "gp:AOqpTOFmAVORqfWGcaqfF39ftwFjGkjecjvjXnC3g_uL0NtVGlrrqm8X2XUWx0WydH3C9afZlPUizYVZAfARLuk",
"userName": "John Smith",
"userImage": "https://lh3.googleusercontent.com/-hBGvzn3XlhQ/AAAAAAAAAAI/AAAAAAAAOw0/L4GY9KrQ-DU/w96-c-h96/photo.jpg",
"score": 4,
"scoreText": "4",
"title": "Great app but one issue",
"text": "Love the app but please fix the offline mode issue.",
"date": "2023-01-15T18:31:42.174Z",
"url": "https://play.google.com/store/apps/details?id=com.spotify.music&reviewId=...",
"version": "8.7.30.1356",
"thumbsUp": 56,
"replyDate": "2023-01-16T10:22:33.174Z",
"replyText": "Thanks for your feedback! We're working on a fix for the offline mode issue.",
"hasDeveloperResponse": true
},
// Additional reviews...
]
}
Response for iOS:
{
"appId": "324684580",
"platform": "ios",
"count": 50,
"reviews": [
{
"id": "6934893147",
"userName": "SpotifyUser2023",
"userUrl": "https://itunes.apple.com/us/reviews/id324568166",
"score": 5,
"title": "Best music app ever!",
"text": "I've been using Spotify for years and it keeps getting better.",
"date": "2023-02-10T14:23:17-07:00",
"version": "8.8.12",
"url": "https://itunes.apple.com/us/review?id=324684580&type=Purple%20Software",
"hasDeveloperResponse": false
},
// Additional reviews...
]
}
6. getsimilarapps
Returns a list of similar or related apps ("Customers also bought" for iOS, "Similar apps" for Android).
Parameters:
appId: The unique app ID (com.example.app for Android or numeric ID/bundleId for iOS)platform: The platform of the app (iosorandroid)country(optional): Two-letter country code (default: "us")lang(optional): Language code for the results (default: "en")num(optional): Number of similar apps to return (default: 20)
Example usage:
const result = await client.callTool({
name: "get_similar_apps",
arguments: {
appId: "com.spotify.music",
platform: "android",
num: 10
}
});
Response:
{
"appId": "com.spotify.music",
"platform": "android",
"count": 10,
"similarApps": [
{
"id": "com.pandora.android",
"appId": "com.pandora.android",
"title": "Pandora: Music & Podcasts",
"summary": "Listen to your favorite music and podcasts anywhere",
"developer": "Pandora",
"developerId": "Pandora+Media%2C+Inc.",
"icon": "https://play-lh.googleusercontent.com/b3MuISSUiJ7mzJAb4GnwgVc8AH-Lj1iXZC-JqU8Bh-OlzXHRqOUkXmhdrLzGUgUVqA4=s180",
"score": 4.3,
"scoreText": "4.3",
"price": 0,
"free": true,
"currency": "USD",
"platform": "android",
"url": "https://play.google.com/store/apps/details?id=com.pandora.android&hl=en&gl=us"
},
{
"id": "deezer.android.app",
"appId": "deezer.android.app",
"title": "Deezer: Music & Podcast Player",
"summary": "Stream music, create playlists and enjoy podcasts",
"developer": "Deezer",
"developerId": "Deezer+Mobile",
"icon": "https://play-lh.googleusercontent.com/mOkjDMwP8I79j8jFZ9nP88tRpZrPGwOoFxJC9pWQj1_vR8M4JM_wR7-8UBWwdOUGgw=s180",
"score": 4.1,
"scoreText": "4.1",
"price": 0,
"free": true,
"currency": "USD",
"platform": "android",
"url": "https://play.google.com/store/apps/details?id=deezer.android.app&hl=en&gl=us"
},
// Additional apps...
]
}
7. getpricingdetails
Get detailed pricing information and monetization model for an app.
Parameters:
appId: The unique app ID (com.example.app for Android or numeric ID/bundleId for iOS)platform: The platform of the app (iosorandroid)country(optional): Two-letter country code (default: "us")lang(optional): Language code for the results (default: "en")
Example usage:
const result = await client.callTool({
name: "get_pricing_details",
arguments: {
appId: "com.spotify.music",
platform: "android"
}
});
Response:
{
"appId": "com.spotify.music",
"platform": "android",
"basePrice": {
"amount": 0,
"currency": "USD",
"formattedPrice": "Free",
"isFree": true
},
"inAppPurchases": {
"offers": true,
"priceRange": "$0.99 - $14.99",
"items": [
{
"type": "unknown",
"price": "$9.99",
"isSubscription": true
},
{
"type": "unknown",
"price": "$4.99",
"isSubscription": false
}
]
},
"subscriptions": {
"offers": true,
"items": [
{
"period": "monthly",
"price": "$9.99"
},
{
"period": "yearly",
"price": "$99.99"
}
]
},
"adSupported": true,
"monetizationModel": "Freemium with ads and subscriptions"
}
8. getdeveloperinfo
Get comprehensive information about a developer/publisher and their portfolio of apps.
Parameters:
developerId: The developer ID to get information forplatform: The platform of the developer (iosorandroid)country(optional): Two-letter country code (default: "us")lang(optional): Language code for the results (default: "en")includeApps(optional): Whether to include the developer's apps in the response (default: true)
Example usage:
const result = await client.callTool({
name: "get_developer_info",
arguments: {
developerId: "Spotify AB",
platform: "android"
}
});
Response:
{
"developerId": "Spotify AB",
"platform": "android",
"name": "Spotify AB",
"website": "https://www.spotify.com",
"email": "android-support@spotify.com",
"address": "Regeringsgatan 19, Stockholm 111 53, Sweden",
"privacyPolicy": "https://www.spotify.com/legal/privacy-policy/",
"supportContact": "android-support@spotify.com",
"totalApps": 3,
"metrics": {
"totalInstalls": 1000000000,
"averageRating": 4.3,
"totalRatings": 22000000
},
"apps": [
{
"appId": "com.spotify.music",
"title": "Spotify: Music and Podcasts",
"icon": "https://play-lh.googleusercontent.com/...",
"score": 4.3,
"ratings": 15000000,
"installs": 1000000000,
"price": 0,
"free": true,
"category": "Music & Audio",
"url": "https://play.google.com/store/apps/details?id=com.spotify.music"
},
// Additional apps...
]
}
9. getversionhistory
Get version history and changelogs for an app. Note: Currently only provides the latest version for both platforms due to API limitations.
Parameters:
appId: The unique app ID (com.example.app for Android or numeric ID/bundleId for iOS)platform: The platform of the app (iosorandroid)country(optional): Two-letter country code (default: "us")lang(optional): Language code for the results (default: "en")
Example usage:
const result = await client.callTool({
name: "get_version_history",
arguments: {
appId: "com.spotify.music",
…
## Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- **Author:** [appreply-co](https://github.com/appreply-co)
- **Source:** [appreply-co/mcp-appstore](https://github.com/appreply-co/mcp-appstore)
- **License:** MIT
- **Homepage:** https://appreply.co/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.