MCP Server

web-data-toolkit

io.github.leekung125/web-data-toolkit

What this MCP does

Retrieves YouTube transcripts, Google Trends data, and App Store and Google Play reviews.

app_store_reviews
App Store customer reviews for an iOS app, by country and sort order.
Rating, title, text, author, app version and the review date for any iOS App Store app, plus the app's own metadata row (name, seller, price, average rating, rating count).
Input schema
{'type': 'object', 'required': ['app'], 'properties': {'app': {'type': 'string', 'description': 'App Store URL or numeric app id such as 389801252.'}, 'max': {'type': 'integer', 'description': 'Maximum reviews per app, 1-500. Default 100.'}, 'raw': {'type': 'boolean', 'description': 'Return every field as JSON instead of a compact summary. Default false.'}, 'sort': {'type': 'string', 'description': 'mostRecent (default) or mostHelpful.'}, 'country': {'type': 'string', 'description': 'Two-letter country code. Default us.'}, 'maxRating': {'type': 'integer', 'description': '1-5. Keep only reviews at or below this rating.'}, 'minRating': {'type': 'integer', 'description': '1-5. Keep only reviews at or above this rating.'}}}
google_play_reviews
Google Play reviews for an Android app, by country and language.
Rating, text, author, thumbs-up count, app version and the developer's reply for any Google Play app.
Input schema
{'type': 'object', 'required': ['app'], 'properties': {'app': {'type': 'string', 'description': 'Google Play URL or package name such as com.whatsapp.'}, 'max': {'type': 'integer', 'description': 'Maximum reviews per app. Default 100.'}, 'raw': {'type': 'boolean', 'description': 'Return every field as JSON instead of a compact summary. Default false.'}, 'lang': {'type': 'string', 'description': 'Language code. Default en.'}, 'rating': {'type': 'integer', 'description': '1-5 to keep only that star rating.'}, 'country': {'type': 'string', 'description': 'Two-letter country code. Default us.'}}}
google_trends
Google Trends interest over time, interest by region and related queries.
For up to five keywords: relative search interest over a timeframe, interest broken down by region, and the top and rising related queries. No browser, straight from the Trends endpoints.
Input schema
{'type': 'object', 'required': ['keyword'], 'properties': {'geo': {'type': 'string', 'description': 'Country or region code such as US or GB. Empty means worldwide.'}, 'raw': {'type': 'boolean', 'description': 'Return every field as JSON instead of a compact summary. Default false.'}, 'keyword': {'type': 'string', 'description': 'Search term. Comma-separate up to 5 to compare.'}, 'related': {'type': 'boolean', 'description': 'Include top and rising related queries. Default true.'}, 'byRegion': {'type': 'boolean', 'description': 'Include the interest-by-region breakdown. Default true.'}, 'timeframe': {'type': 'string', 'description': 'Any Trends range, e.g. now 7-d, today 3-m, today 5-y. Default today 12-m.'}}}
youtube_channel_transcripts
Search YouTube, or list a channel or playlist, and return every video with its transcript.
Enumerates the newest videos of a channel, @handle or playlist and returns each video's metadata and transcript in a single call. Pass "search: your query" instead of a channel to go straight from a question to transcripts without knowing which creator to ask - the top results come back with full transcripts. Useful for building a corpus on a topic or from one creator.
Input schema
{'type': 'object', 'required': ['source'], 'properties': {'max': {'type': 'integer', 'description': 'How many of the newest videos to fetch. Default 25, max 500.'}, 'raw': {'type': 'boolean', 'description': 'Return every field as JSON instead of a compact summary. Default false.'}, 'lang': {'type': 'string', 'description': 'Preferred caption language. Default en.'}, 'source': {'type': 'string', 'description': '@handle, channel URL or id, a playlist URL, or "search: your query" to search YouTube.'}}}
youtube_transcript
Get the full transcript of one or more YouTube videos as clean text.
Returns the transcript text for each video plus its language, whether the captions were auto-generated, word count, title and channel. Comma-separate up to 50 video URLs or ids. Videos with no captions come back with a status instead of text.
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'raw': {'type': 'boolean', 'description': 'Return every field as JSON instead of a compact summary. Default false.'}, 'url': {'type': 'string', 'description': 'YouTube URL or 11-character video id. Comma-separate up to 50.'}, 'lang': {'type': 'string', 'description': 'Preferred language codes in order, comma separated. Default en.'}, 'segments': {'type': 'boolean', 'description': 'Include timestamped segments as well as full text.'}, 'translateTo': {'type': 'string', 'description': 'Translate the transcript into this language code.'}}}
Changed
google_play_reviews
Sept. 23, 2026, 2:43 a.m.
Added
app_store_reviews
Sept. 23, 2026, 2:43 a.m.
Changed
google_trends
Sept. 23, 2026, 2:43 a.m.
Changed
youtube_channel_transcripts
Sept. 23, 2026, 2:43 a.m.
Changed
youtube_transcript
Sept. 23, 2026, 2:43 a.m.
Added
google_play_reviews
Sept. 17, 2026, 12:43 p.m.
Added
google_trends
Sept. 17, 2026, 12:43 p.m.
Added
youtube_channel_transcripts
Sept. 17, 2026, 12:43 p.m.
Added
youtube_transcript
Sept. 17, 2026, 12:43 p.m.