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