A Model Context Protocol (MCP) server that provides access to FetchSERP API for SEO analysis, SERP data, web scraping, and keyword research. Supports both stdio and HTTP transport modes.
npm install fetchserp-mcp-serverA 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:
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 :
``json`
{
"mcpServers": {
"fetchserp": {
"command": "npx",
"args": [
"github:fetchSERP/fetchserp-mcp-server-node"
],
"env": {
"FETCHSERP_API_TOKEN": "your_fetchserp_api_token_here"
}
}
}
}
or using npm registry
`json`
{
"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:
`javascript
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:
`javascript
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:
`json`
{
"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:
`bashPull the latest image
docker pull ghcr.io/fetchserp/fetchserp-mcp-server-node:latest
Available Tools
$3
####
get_backlinks
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_domain_info
Get comprehensive domain information
- domain (required): Target domain####
get_domain_emails
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)####
get_playwright_mcp
Use GPT-4.1 to remote control a browser via a Playwright MCP server
- prompt (required): The prompt to use for remote control of the browserThis endpoint uses GPT-4.1 to remote control a browser via a Playwright MCP server.
####
get_webpage_seo_analysis
Comprehensive SEO analysis of a webpage
- url (required): URL to analyze####
get_webpage_ai_analysis
AI-powered webpage analysis
- url (required): URL to analyze
- prompt (required): Analysis prompt####
generate_wordpress_content
Generate WordPress content using AI with customizable prompts and models
- user_prompt (required): The user prompt
- system_prompt (required): The system prompt
- ai_model: The AI model (default: gpt-4.1-nano)Generates SEO-optimized WordPress content including title and content (800-1500 words) with keyword targeting in the first 100 words.
####
generate_social_content
Generate social media content using AI with customizable prompts and models
- user_prompt (required): The user prompt
- system_prompt (required): The system prompt
- ai_model: The AI model (default: gpt-4.1-nano)Generates engaging social media content optimized for various platforms and audiences.
####
get_moz_analysis
Get Moz domain authority and metrics
- domain (required): Target domain$3
####
get_keywords_search_volume
Get search volume for keywords
- keywords (required): Array of keywords
- country: Country code####
get_keywords_suggestions
Get keyword suggestions
- url: URL to analyze (optional if keywords provided)
- keywords: Array of seed keywords (optional if url provided)
- country: Country code####
get_long_tail_keywords
Generate long-tail keywords
- keyword (required): Seed keyword
- search_intent: informational, commercial, transactional, navigational (default: informational)
- count: Number to generate 1-500 (default: 10)$3
####
get_serp_results
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_html
Get SERP results with HTML content
- Same parameters as get_serp_results####
get_serp_text
Get SERP results with text content
- Same parameters as get_serp_results####
get_serp_ai_mode
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_page_indexation
Check if domain is indexed for keyword
- domain (required): Target domain
- keyword (required): Search keyword####
get_domain_ranking
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)$3
####
scrape_webpage
Scrape webpage without JavaScript
- url (required): URL to scrape####
scrape_domain
Scrape multiple pages from domain
- domain (required): Target domain
- max_pages: Maximum pages to scrape, up to 200 (default: 10)####
scrape_webpage_js
Scrape webpage with custom JavaScript
- url (required): URL to scrape
- js_script (required): JavaScript code to execute####
scrape_webpage_js_proxy
Scrape webpage with JavaScript and proxy
- url (required): URL to scrape
- country (required): Proxy country
- js_script (required): JavaScript code to execute$3
####
get_user_info
Get user information and API credits
- No parameters requiredAPI Token
You need a FetchSERP API token to use this server.
Getting your API token:
1. Sign up at https://www.fetchserp.com
2. New users automatically receive 250 free credits to get started
3. Your API token will be available in your dashboard
Set the token as an environment variable:
`bash
export FETCHSERP_API_TOKEN="your_token_here"
`Error Handling
The server includes comprehensive error handling:
- Missing API token validation
- API response error handling
- Input validation
- Proper MCP error responses
Docker deploy
`
docker build --platform=linux/amd64 -t olivier86/fetchserp-mcp-server-node:latest --push .
docker build --platform=linux/amd64 -t ghcr.io/fetchserp/mcp-server-node:latest --push .docker run -p 8000:8000 olivier86/fetchserp-mcp-server-node:latest
`To start tunneling
`
nohup ngrok http 8000 --domain guinea-dominant-jolly.ngrok-free.app > /var/log/ngrok.log 2>&1 &
``npm login
npm publish --access public