Labsco
MCP SERVER

SerpApi

by URDJMK

Nine small Python servers over SerpAPI — Google search, news, scholar, trends, finance, maps and images, plus YouTube search and transcripts — each registered separately so you only load what you need.

Web Search Engines
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_json` for the complete API response, `readable_json` for 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` (0.1.0 in pyproject).

Setup effort

Build from source — clone the repository and build it, then point your client at the binary