unified_searchLABSCO 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 thesourcesandnum_resultssearch_google_scholar— academic papers filtered byauthorand ayear_start/year_endrangesearch_google_web— web search withlanguageandsafe_searchsettingssearch_youtube— video search filtered byvideo_durationandupload_date, ordered by criteria such as view countget_author_info— an author's profile from Google Scholarclear_cache— drop cached results for one source or all of themget_api_usage_stats— current usage against your API quotas- Health and metrics exposed as resources at
health://statusandmetrics://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
USE CASES
Researching a topic from several angles at once
Fan one query across papers, the web and video, and read the three result sets together.
Finding papers by a specific author and period
Search Scholar filtered by author and year range, then pull the author's profile.
Staying inside a daily quota
Check remaining API usage before a long session and clear stale cache entries when results look out of date.
Finding a tutorial of the right length
Search video filtered by duration and upload date, ordered by view count.
7 tools
Listed in project docs. Your client may show a different list.
search_google_scholarsearch_google_websearch_youtubeget_author_infoclear_cacheget_api_usage_statsBEFORE YOU INSTALL
What to know first
Tools you get
7 tools named in the project's documentation.
Requires
- Python 3.11+
- GOOGLE_API_KEY in your environment
- YOUTUBE_API_KEY in your environment
- GOOGLE_CUSTOM_SEARCH_ENGINE_ID in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
git clone https://github.com/JDeun/unified-search-mcp-server.git
cd unified-search-mcp-server
python -m venv venv
source venv/bin/activate
pip install -r requirements.txtMCP Clients
Claude Desktop
{
"mcpServers": {
"unified-search": {
"command": "python",
"args": [
"<YOUR_PATH_TO_UNIFIED_SEARCH_MCP_SERVER>/unified_search_server.py"
],
"env": {
"GOOGLE_API_KEY": "<YOUR_GOOGLE_API_KEY>",
"GOOGLE_CUSTOM_SEARCH_ENGINE_ID": "<YOUR_GOOGLE_CUSTOM_SEARCH_ENGINE_ID>",
"YOUTUBE_API_KEY": "<YOUR_YOUTUBE_API_KEY>"
}
}
}
}Use the virtual environment's Python as command — <YOUR_PATH_TO_UNIFIED_SEARCH_MCP_SERVER>/venv/bin/python (on Windows, venv\Scripts\python.exe) — so the client finds the packages installed above.