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 domain -
filetype
: Limit to specific file types (e.g., 'pdf', 'doc') -
inurl
: Search for pages with word in URL -
intitle
: Search for pages with word in title -
related
: Find similar websites -
cache
: View Google's cached version of a specific URL -
before
: Date before in YYYY-MM-DD format -
after
: Date after in YYYY-MM-DD format -
exact
: Exact phrase match -
exclude
: Terms to exclude from search results -
or
: 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_KEY
environment variable)
Install dependencies:
npm install
Build the server:
npm run build
For development with auto-rebuild:
npm run watch
Run 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 tests
Create 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 inspector
The 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 claude
Add 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 tofalse
to enable the server -
autoApprove
: 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-serper
Alternatively, if you have your environment variables in a .env
file:
docker run --env-file .env mcp-server-serper
For development, you might want to mount your source code as a volume:
docker run -v $(pwd):/app --env-file .env mcp-server-serper
Note: Make sure to replace your_api_key_here
with your actual Serper API key.