A TypeScript-based MCP server that provides web search and webpage scraping capabilities using the Serper API. This server integrates with Claude Desktop to enable powerful web search and content extraction features.
-
google_search- Perform web searches via Serper API- Rich search results including organic results, knowledge graph, "people also ask", and related searches
- Supports region and language targeting
- Optional parameters for location, pagination, time filters, and autocorrection
- Supports advanced search operators:
site: Limit results to specific domainfiletype: Limit to specific file types (e.g., 'pdf', 'doc')inurl: Search for pages with word in URLintitle: Search for pages with word in titlerelated: Find similar websitescache: View Google's cached version of a specific URLbefore: Date before in YYYY-MM-DD formatafter: Date after in YYYY-MM-DD formatexact: Exact phrase matchexclude: Terms to exclude from search resultsor: Alternative terms (OR operator)
-
scrape- Extract content from web pages- Get plain text and optional markdown content
- Includes JSON-LD and head metadata
- Preserves document structure
- Node.js >= 18
- Serper API key (set as
SERPER_API_KEYenvironment variable)
Install dependencies:
npm installBuild the server:
npm run buildFor development with auto-rebuild:
npm run watchRun tests:
npm test # Run all tests
npm run test:watch # Run tests in watch mode
npm run test:coverage # Run tests with coverage
npm run test:integration # Run integration testsCreate a .env file in the root directory:
SERPER_API_KEY=your_api_key_here
Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:
npm run inspectorThe Inspector will provide a URL to access debugging tools in your browser.
To install Serper Search and Scrape for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @marcopesani/mcp-server-serper --client claudeAdd the server config at:
- MacOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"serper-search": {
"command": "npx",
"args": ["-y", "serper-search-scrape-mcp-server"],
"env": {
"SERPER_API_KEY": "your_api_key_here"
}
}
}
}- Open the Cline extension settings
- Open "MCP Servers" tab
- Click on "Configure MCP Servers"
- Add the server config:
{
"mcpServers": {
"github.com/marcopesani/mcp-server-serper": {
"command": "npx",
"args": ["-y", "serper-search-scrape-mcp-server"],
"env": {
"SERPER_API_KEY": "your_api_key_here"
},
"disabled": false,
"autoApprove": ["google_search", "scrape"]
}
}
}Additional Cline configuration options:
disabled: Set tofalseto enable the serverautoApprove: List of tools that don't require explicit approval for each use
- Open the Cursor settings
- Open "Features" settings
- In the "MCP Servers" section, click on "Add new MCP Server"
- Choose a name, and select "command" as "Type"
- In the "Command" field, enter the following:
env SERPER_API_KEY=your_api_key_here npx -y serper-search-scrape-mcp-server
You can also run the server using Docker. First, build the image:
docker build -t mcp-server-serper .Then run the container with your Serper API key:
docker run -e SERPER_API_KEY=your_api_key_here mcp-server-serperAlternatively, if you have your environment variables in a .env file:
docker run --env-file .env mcp-server-serperFor development, you might want to mount your source code as a volume:
docker run -v $(pwd):/app --env-file .env mcp-server-serperNote: Make sure to replace your_api_key_here with your actual Serper API key.