A Model Context Protocol (MCP) server implementation that integrates with SerpApi for comprehensive search engine results and data extraction.
- Multi-Engine Search: Google, Bing, Yahoo, DuckDuckGo, YouTube, eBay, and more
- Real-time Weather Data: Location-based weather with forecasts via search queries
- Stock Market Data: Company financials and market data through search integration
- Dynamic Result Processing: Automatically detects and formats different result types
- Raw JSON Support: Option to return full unprocessed API responses
- Structured Results: Clean, formatted output optimized for AI consumption
SerpApi MCP Server is available as a hosted service at mcp.serpapi.com. In order to connect to it, you need to provide an API key. You can find your API key on your SerpApi dashboard.
You can configure Claude Desktop to use the hosted server:
{
"mcpServers": {
"serpapi": {
"url": "https://mcp.serpapi.com/YOUR_SERPAPI_API_KEY/mcp"
}
}
}git clone https://github.com/serpapi/mcp-server.git
cd mcp-server
uv sync && uv run src/server.pyConfigure Claude Desktop:
{
"mcpServers": {
"serpapi": {
"url": "http://localhost:8000/YOUR_SERPAPI_API_KEY/mcp"
}
}
}Get your API key: serpapi.com/manage-api-key
Two methods are supported:
- Path-based:
/YOUR_API_KEY/mcp(recommended) - Header-based:
Authorization: Bearer YOUR_API_KEY
Examples:
# Path-based
curl "https://mcp.serpapi.com/your_key/mcp" -d '...'
# Header-based
curl "https://mcp.serpapi.com/mcp" -H "Authorization: Bearer your_key" -d '...'The MCP server has one main Search Tool that supports all SerpApi engines and result types. You can find all available parameters on the SerpApi API reference.
The parameters you can provide are specific for each API engine. Some sample parameters are provided below:
params.q(required): Search queryparams.engine: Search engine (default: "google_light")params.location: Geographic filterraw: Return raw JSON (default: false)- ...see other parameters on the SerpApi API reference
Examples:
{"name": "search", "arguments": {"params": {"q": "coffee shops", "location": "Austin, TX"}}}
{"name": "search", "arguments": {"params": {"q": "weather in London"}}}
{"name": "search", "arguments": {"params": {"q": "AAPL stock"}}}
{"name": "search", "arguments": {"params": {"q": "news"}, "raw": true}}Supported Engines: Google, Bing, Yahoo, DuckDuckGo, YouTube, eBay, and more.
Result Types: Answer boxes, organic results, news, images, shopping - automatically detected and formatted.
# Local development
uv sync && uv run src/server.py
# Docker
docker build -t serpapi-mcp . && docker run -p 8000:8000 serpapi-mcp
# Testing with MCP Inspector
npx @modelcontextprotocol/inspector
# Configure: URL mcp.serpapi.com/YOUR_KEY/mcp, Transport "Streamable HTTP transport""Missing API key": Include key in URL path /{YOUR_KEY}/mcp or header Bearer YOUR_KEY
"Invalid key": Verify at serpapi.com/dashboard
"Rate limit exceeded": Wait or upgrade your SerpApi plan
"No results": Try different query or engine
- Fork the repository
- Create your feature branch:
git checkout -b feature/amazing-feature - Install dependencies:
uv install - Make your changes
- Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
MIT License - see LICENSE file for details.