Open-source MCP Server thay thế Tavily - Web search, extract, crawl với SearXNG
Project description
WET - Web ExTract MCP Server
Open-source MCP Server replacing Tavily for web scraping & multimodal extraction
Zero-install experience: just uvx wet-mcp - automatically setups and manages SearXNG container.
Features
| Feature | Description |
|---|---|
| Web Search | Search via SearXNG (metasearch: Google, Bing, DuckDuckGo, Brave) |
| Content Extract | Extract clean content (Markdown/Text/HTML) |
| Deep Crawl | Crawl multiple pages from a root URL with depth control |
| Site Map | Discover website URL structure |
| Media | List and download images, videos, audio files |
| Anti-bot | Stealth mode bypasses Cloudflare, Medium, LinkedIn, Twitter |
Quick Start
Prerequisites
- Docker daemon running (for SearXNG)
- Python 3.13+ (or use uvx)
MCP Client Configuration
Claude Desktop / Cursor / Windsurf / Antigravity:
{
"mcpServers": {
"wet": {
"command": "uvx",
"args": ["wet-mcp"]
}
}
}
That's it! When the MCP client calls wet-mcp for the first time:
- Automatically installs Playwright chromium
- Automatically pulls SearXNG Docker image
- Starts
wet-searxngcontainer - Runs the MCP server
Without uvx
pip install wet-mcp
wet-mcp
Tools
| Tool | Actions | Description |
|---|---|---|
web |
search, extract, crawl, map | Web operations |
media |
list, download | Media discovery & download |
help |
- | Full documentation |
Examples
# Search
{"action": "search", "query": "python web scraping", "max_results": 10}
# Extract content
{"action": "extract", "urls": ["https://example.com"]}
# Crawl with depth
{"action": "crawl", "urls": ["https://docs.python.org"], "depth": 2}
# Map site structure
{"action": "map", "urls": ["https://example.com"]}
# List media
{"action": "list", "url": "https://github.com/python/cpython"}
# Download media
{"action": "download", "media_urls": ["https://example.com/image.png"]}
Tech Stack
| Component | Technology |
|---|---|
| Language | Python 3.13 |
| MCP Framework | FastMCP |
| Web Search | SearXNG (auto-managed Docker) |
| Web Crawling | Crawl4AI |
| Docker Management | python-on-whales |
How It Works
┌─────────────────────────────────────────────────────────┐
│ MCP Client │
│ (Claude, Cursor, Windsurf) │
└─────────────────────┬───────────────────────────────────┘
│ MCP Protocol
▼
┌─────────────────────────────────────────────────────────┐
│ WET MCP Server │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │
│ │ web │ │ media │ │ help │ │
│ │ (search, │ │ (list, │ │ (full documentation)│ │
│ │ extract, │ │ crawl, │ └──────────────────────┘ │
│ │ crawl, │ │ download)│ │
│ │ map) │ └────┬─────┘ │
│ └────┬─────┘ │ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ │
│ │ SearXNG │ │ Crawl4AI │ │
│ │ (Docker) │ │(Playwright)│ │
│ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────┘
Configuration
Environment variables:
| Variable | Default | Description |
|---|---|---|
WET_AUTO_DOCKER |
true |
Auto-manage SearXNG container |
WET_SEARXNG_PORT |
8080 |
SearXNG container port |
SEARXNG_URL |
http://localhost:8080 |
External SearXNG URL |
LOG_LEVEL |
INFO |
Logging level |
Container Management
# View SearXNG logs
docker logs wet-searxng
# Stop SearXNG
docker stop wet-searxng
# Remove container (will be recreated on next run)
docker rm wet-searxng
# Reset auto-setup (forces re-install Playwright)
rm ~/.wet-mcp/.setup-complete
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wet_mcp-2.1.0.tar.gz.
File metadata
- Download URL: wet_mcp-2.1.0.tar.gz
- Upload date:
- Size: 14.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e570e342a7aeaaf46d516f04160e1f94ac5f65de4d00ce5300f7dc8e91826b48
|
|
| MD5 |
d4bd8907fbd8cb0274ec74bec625208f
|
|
| BLAKE2b-256 |
428f706107ab35fc3d250e2fd491c6a279d7195ee564a0ac8d94171a3e9e58e2
|
File details
Details for the file wet_mcp-2.1.0-py3-none-any.whl.
File metadata
- Download URL: wet_mcp-2.1.0-py3-none-any.whl
- Upload date:
- Size: 19.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56ef5658d811b9e9c15bd03b8ac32dc9e82a1152c1e95bf7c26ea9bd386a2339
|
|
| MD5 |
b017952675b816210916ea41061ca23c
|
|
| BLAKE2b-256 |
0d28a06625ebe1b883ac5b20ebe97c694bd4965d06e74a5690eeceb0156ff8f7
|