LabscoMCP early access ↗
JDeunMCP SERVER

Unified Search MCP Server

Search Google Scholar, Google web search and YouTube from one call, or each separately, with Redis caching and rate limiting in front.

by JDeun ↗Web Search EnginesCommunity

LABSCO SUMMARY

One query, three sources, and the quota tools to survive it.

The interesting tool is the usage stats call — free-tier Google quotas are small enough that a research session can exhaust them without warning, and being able to ask how much is left turns that from a mystery failure into a decision. The cache is the other half of the same answer.

What it is

A Python search server that fans one query out across three sources concurrently and returns them together, with each source also available on its own. Around the search sits production plumbing — encrypted API key storage, input validation, Redis-backed caching and rate limits, Prometheus metrics, retries with exponential backoff and circuit breakers on the external APIs.

What you get

  • unified_search — search across scholar, web and youtube at once, choosing the sources and num_results
  • search_google_scholar — academic papers filtered by author and a year_start/year_end range
  • search_google_web — web search with language and safe_search settings
  • search_youtube — video search filtered by video_duration and upload_date, ordered by criteria such as view count
  • get_author_info — an author's profile from Google Scholar
  • clear_cache — drop cached results for one source or all of them
  • get_api_usage_stats — current usage against your API quotas
  • Health and metrics exposed as resources at health://status and metrics://stats

Requirements

Two Google API keys: GOOGLE_API_KEY with a GOOGLE_CUSTOM_SEARCH_ENGINE_ID for web search, and YOUTUBE_API_KEY for video search — the same Cloud project can serve both. Google Scholar has no official API and is rate-limited in practice. Python 3.11 or higher, with pip install -r requirements.txt from a clone; the documented client entry runs python unified_search_server.py over stdio, and --transport streamable-http serves it over HTTP for a shared deployment. Redis is optional and only needed for distributed caching and rate limiting, set through MCP_REDIS_URL; MCP_ENCRYPTION_KEY and MCP_RATE_LIMIT_SECRET cover the security layer. Watch the free-tier limits: Google web search allows 100 queries per day and the YouTube API 10,000 units per day, roughly 100 searches.

Setup effort

Build from source — git clone https://github.com/JDeun/unified-search-mcp-server.git