A Model Context Protocol (MCP) server that exposes the FetchSERP API for SEO, SERP analysis, web scraping, and keyword research.
This MCP server provides access to all FetchSERP API endpoints:
- Domain Analysis: Get backlinks, domain info (DNS, WHOIS, SSL, tech stack)
- Keyword Research: Search volume, suggestions, long-tail keyword generation
- SEO Analysis: Comprehensive webpage SEO analysis
- AI Analysis: AI-powered webpage analysis with custom prompts
- Moz Integration: Domain authority and Moz metrics
- Search Results: Get SERP results from Google, Bing, Yahoo, DuckDuckGo
- AI Overview: Google's AI overview with JavaScript rendering
- Enhanced Results: SERP with HTML or text content
- Ranking Check: Domain ranking for specific keywords
- Indexation Check: Verify if pages are indexed
- Basic Scraping: Scrape webpages without JavaScript
- JS Scraping: Execute custom JavaScript on pages
- Proxy Scraping: Scrape with country-specific proxies
- Domain Scraping: Scrape multiple pages from a domain
- Account Info: Check API credits and user information
No installation required! This MCP server runs directly from GitHub using npx.
Get your FetchSERP API token: Sign up at https://www.fetchserp.com to get your API token. New users get 250 free credits to get started!
This MCP server supports two transport modes:
npx mode (Option 1):
- âś… Zero installation required
- âś… Always gets latest version from GitHub
- âś… Perfect for individual users
- âś… Runs locally with Claude Desktop
HTTP mode (Option 2):
- âś… Remote deployment capability
- âś… Multiple clients can connect
- âś… Better for enterprise/team environments
- âś… Centralized server management
- âś… Single API key authentication (FetchSERP token)
- âś… Scalable architecture
Option 1: Using npx (Local/Remote GitHub) Add this server to your MCP client configuration. For example, in Claude Desktop using github registry :
{ "mcpServers": { "fetchserp": { "command": "npx", "args": [ "github:fetchSERP/fetchserp-mcp-server-node" ], "env": { "FETCHSERP_API_TOKEN": "your_fetchserp_api_token_here" } } } }
or using npm registry
{ "mcpServers": { "fetchserp": { "command": "npx", "args": ["fetchserp-mcp-server"], "env": { "FETCHSERP_API_TOKEN": "your_fetchserp_api_token_here" } } } }
Option 2: Claude API with MCP Server For programmatic usage with Claude's API and your deployed MCP server:
const claudeRequest = { model: "claude-sonnet-4-20250514", max_tokens: 1024, messages: [ { role: "user", content: question } ], // MCP Server Configuration mcp_servers: [ { type: "url", url: "https://mcp.fetchserp.com/sse", name: "fetchserp", authorization_token: FETCHSERP_API_TOKEN, tool_configuration: { enabled: true } } ] }; const response = await httpRequest('https://api.anthropic.com/v1/messages', { method: 'POST', headers: { 'x-api-key': CLAUDE_API_KEY, 'anthropic-version': '2023-06-01', 'anthropic-beta': 'mcp-client-2025-04-04', 'content-type': 'application/json' } }, JSON.stringify(claudeRequest));
Option 3: OpenAI API with MCP Server For programmatic usage with OpenAI's API and your deployed MCP server:
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY }); const res = await openai.responses.create({ model: "gpt-4.1", tools: [ { type: "mcp", server_label: "fetchserp", server_url: "https://mcp.fetchserp.com/sse", headers: { Authorization: `Bearer ${FETCHSERP_API_TOKEN}` } } ], input: question }); console.log(res.choices[0].message);
Option 4: Docker Use the pre-built Docker image from GitHub Container Registry for containerized deployment:
{ "mcpServers": { "fetchserp": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "FETCHSERP_API_TOKEN", "ghcr.io/fetchserp/fetchserp-mcp-server-node:latest" ], "env": { "FETCHSERP_API_TOKEN": "your_fetchserp_api_token_here" } } } }
Docker Features:
- âś… Containerized deployment
- âś… Cross-platform compatibility (ARM64 & AMD64)
- âś… Isolated environment
- âś… Easy scaling and deployment
- âś… Automated builds from GitHub
Manual Docker Usage:
# Pull the latest image docker pull ghcr.io/fetchserp/fetchserp-mcp-server-node:latest # Run with environment variable docker run -i --rm \ -e FETCHSERP_API_TOKEN="your_token_here" \ ghcr.io/fetchserp/fetchserp-mcp-server-node:latest # Or run in HTTP mode on port 8000 docker run -p 8000:8000 \ -e FETCHSERP_API_TOKEN="your_token_here" \ -e MCP_HTTP_MODE=true \ ghcr.io/fetchserp/fetchserp-mcp-server-node:latest
Get backlinks for a domain
- domain (required): Target domain
- search_engine: google, bing, yahoo, duckduckgo (default: google)
- country: Country code (default: us)
- pages_number: Pages to search 1-30 (default: 15)
Get comprehensive domain information
- domain (required): Target domain
Extract emails from a domain
- domain (required): Target domain
- search_engine: Search engine (default: google)
- country: Country code (default: us)
- pages_number: Pages to search 1-30 (default: 1)
Comprehensive SEO analysis of a webpage
- url (required): URL to analyze
AI-powered webpage analysis
- url (required): URL to analyze
- prompt (required): Analysis prompt
Get Moz domain authority and metrics
- domain (required): Target domain
Get search volume for keywords
- keywords (required): Array of keywords
- country: Country code
Get keyword suggestions
- url: URL to analyze (optional if keywords provided)
- keywords: Array of seed keywords (optional if url provided)
- country: Country code
Generate long-tail keywords
- keyword (required): Seed keyword
- search_intent: informational, commercial, transactional, navigational (default: informational)
- count: Number to generate 1-500 (default: 10)
Get search engine results
- query (required): Search query
- search_engine: google, bing, yahoo, duckduckgo (default: google)
- country: Country code (default: us)
- pages_number: Pages to search 1-30 (default: 1)
Get SERP results with HTML content
- Same parameters as
get_serp_results
Get SERP results with text content
- Same parameters as
get_serp_results
Get SERP with AI Overview and AI Mode response
- query (required): Search query
- country: Country code (default: us)
Returns AI overview and AI mode response for the query. Less reliable than the 2-step process but returns results in under 30 seconds.
Check if domain is indexed for keyword
- domain (required): Target domain
- keyword (required): Search keyword
Get domain ranking for keyword
- keyword (required): Search keyword
- domain (required): Target domain
- search_engine: Search engine (default: google)
- country: Country code (default: us)
- pages_number: Pages to search 1-30 (default: 10)
Scrape webpage without JavaScript
- url (required): URL to scrape
Scrape multiple pages from domain
- domain (required): Target domain
- max_pages: Maximum pages to scrape, up to 200 (default: 10)
Scrape webpage with custom JavaScript
- url (required): URL to scrape
- js_script (required): JavaScript code to execute
Scrape webpage with JavaScript and proxy
- url (required): URL to scrape
- country (required): Proxy country
- js_script (required): JavaScript code to execute
Get user information and API credits
- No parameters required
You need a FetchSERP API token to use this server.
Getting your API token:
- Sign up at https://www.fetchserp.com
- New users automatically receive 250 free credits to get started
- Your API token will be available in your dashboard
Set the token as an environment variable:
export FETCHSERP_API_TOKEN="your_token_here"
The server includes comprehensive error handling:
- Missing API token validation
- API response error handling
- Input validation
- Proper MCP error responses
docker build --platform=linux/amd64 -t olivier86/fetchserp-mcp-server-node:latest --push . docker run -p 8000:8000 olivier86/fetchserp-mcp-server-node:latest
nohup ngrok http 8000 --domain guinea-dominant-jolly.ngrok-free.app > /var/log/ngrok.log 2>&1 &