Skip to main content
Glama
JiantaoFu

App Market Intelligence MCP

google-play-list

Retrieve detailed app listings from Google Play collections, including metadata like ratings, pricing, and developer info. Filter by category, language, and country for targeted market research and competitor analysis.

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
ageNoAge range filter (only for FAMILY category). Options: FIVE_UNDER, SIX_EIGHT, NINE_UP
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
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
countryNoCountry code to get results from (default: us)us
fullDetailNoInclude full app details in results (default: false)
langNoLanguage code for result text (default: en)en
numNoNumber of apps to retrieve (default: 500)

Implementation Reference

  • The core handler function that invokes gplay.list() with the provided parameters (collection, category, age, num, lang, country, fullDetail) to fetch the list of Google Play apps and returns the JSON-stringified results wrapped in the expected 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 validation schema defining the input parameters for the tool, including collection (enum), optional category (long enum list), age, num, lang, country, and fullDetail.
    { 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 MCP server.tool() registration call that defines and registers the 'google-play-list' tool, including its description string, Zod input schema, and inline async 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) }] }; } );

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