MCP Web Scraper Server
Enables web searching via DuckDuckGo, including standard, intelligent, and news-specific searches, as well as tools to search and automatically scrape content from results.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Web Scraper ServerSearch for the latest news on artificial intelligence"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π Production MCP Web Scraper Server
A modular, production-ready MCP server built with the official MCP Python SDK. Optimized for Render deployment with clean separation of concerns.
π Project Structure
mcp-web-scraper/
βββ server.py # Main server entry point
βββ tools/
β βββ __init__.py # Tools package initialization
β βββ search.py # Search tools (web_search, news_search, etc.)
β βββ scraping.py # Scraping tools (scrape_html, extract_article, etc.)
βββ utils/
β βββ __init__.py # Utils package initialization
β βββ helpers.py # Helper functions (clean_text, validate_url)
βββ requirements.txt # Python dependencies
βββ render.yaml # Render deployment configuration
βββ .gitignore # Git ignore rules
βββ README.md # This file
βββ config.example.json # Claude Desktop config exampleβ¨ Features
π Search Tools (tools/search.py)
web_search - DuckDuckGo web search
news_search - News articles with metadata
search_and_scrape - Search + content extraction
smart_search - Adaptive search (quick/standard/comprehensive)
π Scraping Tools (tools/scraping.py)
scrape_html - HTML scraping with CSS selectors
extract_article - Clean article extraction
extract_links - Link extraction with filtering
extract_metadata - Page metadata & Open Graph
scrape_table - Table data extraction
π Quick Deploy to Render
Step 1: Create Project Structure
mkdir mcp-web-scraper
cd mcp-web-scraper
# Create directory structure
mkdir -p tools utils
# Create all files (copy from artifacts above):
# - server.py
# - tools/__init__.py
# - tools/search.py
# - tools/scraping.py
# - utils/__init__.py
# - utils/helpers.py
# - requirements.txt
# - render.yaml
# - .gitignore
# - README.mdStep 2: Push to GitHub
git init
git add .
git commit -m "Initial commit: Modular MCP Web Scraper"
git remote add origin https://github.com/YOUR_USERNAME/mcp-web-scraper.git
git push -u origin mainStep 3: Deploy on Render
Go to render.com
Click "New +" β "Web Service"
Connect your GitHub repository
Render auto-detects
render.yamlClick "Create Web Service"
Wait 2-3 minutes β¨
Step 4: Get Your URL
Your service: https://your-app.onrender.com
MCP endpoint: https://your-app.onrender.com/mcp
π Connect to Claude Desktop
Config Location
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Configuration
{
"mcpServers": {
"web-scraper": {
"type": "streamable-http",
"url": "https://your-app.onrender.com/mcp"
}
}
}Restart Claude Desktop after updating config!
π» Local Development
# Clone and setup
git clone https://github.com/YOUR_USERNAME/mcp-web-scraper.git
cd mcp-web-scraper
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run server
python server.pyServer runs at http://localhost:8000/mcp
Test Locally
# List tools
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# Test web search
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"id":2,
"method":"tools/call",
"params":{
"name":"web_search",
"arguments":{"query":"AI news","max_results":3}
}
}'π οΈ Adding New Tools
1. Search Tool Example
Edit tools/search.py:
@mcp.tool()
def my_custom_search(query: str) -> dict:
"""Your custom search tool"""
# Implementation here
return {"success": True, "data": []}2. Scraping Tool Example
Edit tools/scraping.py:
@mcp.tool()
def my_custom_scraper(url: str) -> dict:
"""Your custom scraper"""
# Implementation here
return {"success": True, "content": ""}3. Deploy Changes
git add .
git commit -m "Add new tools"
git push origin main
# Render auto-deploys!π Monitoring
View Logs
Render Dashboard β Your Service
Click "Logs" tab
View real-time logs
Health Check
curl https://your-app.onrender.com/healthπ― Architecture Benefits
β Modular Design
Separation of concerns - Each file has one responsibility
Easy to maintain - Find and update code quickly
Scalable - Add new tools without touching existing code
β Clean Code
Type hints - Better IDE support and error catching
Logging - Track all operations
Error handling - Graceful failures with detailed errors
β Production Ready
Official MCP SDK - FastMCP framework
Streamable HTTP - Single endpoint communication
Stateless - Horizontally scalable
Health checks - Automatic monitoring
π¬ Example Usage in Claude
"Search for latest quantum computing news"
"Extract the article from https://example.com/post"
"Find and scrape top 5 articles about AI safety"
"Get all links from https://news.ycombinator.com"
"Do comprehensive research on renewable energy"
π Troubleshooting
Import Errors
# Ensure you're in project root
cd mcp-web-scraper
# Check Python path
export PYTHONPATH="${PYTHONPATH}:$(pwd)"
# Run server
python server.pyTools Not Registered
Check logs for "Registering X tools..." messages
Module Not Found
Ensure all __init__.py files exist in:
tools/__init__.pyutils/__init__.py
π Resources
π License
MIT License - Free to use and modify!
Modular β | Production-Ready β | Easy to Extend β
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Aniruddha1202/mcp-web-scraper'
If you have feedback or need assistance with the MCP directory API, please join our Discord server