Skip to main content
Glama
JiantaoFu

App Market Intelligence MCP

google-play-list

Retrieve apps from Google Play collections to analyze market trends, research competitors, and understand user preferences across categories.

Instructions

Get apps from Google Play collections. Returns a list of apps with:

  • url: Play Store URL

  • appId: Package name (e.g., 'com.company.app')

  • title: App name

  • summary: Short description

  • developer: Developer name

  • developerId: Developer ID

  • icon: Icon URL

  • score: Rating (0-5)

  • scoreText: Rating display text

  • priceText: Price display text

  • free: Boolean indicating if app is free

When fullDetail is true, includes all fields from app details endpoint.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
collectionNoCollection to fetch apps from (default: TOP_FREE). Available collections: - TOP_FREE: Top free applications - TOP_PAID: Top paid applications - GROSSING: Top grossing applicationsTOP_FREE
categoryNoCategory to filter by. Available categories: Main Categories: - APPLICATION: All applications - ANDROID_WEAR: Wear OS apps - ART_AND_DESIGN: Art & Design - AUTO_AND_VEHICLES: Auto & Vehicles - BEAUTY: Beauty - BOOKS_AND_REFERENCE: Books & Reference - BUSINESS: Business - COMICS: Comics - COMMUNICATION: Communication - DATING: Dating - EDUCATION: Education - ENTERTAINMENT: Entertainment - EVENTS: Events - FINANCE: Finance - FOOD_AND_DRINK: Food & Drink - HEALTH_AND_FITNESS: Health & Fitness - HOUSE_AND_HOME: House & Home - LIFESTYLE: Lifestyle - MAPS_AND_NAVIGATION: Maps & Navigation - MEDICAL: Medical - MUSIC_AND_AUDIO: Music & Audio - NEWS_AND_MAGAZINES: News & Magazines - PARENTING: Parenting - PERSONALIZATION: Personalization - PHOTOGRAPHY: Photography - PRODUCTIVITY: Productivity - SHOPPING: Shopping - SOCIAL: Social - SPORTS: Sports - TOOLS: Tools - TRAVEL_AND_LOCAL: Travel & Local - VIDEO_PLAYERS: Video Players - WATCH_FACE: Watch Faces - WEATHER: Weather Game Categories: - GAME: All Games - GAME_ACTION: Action Games - GAME_ADVENTURE: Adventure Games - GAME_ARCADE: Arcade Games - GAME_BOARD: Board Games - GAME_CARD: Card Games - GAME_CASINO: Casino Games - GAME_CASUAL: Casual Games - GAME_EDUCATIONAL: Educational Games - GAME_MUSIC: Music Games - GAME_PUZZLE: Puzzle Games - GAME_RACING: Racing Games - GAME_ROLE_PLAYING: Role Playing Games - GAME_SIMULATION: Simulation Games - GAME_SPORTS: Sports Games - GAME_STRATEGY: Strategy Games - GAME_TRIVIA: Trivia Games - GAME_WORD: Word Games - FAMILY: Family Games
ageNoAge range filter (only for FAMILY category). Options: FIVE_UNDER, SIX_EIGHT, NINE_UP
numNoNumber of apps to retrieve (default: 500)
langNoLanguage code for result text (default: en)en
countryNoCountry code to get results from (default: us)us
fullDetailNoInclude full app details in results (default: false)

