mcpField
A
App Store Scraper MCP Server

App Store Scraper MCP Server

ローカル
appreply.coブラウザ自動化786 日前に更新

App Store Scraper MCP Server について

App Store Scraper MCP Server は、Google Play ストアと Apple App Store のアプリを検索・分析するツールを LLM に提供します。ASO( App Store 検索最適化)向けで、開発元は AppReply.co です。

主な機能

  1. 01iOS と Android のアプリを検索
  2. 02アプリ詳細・価格・開発者情報の取得
  3. 03キーワードとユーザーレビューの分析
  4. 04類似アプリとバージョン履歴の取得

活用シーン

  1. 01ASO のための競合アプリ調査
  2. 02レビューを要約してユーザーの声を把握

MCP 対応

本プロジェクトは MCP サーバーであり、アプリ検索・詳細取得・レビュー分析のツールを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

App Store Scraper MCP Server

Google Play ストアと Apple App Store の両方からアプリを検索・分析するためのツールを提供する MCP(Model Context Protocol)サーバーです。

ASO(App Store 検索最適化)に最適です。

AppReply.co が開発しました。

インストール

# Clone the repository
git clone https://github.com/appreply-co/mcp-appstore.git
cd mcp-appstore

# Install dependencies
npm install

サーバーの実行

npm start

これにより、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 エントリを追加してください(お使いの OS でのファイルパスについては Claude のドキュメントを参照してください)。

利用可能なツール

サーバーでは以下のツールを利用できます。

1. search_app

アプリ名とプラットフォームを指定してアプリを検索します。

パラメーター:

  • term:検索するキーワード
  • platform:検索対象のプラットフォーム(ios または android)
  • num(任意):返す結果の数(デフォルト:10、最大:250)
  • country(任意):2 文字の国コード(デフォルト:"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(任意):2 文字の国コード(デフォルト:"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(任意):2 文字の国コード(デフォルト:"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(任意):2 文字の国コード(デフォルト:"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(任意):2 文字の国コード(デフォルト:"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(任意):2 文字の国コード(デフォルト:「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(任意):2 文字の国コード(デフォルト:「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:情報を取得する開発者の ID
  • platform:開発者のプラットフォーム(ios または android)
  • country(任意):2 文字の国コード(デフォルト:「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(任意):2 文字の国コード(デフォルト:「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(任意):ローカライズ用の 2 文字の国コード。デフォルトは '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(任意):2 文字の国コード(デフォルト:"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(任意):2 文字の国コード(デフォルト:"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(任意):2 文字の国コード(デフォルト:"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(任意):2 文字の国コード(デフォルト:"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(任意):2 文字の国コード(デフォルト:"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

シードキーワードの検索候補に基づいて、キーワード候補を取得します。この方法は、Android よりも iOS で効果を発揮することがよくあります。

パラメーター:

  • keywords:検索候補の取得に使用するシードキーワードの配列
  • platform:分析するプラットフォーム(ios または android)
  • num(任意):返すキーワード候補の数(デフォルト:30)
  • country(任意):2 文字の国コード(デフォルト:"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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。