关于 App Store Scraper MCP Server
App Store Scraper MCP Server 为 LLM 提供搜索和分析 Google Play 与 Apple App Store 应用的工具,适用于 ASO(应用商店搜索优化)工作。由 AppReply.co 开发。
主要功能
- 01搜索 iOS 与 Android 应用
- 02获取应用详情、定价与开发者信息
- 03分析关键词与用户评论
- 04获取相似应用与版本历史
适用场景
- 01为 ASO 调研竞品应用信息
- 02汇总应用评论以了解用户反馈
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露应用搜索、详情与评论分析等工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
App Store Scraper MCP 服务
这是一个 MCP(Model Context Protocol)服务,提供用于搜索和分析 Google Play Store 与 Apple App Store 中应用的工具。
非常适合 ASO(应用商店搜索优化)。
由 AppReply.co 构建。
安装
# Clone the repository
git clone https://github.com/appreply-co/mcp-appstore.git
cd mcp-appstore
# Install dependencies
npm install
运行服务
npm start
这会以 studio 模式启动服务,该模式兼容 MCP 客户端。
Claude Code: 添加到 .mcp.json 或 MCP 配置中(路径必须为绝对路径;在 Windows 上可以使用正斜杠):
{
"mcpServers": {
"mcp-appstore": {
"command": "node",
"args": ["/absolute/path/to/mcp-appstore/server.js"]
}
}
}
或者:claude mcp add --transport stdio mcp-appstore -- node /absolute/path/to/mcp-appstore/server.js
Claude Desktop: 在 claude_desktop_config.json 中添加相同的 mcpServers 条目(请参阅 Claude 的文档,了解适用于你所用操作系统的文件路径)。
可用工具
该服务提供以下工具:
1. search_app
按名称和平台搜索应用。
参数:
term:要查找的搜索词platform:要搜索的平台(ios或android)num(可选):返回结果数量(默认值:10,最大值:250)country(可选):两位国家/地区代码(默认值:"us")
用法示例:
const result = await client.callTool({
name: "search_app",
arguments: {
term: "spotify",
platform: "android",
num: 5
}
});
响应:
{
"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. get_app_details
根据 ID 获取应用的详细信息。
参数:
appId:唯一应用 ID(Android 使用 com.example.app,iOS 使用数字 ID/bundleId)platform:应用所属平台(ios或android)country(可选):两位国家/地区代码(默认值:"us")lang(可选):结果的语言代码(默认值:"en")
用法示例:
const result = await client.callTool({
name: "get_app_details",
arguments: {
appId: "com.spotify.music",
platform: "android"
}
});
响应:
{
"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": "[email protected]",
"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. analyze_top_keywords
分析应用的热门关键词,包括品牌分析和竞争指标。
参数:
keyword:要分析的关键词platform:要分析的平台(ios或android)country(可选):两位国家/地区代码(默认值:"us")lang(可选):结果的语言代码(默认值:"en")num(可选):要分析的应用数量(默认值:10,最大值:50)
用法示例:
const result = await client.callTool({
name: "analyze_top_keywords",
arguments: {
keyword: "fitness tracker",
platform: "ios",
num: 10
}
});
响应:
{
"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
分析应用评论和评分,提取用户情感倾向和关键见解。
参数:
appId:唯一应用 ID(Android 使用 com.example.app,iOS 使用数字 ID/bundleId)platform:应用所属平台(ios或android)country(可选):两位国家/地区代码(默认值:"us")lang(可选):结果的语言代码(默认值:"en")sort(可选):评论的排序方式(newest、rating、helpfulness)(默认值:"newest")num(可选):要分析的评论数量(默认值:100,最大值:1000)
用法示例:
const result = await client.callTool({
name: "analyze_reviews",
arguments: {
appId: "com.spotify.music",
platform: "android",
sort: "helpfulness",
num: 200
}
});
响应:
{
"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
获取未经分析的原始评论,其中包括 Android 应用的开发者回复。
参数:
appId:唯一应用 ID(Android 使用 com.example.app,iOS 使用数字 ID/bundleId)platform:应用所属平台(ios或android)country(可选):两位国家/地区代码(默认值:"us")lang(可选):结果的语言代码(默认值:"en")sort(可选):评论的排序方式(newest、rating、helpfulness)(默认值:"newest")num(可选):要获取的评论数量(默认值:100,最大值:1000)
用法示例:
const result = await client.callTool({
name: "fetch_reviews",
arguments: {
appId: "com.spotify.music",
platform: "android",
sort: "helpfulness",
num: 50
}
});
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...
]
}
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. get_similar_apps
返回相似或相关应用列表(iOS 上为“购买此应用的客户还购买了”,Android 上为“类似应用”)。
参数:
appId:应用的唯一 ID(Android 使用 com.example.app,iOS 使用数字 ID/bundleId)platform:应用所属平台(ios或android)country(可选):两字母国家/地区代码(默认值:"us")lang(可选):结果的语言代码(默认值:"en")num(可选):要返回的相似应用数量(1-50,默认值:20)。iOS 摘要会截断至 100 个字符(与get_app_details的处理方式相同);如需完整描述,请使用get_app_details。
使用示例:
const result = await client.callTool({
name: "get_similar_apps",
arguments: {
appId: "com.spotify.music",
platform: "android",
num: 10
}
});
响应:
{
"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. get_pricing_details
获取应用的详细定价信息和变现模式。
参数:
appId:应用的唯一 ID(Android 使用 com.example.app,iOS 使用数字 ID/bundleId)platform:应用所属平台(ios或android)country(可选):两字母国家/地区代码(默认值:"us")lang(可选):结果的语言代码(默认值:"en")
使用示例:
const result = await client.callTool({
name: "get_pricing_details",
arguments: {
appId: "com.spotify.music",
platform: "android"
}
});
响应:
{
"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. get_developer_info
获取开发者/发布者及其应用组合的全面信息。
参数:
developerId:要查询的开发者 IDplatform:开发者所属平台(ios或android)country(可选):两字母国家/地区代码(默认值:"us")lang(可选):结果的语言代码(默认值:"en")includeApps(可选):是否在响应中包含该开发者的应用(默认值:true)
使用示例:
const result = await client.callTool({
name: "get_developer_info",
arguments: {
developerId: "Spotify AB",
platform: "android"
}
});
响应:
{
"developerId": "Spotify AB",
"platform": "android",
"name": "Spotify AB",
"website": "https://www.spotify.com",
"email": "[email protected]",
"address": "Regeringsgatan 19, Stockholm 111 53, Sweden",
"privacyPolicy": "https://www.spotify.com/legal/privacy-policy/",
"supportContact": "[email protected]",
"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. get_version_history
获取应用的版本历史和更新日志。注意:由于 API 限制,目前仅提供两个平台的最新版本。
参数:
appId:应用的唯一 ID(Android 使用 com.example.app,iOS 使用数字 ID/bundleId)platform:应用所属平台(ios或android)country(可选):两字母国家/地区代码(默认值:"us")lang(可选):结果的语言代码(默认值:"en")
使用示例:
const result = await client.callTool({
name: "get_version_history",
arguments: {
appId: "com.spotify.music",
platform: "ios"
}
});
iOS 响应:
{
"appId": "com.spotify.music",
"platform": "ios",
"platformCapabilities": {
"fullHistoryAvailable": false,
"description": "Only latest version available - API limitation (versionHistory function not available)"
},
"currentVersion": {
"versionNumber": "8.8.40",
"releaseDate": "2024-03-28T14:52:32Z",
"changelog": "Bug fixes and improvements",
"isCurrentVersion": true
},
"history": [
{
"versionNumber": "8.8.40",
"releaseDate": "2024-03-28T14:52:32Z",
"changelog": "Bug fixes and improvements",
"isCurrentVersion": true
}
],
"metadata": {
"retrievalDate": "2024-03-31T12:34:56Z",
"totalVersions": 1,
"limitations": [
"Only latest version available",
"Historical data not accessible via the iTunes lookup API"
]
}
}
Android 响应:
{
"appId": "com.spotify.music",
"platform": "android",
"platformCapabilities": {
"fullHistoryAvailable": false,
"description": "Only latest version available due to Google Play Store limitations"
},
"currentVersion": {
"versionNumber": "8.8.40.480",
"releaseDate": "2024-03-28T14:52:32Z",
"changelog": "We're always making changes and improvements to Spotify",
"isCurrentVersion": true
},
"history": [
{
"versionNumber": "8.8.40.480",
"releaseDate": "2024-03-28T14:52:32Z",
"changelog": "We're always making changes and improvements to Spotify",
"isCurrentVersion": true
}
],
"metadata": {
"retrievalDate": "2024-03-31T12:34:56Z",
"totalVersions": 1,
"limitations": [
"Only latest version available",
"Historical data not accessible via Google Play Store API"
]
}
}
10. get_android_categories
获取 Google Play 商店中所有可用应用类别的完整列表。
参数: 此工具不需要任何参数。
使用示例:
const result = await client.callTool({
name: "get_android_categories",
arguments: {}
});
响应:
{
"platform": "android",
"count": 54,
"categories": [
"APPLICATION",
"ANDROID_WEAR",
"ART_AND_DESIGN",
// ...
"GAME_WORD",
"FAMILY"
],
"source": "google-play-scraper built-in category IDs (not fetched live from Google Play)"
}
**注意:**该列表来自 google-play-scraper 内置的类别 ID,并非实时请求的结果。目前,从 Google Play 抓取类别只会返回 "APPLICATION",因此这里使用内置列表。该列表可能无法及时反映 Google 新增或移除的类别。
11. get_keyword_scores
返回根据关键词字符串本身生成的模拟占位难度分数和流量分数。这些分数不是根据 App Store 或 Google Play 的数据测得的(dataSource: "synthetic")。在接入真实 ASO 集成之前,请勿将此工具用于关键词研究。
参数:
keyword:要分析的关键词。工具描述会提醒调用方,这些分数是模拟的。platform:要分析关键词的平台(ios或android)。country(可选):用于本地化的两字母国家/地区代码。默认值为 'us'。相同的关键词、平台和国家/地区始终会返回相同的占位数字。
使用示例:
const result = await client.callTool({
name: "get_keyword_scores",
arguments: {
keyword: "music streaming",
platform: "android"
}
});
响应:
{
"keyword": "music streaming",
"platform": "android",
"country": "us",
"dataSource": "synthetic",
"warning": "These scores are NOT measured from the App Store or Google Play. They are generated from the keyword string alone and carry no market signal. Do not use them for keyword decisions or report them as research.",
"scores": {
"difficulty": {
"score": 8.56,
"components": {
"titleMatches": {
"exact": 8,
"broad": 1,
"partial": 1,
"none": 0,
"score": 9.3
},
"competitors": {
"count": 42,
"score": 7.35
},
"installs": {
"avg": 12500000,
"score": 9.9
},
"rating": {
"avg": 4.5,
"score": 9.0
},
"age": {
"avgDaysSinceUpdated": 48.2,
"score": 5.8
}
},
"interpretation": "Difficult to rank for"
},
"traffic": {
"score": 7.82,
"components": {
"suggest": {
"length": 2,
"index": 1,
"score": 8.5
},
"ranked": {
"count": 7,
"avgRank": 12.3,
"score": 7.9
},
"installs": {
"avg": 12500000,
"score": 9.9
},
"length": {
"length": 15,
"score": 5.0
}
},
"interpretation": "High search traffic"
}
}
}
每个分数都附有人类可读的说明,帮助理解其含义。
**注意:**分数根据关键词字符串生成(长度加上带种子的 PRNG)。它们不是应用商店的测量结果。响应中包含 dataSource: "synthetic" 和 warning 字段,以避免模型将这些分数描述为研究结果。
12. suggest_keywords_by_category
根据与目标应用属于同一类别的应用获取关键词建议。
参数:
appId:应用的唯一 ID(Android 应用为 com.example.app,iOS 应用为数字 ID 或 bundleId)platform:应用的平台(ios或android)num(可选):要返回的关键词建议数量(默认值:30)country(可选):两位国家代码(默认值:"us")lang(可选):结果的语言代码(默认值:"en")
用法示例:
const result = await client.callTool({
name: "suggest_keywords_by_category",
arguments: {
appId: "com.spotify.music",
platform: "android",
num: 20
}
});
响应:
{
"appId": "com.spotify.music",
"platform": "android",
"strategy": "category",
"description": "Keywords commonly used by apps in the same category as the target app",
"suggestions": [
"music",
"audio",
"player",
"listen",
"songs"
],
"count": 5
}
13. suggest_keywords_by_similarity
根据相似应用(Android)或“客户还购买了”应用(iOS)获取关键词建议。
参数:
appId:应用的唯一 ID(Android 应用为 com.example.app,iOS 应用为数字 ID 或 bundleId)platform:应用的平台(ios或android)num(可选):要返回的关键词建议数量(默认值:30)country(可选):两位国家代码(默认值:"us")lang(可选):结果的语言代码(默认值:"en")
用法示例:
const result = await client.callTool({
name: "suggest_keywords_by_similarity",
arguments: {
appId: "com.spotify.music",
platform: "android",
num: 20
}
});
响应:
{
"appId": "com.spotify.music",
"platform": "android",
"strategy": "similarity",
"description": "Keywords commonly used by apps marked as 'similar' to the target app in Google Play",
"suggestions": [
"music",
"streaming",
"player",
"audio",
"playlist"
],
"count": 5
}
14. suggest_keywords_by_competition
根据与目标应用定位相同关键词的应用获取关键词建议。
参数:
appId:应用的唯一 ID(Android 应用为 com.example.app,iOS 应用为数字 ID 或 bundleId)platform:应用的平台(ios或android)num(可选):要返回的关键词建议数量(默认值:30)country(可选):两位国家代码(默认值:"us")lang(可选):结果的语言代码(默认值:"en")
用法示例:
const result = await client.callTool({
name: "suggest_keywords_by_competition",
arguments: {
appId: "com.spotify.music",
platform: "android",
num: 20
}
});
响应:
{
"appId": "com.spotify.music",
"platform": "android",
"strategy": "competition",
"description": "Keywords commonly used by apps that target the same keywords as the target app",
"suggestions": [
"music",
"streaming",
"songs",
"playlist",
"audio"
],
"count": 5
}
15. suggest_keywords_by_apps
根据任意应用列表获取关键词建议。
参数:
apps:要分析的应用 ID 数组(Android 应用为包名,iOS 应用为数字 ID 或 bundle ID)platform:应用的平台(ios或android)num(可选):要返回的关键词建议数量(默认值:30)country(可选):两位国家代码(默认值:"us")lang(可选):结果的语言代码(默认值:"en")
用法示例:
const result = await client.callTool({
name: "suggest_keywords_by_apps",
arguments: {
apps: ["com.spotify.music", "com.pandora.android", "deezer.android.app"],
platform: "android",
num: 20
}
});
响应:
{
"apps": ["com.spotify.music", "com.pandora.android", "deezer.android.app"],
"platform": "android",
"strategy": "arbitrary_apps",
"description": "Keywords commonly used by the specified list of apps",
"suggestions": [
"music",
"streaming",
"player",
"audio",
"songs"
],
"count": 5
}
16. suggest_keywords_by_seeds
根据种子关键词获取关键词建议,方法是查找定位这些关键词的应用。
参数:
keywords:用于查找相关关键词的种子关键词数组platform:要分析的平台(ios或android)num(可选):要返回的关键词建议数量(默认值:30)country(可选):两位国家代码(默认值:"us")lang(可选):结果的语言代码(默认值:"en")
用法示例:
const result = await client.callTool({
name: "suggest_keywords_by_seeds",
arguments: {
keywords: ["music streaming", "playlist", "podcasts"],
platform: "android",
num: 20
}
});
响应:
{
"keywords": ["music streaming", "playlist", "podcasts"],
"platform": "android",
"strategy": "seed_keywords",
"description": "Keywords commonly used by apps that target the provided seed keywords",
"suggestions": [
"music",
"audio",
"player",
"streaming",
"podcast"
],
"count": 5
}
17. suggest_keywords_by_search
根据种子关键词的搜索补全结果获取关键词建议。此策略通常在 iOS 上比 Android 上效果更好。
参数:
keywords:用于获取搜索补全建议的种子关键词数组platform:要分析的平台(ios或android)num(可选):要返回的关键词建议数量(默认值:30)country(可选):两位国家代码(默认值:"us")lang(可选):结果的语言代码(默认值:"en")
用法示例:
const result = await client.callTool({
name: "suggest_keywords_by_search",
arguments: {
keywords: ["music streaming", "playlist", "podcasts"],
platform: "ios",
num: 20
}
});
响应:
{
"keywords": ["music streaming", "playlist", "podcasts"],
"platform": "ios",
"strategy": "search_hints",
"description": "Keywords based on App Store search completion results and apps targeting those keywords (works best for iOS)",
"suggestions": [
"music",
"streaming",
"music player",
"free music",
"podcast player"
],
"count": 5
}
连接 MCP 客户端
你可以使用任何 MCP 客户端连接此服务。以下是使用 MCP TypeScript SDK 的示例:
import { Client } from "@modelcontextprotocol/sdk/dist/esm/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/dist/esm/client/stdio.js";
const transport = new StdioClientTransport({
command: "node",
args: ["server.js"]
});
const client = new Client(
{
name: "app-store-client",
version: "1.0.0"
},
{
capabilities: {
tools: {}
}
}
);
await client.connect(transport);
// Call a tool
const result = await client.callTool({
name: "search_app",
arguments: {
term: "spotify",
platform: "android",
num: 5
}
});
console.log(JSON.parse(result.content[0].text));
性能注意事项
- 服务使用记忆化缓存 API 响应 10 分钟,以减少外部 API 调用
- 对于大量评论或广泛的关键词分析,预计响应时间会更长
- 服务包含速率限制保护,以避免触发 API 限制
依赖项
此服务使用以下库:
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。