mcp-websearch-server
v1.3.1
Published
MCP Server for web search (SearchAPI.io) and advanced web scraping
Maintainers
Readme
MCP WebSearch Server
MCP Server for web search and advanced web scraping. Uses SearchAPI.io for Google Search and AI Mode.
Quick Start
Option 1: Stdio (npx)
{
"mcpServers": {
"websearch": {
"command": "npx",
"args": ["-y", "mcp-websearch-server"],
"env": {
"SEARCHAPI_KEY": "your-api-key-here"
}
}
}
}Option 2: HTTP Server (Streamable HTTP)
Run as HTTP server:
MCP_TRANSPORT=http PORT=3000 npx mcp-websearch-serverThen configure MCP client with API key in URL or header:
Option A: API key in URL query parameter
{
"mcpServers": {
"websearch": {
"url": "http://localhost:3000/mcp?apikey=YOUR_KEY",
"transport": "streamable-http"
}
}
}Option B: API key in header
{
"mcpServers": {
"websearch": {
"url": "http://localhost:3000/mcp",
"transport": "streamable-http",
"headers": {
"X-API-Key": "YOUR_KEY"
}
}
}
}Option C: Server-side default key
MCP_TRANSPORT=http SEARCHAPI_KEY=default-key PORT=3000 npx mcp-websearch-serverThe server implements MCP Streamable HTTP transport (spec 2025-03-26) with:
- Session management with
Mcp-Session-Idheaders - SSE streaming for server-initiated messages
- Resumability support with
Last-Event-ID - Per-user API key support via query param or header
Get your API key at searchapi.io
Tools
| Tool | Description |
|------|-------------|
| web_search | Google Search with pagination, time filter, site filter |
| ai_search | Google AI Mode - get AI-generated answers with sources |
| web_scrape | Advanced scraper with multiple extract modes (text/markdown/structured) |
| get_links | Extract links from a webpage with optional filter |
| scrape_multiple | Scrape up to 5 URLs at once |
Parameters
web_search
query- Search querynum_results- Number of results (1-20, default 10)page- Page number for pagination (1-10)time_period- Filter: last_hour, last_day, last_week, last_month, last_yearsite- Limit to specific site (e.g., "github.com")
ai_search
query- Question or topicimage_url- Optional image URL for visual questionslocation- Location for local queries
web_scrape
url- URL to scrapeselector- CSS selector (optional)extract_mode- text, markdown, or structuredinclude_links- Include links in outputmax_length- Max content length (1000-50000)
get_links
url- URL to extract links fromfilter- Text filter for URLs/anchors
scrape_multiple
urls- Array of URLs (max 5)max_per_page- Max content per page (500-5000)
Deployment
PM2 (Production)
- Edit
ecosystem.config.jsand set yourSEARCHAPI_KEY - Run:
npm run pm2:start - Check logs:
npm run pm2:logs
Or manually:
MCP_TRANSPORT=http PORT=3000 SEARCHAPI_KEY=your-key pm2 start index.js --name mcp-websearchDocker
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
ENV MCP_TRANSPORT=http PORT=3000
EXPOSE 3000
CMD ["node", "index.js"]Roadmap
- [ ] Add Serper.dev provider support
- [ ] Add SerpAPI provider support
- [ ] Provider auto-fallback
License
MIT