Implementation Reference

  • The handler function that implements the core logic of the 'google-play-list' tool. It destructures the input parameters and calls gplay.list from the google-play-scraper library to fetch the list of apps from the specified Google Play collection, category, etc., then returns the results as a JSON string in the MCP response format.
      async ({ collection, category, age, num, lang, country, fullDetail }) => {
        const results = await gplay.list({
          collection,
          category,
          age,
          num,
          lang,
          country,
          fullDetail
        });
        return { content: [{ type: "text", text: JSON.stringify(results) }] };
      }
    );
  • Zod schema defining the input parameters and validation for the 'google-play-list' tool, including collection, category, age, num, lang, country, and fullDetail with defaults and detailed descriptions.
    {
      collection: z.enum(['TOP_FREE', 'TOP_PAID', 'GROSSING', 'TOP_FREE_GAMES', 'TOP_PAID_GAMES', 'TOP_GROSSING_GAMES'])
        .default('TOP_FREE')
        .describe(
          "Collection to fetch apps from (default: TOP_FREE). Available collections:\n" +
          "- TOP_FREE: Top free applications\n" +
          "- TOP_PAID: Top paid applications\n" +
          "- GROSSING: Top grossing applications"
        ),
      category: z.enum([
        'APPLICATION',
        'ANDROID_WEAR',
        'ART_AND_DESIGN',
        'AUTO_AND_VEHICLES',
        'BEAUTY',
        'BOOKS_AND_REFERENCE',
        'BUSINESS',
        'COMICS',
        'COMMUNICATION',
        'DATING',
        'EDUCATION',
        'ENTERTAINMENT',
        'EVENTS',
        'FINANCE',
        'FOOD_AND_DRINK',
        'HEALTH_AND_FITNESS',
        'HOUSE_AND_HOME',
        'LIBRARIES_AND_DEMO',
        'LIFESTYLE',
        'MAPS_AND_NAVIGATION',
        'MEDICAL',
        'MUSIC_AND_AUDIO',
        'NEWS_AND_MAGAZINES',
        'PARENTING',
        'PERSONALIZATION',
        'PHOTOGRAPHY',
        'PRODUCTIVITY',
        'SHOPPING',
        'SOCIAL',
        'SPORTS',
        'TOOLS',
        'TRAVEL_AND_LOCAL',
        'VIDEO_PLAYERS',
        'WATCH_FACE',
        'WEATHER',
        'GAME',
        'GAME_ACTION',
        'GAME_ADVENTURE',
        'GAME_ARCADE',
        'GAME_BOARD',
        'GAME_CARD',
        'GAME_CASINO',
        'GAME_CASUAL',
        'GAME_EDUCATIONAL',
        'GAME_MUSIC',
        'GAME_PUZZLE',
        'GAME_RACING',
        'GAME_ROLE_PLAYING',
        'GAME_SIMULATION',
        'GAME_SPORTS',
        'GAME_STRATEGY',
        'GAME_TRIVIA',
        'GAME_WORD',
        'FAMILY'
      ]).optional().describe(
        "Category to filter by. Available categories:\n" +
        "Main Categories:\n" +
        "- APPLICATION: All applications\n" +
        "- ANDROID_WEAR: Wear OS apps\n" +
        "- ART_AND_DESIGN: Art & Design\n" +
        "- AUTO_AND_VEHICLES: Auto & Vehicles\n" +
        "- BEAUTY: Beauty\n" +
        "- BOOKS_AND_REFERENCE: Books & Reference\n" +
        "- BUSINESS: Business\n" +
        "- COMICS: Comics\n" +
        "- COMMUNICATION: Communication\n" +
        "- DATING: Dating\n" +
        "- EDUCATION: Education\n" +
        "- ENTERTAINMENT: Entertainment\n" +
        "- EVENTS: Events\n" +
        "- FINANCE: Finance\n" +
        "- FOOD_AND_DRINK: Food & Drink\n" +
        "- HEALTH_AND_FITNESS: Health & Fitness\n" +
        "- HOUSE_AND_HOME: House & Home\n" +
        "- LIFESTYLE: Lifestyle\n" +
        "- MAPS_AND_NAVIGATION: Maps & Navigation\n" +
        "- MEDICAL: Medical\n" +
        "- MUSIC_AND_AUDIO: Music & Audio\n" +
        "- NEWS_AND_MAGAZINES: News & Magazines\n" +
        "- PARENTING: Parenting\n" +
        "- PERSONALIZATION: Personalization\n" +
        "- PHOTOGRAPHY: Photography\n" +
        "- PRODUCTIVITY: Productivity\n" +
        "- SHOPPING: Shopping\n" +
        "- SOCIAL: Social\n" +
        "- SPORTS: Sports\n" +
        "- TOOLS: Tools\n" +
        "- TRAVEL_AND_LOCAL: Travel & Local\n" +
        "- VIDEO_PLAYERS: Video Players\n" +
        "- WATCH_FACE: Watch Faces\n" +
        "- WEATHER: Weather\n\n" +
        "Game Categories:\n" +
        "- GAME: All Games\n" +
        "- GAME_ACTION: Action Games\n" +
        "- GAME_ADVENTURE: Adventure Games\n" +
        "- GAME_ARCADE: Arcade Games\n" +
        "- GAME_BOARD: Board Games\n" +
        "- GAME_CARD: Card Games\n" +
        "- GAME_CASINO: Casino Games\n" +
        "- GAME_CASUAL: Casual Games\n" +
        "- GAME_EDUCATIONAL: Educational Games\n" +
        "- GAME_MUSIC: Music Games\n" +
        "- GAME_PUZZLE: Puzzle Games\n" +
        "- GAME_RACING: Racing Games\n" +
        "- GAME_ROLE_PLAYING: Role Playing Games\n" +
        "- GAME_SIMULATION: Simulation Games\n" +
        "- GAME_SPORTS: Sports Games\n" +
        "- GAME_STRATEGY: Strategy Games\n" +
        "- GAME_TRIVIA: Trivia Games\n" +
        "- GAME_WORD: Word Games\n" +
        "- FAMILY: Family Games"
      ),
      age: z.enum(['FIVE_UNDER', 'SIX_EIGHT', 'NINE_UP'])
        .optional()
        .describe("Age range filter (only for FAMILY category). Options: FIVE_UNDER, SIX_EIGHT, NINE_UP"),
      num: z.number()
        .default(500)
        .describe("Number of apps to retrieve (default: 500)"),
      lang: z.string()
        .default("en")
        .describe("Language code for result text (default: en)"),
      country: z.string()
        .default("us")
        .describe("Country code to get results from (default: us)"),
      fullDetail: z.boolean()
        .default(false)
        .describe("Include full app details in results (default: false)")
    }, 
  • src/server.js:661-825 (registration)
    The registration of the 'google-play-list' tool using server.tool(), including the tool name, description string, Zod schema, and handler function.
    server.tool("google-play-list", 
      "Get apps from Google Play collections. Returns a list of apps with:\n" +
      "- url: Play Store URL\n" +
      "- appId: Package name (e.g., 'com.company.app')\n" +
      "- title: App name\n" +
      "- summary: Short description\n" +
      "- developer: Developer name\n" +
      "- developerId: Developer ID\n" +
      "- icon: Icon URL\n" +
      "- score: Rating (0-5)\n" +
      "- scoreText: Rating display text\n" +
      "- priceText: Price display text\n" +
      "- free: Boolean indicating if app is free\n\n" +
      "When fullDetail is true, includes all fields from app details endpoint.",
      {
        collection: z.enum(['TOP_FREE', 'TOP_PAID', 'GROSSING', 'TOP_FREE_GAMES', 'TOP_PAID_GAMES', 'TOP_GROSSING_GAMES'])
          .default('TOP_FREE')
          .describe(
            "Collection to fetch apps from (default: TOP_FREE). Available collections:\n" +
            "- TOP_FREE: Top free applications\n" +
            "- TOP_PAID: Top paid applications\n" +
            "- GROSSING: Top grossing applications"
          ),
        category: z.enum([
          'APPLICATION',
          'ANDROID_WEAR',
          'ART_AND_DESIGN',
          'AUTO_AND_VEHICLES',
          'BEAUTY',
          'BOOKS_AND_REFERENCE',
          'BUSINESS',
          'COMICS',
          'COMMUNICATION',
          'DATING',
          'EDUCATION',
          'ENTERTAINMENT',
          'EVENTS',
          'FINANCE',
          'FOOD_AND_DRINK',
          'HEALTH_AND_FITNESS',
          'HOUSE_AND_HOME',
          'LIBRARIES_AND_DEMO',
          'LIFESTYLE',
          'MAPS_AND_NAVIGATION',
          'MEDICAL',
          'MUSIC_AND_AUDIO',
          'NEWS_AND_MAGAZINES',
          'PARENTING',
          'PERSONALIZATION',
          'PHOTOGRAPHY',
          'PRODUCTIVITY',
          'SHOPPING',
          'SOCIAL',
          'SPORTS',
          'TOOLS',
          'TRAVEL_AND_LOCAL',
          'VIDEO_PLAYERS',
          'WATCH_FACE',
          'WEATHER',
          'GAME',
          'GAME_ACTION',
          'GAME_ADVENTURE',
          'GAME_ARCADE',
          'GAME_BOARD',
          'GAME_CARD',
          'GAME_CASINO',
          'GAME_CASUAL',
          'GAME_EDUCATIONAL',
          'GAME_MUSIC',
          'GAME_PUZZLE',
          'GAME_RACING',
          'GAME_ROLE_PLAYING',
          'GAME_SIMULATION',
          'GAME_SPORTS',
          'GAME_STRATEGY',
          'GAME_TRIVIA',
          'GAME_WORD',
          'FAMILY'
        ]).optional().describe(
          "Category to filter by. Available categories:\n" +
          "Main Categories:\n" +
          "- APPLICATION: All applications\n" +
          "- ANDROID_WEAR: Wear OS apps\n" +
          "- ART_AND_DESIGN: Art & Design\n" +
          "- AUTO_AND_VEHICLES: Auto & Vehicles\n" +
          "- BEAUTY: Beauty\n" +
          "- BOOKS_AND_REFERENCE: Books & Reference\n" +
          "- BUSINESS: Business\n" +
          "- COMICS: Comics\n" +
          "- COMMUNICATION: Communication\n" +
          "- DATING: Dating\n" +
          "- EDUCATION: Education\n" +
          "- ENTERTAINMENT: Entertainment\n" +
          "- EVENTS: Events\n" +
          "- FINANCE: Finance\n" +
          "- FOOD_AND_DRINK: Food & Drink\n" +
          "- HEALTH_AND_FITNESS: Health & Fitness\n" +
          "- HOUSE_AND_HOME: House & Home\n" +
          "- LIFESTYLE: Lifestyle\n" +
          "- MAPS_AND_NAVIGATION: Maps & Navigation\n" +
          "- MEDICAL: Medical\n" +
          "- MUSIC_AND_AUDIO: Music & Audio\n" +
          "- NEWS_AND_MAGAZINES: News & Magazines\n" +
          "- PARENTING: Parenting\n" +
          "- PERSONALIZATION: Personalization\n" +
          "- PHOTOGRAPHY: Photography\n" +
          "- PRODUCTIVITY: Productivity\n" +
          "- SHOPPING: Shopping\n" +
          "- SOCIAL: Social\n" +
          "- SPORTS: Sports\n" +
          "- TOOLS: Tools\n" +
          "- TRAVEL_AND_LOCAL: Travel & Local\n" +
          "- VIDEO_PLAYERS: Video Players\n" +
          "- WATCH_FACE: Watch Faces\n" +
          "- WEATHER: Weather\n\n" +
          "Game Categories:\n" +
          "- GAME: All Games\n" +
          "- GAME_ACTION: Action Games\n" +
          "- GAME_ADVENTURE: Adventure Games\n" +
          "- GAME_ARCADE: Arcade Games\n" +
          "- GAME_BOARD: Board Games\n" +
          "- GAME_CARD: Card Games\n" +
          "- GAME_CASINO: Casino Games\n" +
          "- GAME_CASUAL: Casual Games\n" +
          "- GAME_EDUCATIONAL: Educational Games\n" +
          "- GAME_MUSIC: Music Games\n" +
          "- GAME_PUZZLE: Puzzle Games\n" +
          "- GAME_RACING: Racing Games\n" +
          "- GAME_ROLE_PLAYING: Role Playing Games\n" +
          "- GAME_SIMULATION: Simulation Games\n" +
          "- GAME_SPORTS: Sports Games\n" +
          "- GAME_STRATEGY: Strategy Games\n" +
          "- GAME_TRIVIA: Trivia Games\n" +
          "- GAME_WORD: Word Games\n" +
          "- FAMILY: Family Games"
        ),
        age: z.enum(['FIVE_UNDER', 'SIX_EIGHT', 'NINE_UP'])
          .optional()
          .describe("Age range filter (only for FAMILY category). Options: FIVE_UNDER, SIX_EIGHT, NINE_UP"),
        num: z.number()
          .default(500)
          .describe("Number of apps to retrieve (default: 500)"),
        lang: z.string()
          .default("en")
          .describe("Language code for result text (default: en)"),
        country: z.string()
          .default("us")
          .describe("Country code to get results from (default: us)"),
        fullDetail: z.boolean()
          .default(false)
          .describe("Include full app details in results (default: false)")
      }, 
      async ({ collection, category, age, num, lang, country, fullDetail }) => {
        const results = await gplay.list({
          collection,
          category,
          age,
          num,
          lang,
          country,
          fullDetail
        });
        return { content: [{ type: "text", text: JSON.stringify(results) }] };
      }
    );
  • Import of the 'gplay' library used by the google-play-list handler to perform the actual Google Play app listing via gplay.list().
    import gplay from '@jeromyfu/google-play-scraper';

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JiantaoFu/AppInsightMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server