LABSCO SUMMARY
Split by surface, so you pay context only for what you load.
Bundling nine search APIs into one server would put every parameter set in front of the model on every turn; splitting them into nine scripts means a config that lists three of them costs a third of the definitions. The trade is setup: each one is a separate stdio entry with an absolute path, so wiring all nine is nine blocks of JSON. The YouTube transcript server is the odd one out — it does not go through SerpAPI at all, which is why it takes a proxy and a cookies path for videos that need them.
What it is
A collection of single-purpose MCP servers rather than one big one. Each search surface lives in its own script and gets its own entry in your client config, so a client that only needs Google News never sees the maps or finance surface. Every result can come back as raw JSON or as markdown-formatted text.
What you get
- Google web search with the parameters you would normally reach for — result count, pagination offset,
location, country and language codes, device type, safe search, recency filter, exact-phrase terms, and domain include/exclude lists —serpapi_google_search.py - Google News scoped by publication, topic, story or section token, sorted by relevance or by date —
serpapi_google_news.py - Google Scholar with year range, language restriction, cited-by and all-versions lookups, and a review-articles-only switch —
serpapi_google_scholar.py - Google Trends by geography and time range, with the data type selectable (timeseries, geo map) and a property filter for web, news or images —
serpapi_google_trend.py - Google Finance for a stock, index, fund, currency or future, with the graph window selectable from one day out to max —
serpapi_google_finance.py - Google Maps as either a search or a single place lookup, addressable by place ID or by GPS coordinates with a zoom level —
serpapi_google_maps.py - Google Images filtered by aspect ratio, size, colour, image type and licence scope —
serpapi_google_images.py - YouTube search by query with country, language and filter parameters, and a separate transcript server that takes a video URL and returns the transcript with optional timestamps, a language choice, and a cookies file for age-restricted videos —
serpapi_youtube_search.py,youtube_transcript.py - A consistent output switch on every surface:
raw_jsonfor the complete API response,readable_jsonfor markdown you can drop straight into an answer
Requirements
A SerpAPI key, placed in a .env file at the project root as SERPAPI_API_KEY — the same key serves every server. Python 3.8 or higher. There is no package install: clone the repository, create a virtual environment, pip install -r requirements.txt, and register each server you want in your client config as a stdio entry pointing python at the script, with PYTHONPATH set to your site-packages. The project identifies itself as serpapi-mcp-server (version 0.1.0).
Setup effort
Build from source — git clone https://github.com/URDJMK/serpapi-mcp-server.git
USE CASES
Researching a topic with sources you can cite
Run a web search restricted to the domains you trust, ask for markdown-formatted output, and read the snippets with their source URLs instead of a raw JSON dump.
Tracking a story across publications
Search Google News for the topic, then re-query using the story or publication token from the first response to pull full coverage from one outlet or one thread.
Doing a literature scan with a date cut-off
Query Scholar with a start and end year, sort by date rather than relevance, and follow the cited-by ID to find what came after a key paper.
Summarising a video without watching it
Pull the transcript by URL with timestamps on, then work from the text — supplying a cookies file when the video is age-restricted.
BEFORE YOU INSTALL
What to know first
Requires
- Python 3.8 or later
- SERPAPI_API_KEY in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/URDJMK/serpapi-mcp-server.git
cd serpapi-mcp-server
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .envEdit .env and set SERPAPI_API_KEY to your SerpAPI key
MCP Clients
Claude Desktop
{
"mcpServers": {
"serpapi-google-search": {
"type": "stdio",
"command": "<YOUR_PATH_TO_PYTHON>",
"args": [
"<YOUR_PATH_TO_SERPAPI_MCP_SERVER>/src/serpapi_google_search.py"
],
"env": {
"PYTHONPATH": "<YOUR_PATH_TO_SITE_PACKAGES>"
}
}
}
}<YOUR_PATH_TO_PYTHON> is the Python inside the .venv you created (serpapi-mcp-server/.venv/bin/python; .venv\Scripts\python.exe on Windows), and <YOUR_PATH_TO_SERPAPI_MCP_SERVER> is the full path of your clone, and <YOUR_PATH_TO_SITE_PACKAGES> is that .venv's site-packages folder. The other eight servers (news, scholar, trends, finance, maps, images, YouTube search, YouTube transcript) are added the same way, one entry per script in src/.
The configuration on this page does not set SERPAPI_API_KEY; the project's instructions put it in a .env file. To supply SERPAPI_API_KEY without depending on where the server looks for that file, use the block's "env" section.