Open-source MCP Server for web search, extract, and crawl with embedded SearXNG
Project description
WET - Web ExTract MCP Server
Open-source MCP Server for web scraping & multimodal extraction.
Features
- Web Search - Search via embedded SearXNG (metasearch: Google, Bing, DuckDuckGo, Brave)
- Content Extract - Extract clean content (Markdown/Text)
- 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
- Python 3.13+ (or use
uvx)
Add to mcp.json
uvx (Recommended)
{
"mcpServers": {
"wet": {
"command": "uvx",
"args": ["wet-mcp@latest"],
"env": {
"API_KEYS": "GOOGLE_API_KEY:AIza..."
}
}
}
}
That's it! On first run:
- Automatically installs SearXNG from GitHub
- Automatically installs Playwright chromium + system dependencies
- Starts embedded SearXNG subprocess
- Runs the MCP server
Docker
{
"mcpServers": {
"wet": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "API_KEYS", "n24q02m/wet-mcp:latest"],
"env": {
"API_KEYS": "GOOGLE_API_KEY:AIza..."
}
}
}
}
Without uvx
pip install wet-mcp
wet-mcp
Tools
| Tool | Actions | Description |
|---|---|---|
web |
search, extract, crawl, map | Web operations |
media |
list, download, analyze | Media discovery & download |
help |
- | Full documentation |
Usage Examples
{"action": "search", "query": "python web scraping", "max_results": 10}
{"action": "extract", "urls": ["https://example.com"]}
{"action": "crawl", "urls": ["https://docs.python.org"], "depth": 2}
{"action": "map", "urls": ["https://example.com"]}
{"action": "list", "url": "https://github.com/python/cpython"}
{"action": "download", "media_urls": ["https://example.com/image.png"]}
Configuration
| Variable | Default | Description |
|---|---|---|
WET_AUTO_SEARXNG |
true |
Auto-start embedded SearXNG subprocess |
WET_SEARXNG_PORT |
8080 |
SearXNG port |
SEARXNG_URL |
http://localhost:8080 |
External SearXNG URL (when auto disabled) |
API_KEYS |
- | LLM API keys for media analysis |
LOG_LEVEL |
INFO |
Logging level |
LLM Configuration (Optional)
For media analysis (images, videos, audio), configure API keys:
API_KEYS=GOOGLE_API_KEY:AIza...
LLM_MODELS=gemini/gemini-3-flash-preview
Architecture
┌─────────────────────────────────────────────────────────┐
│ MCP Client │
│ (Claude, Cursor, Windsurf) │
└─────────────────────┬───────────────────────────────────┘
│ MCP Protocol
▼
┌─────────────────────────────────────────────────────────┐
│ WET MCP Server │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │
│ │ web │ │ media │ │ help │ │
│ │ (search, │ │ (list, │ │ (full documentation)│ │
│ │ extract, │ │ download,│ └──────────────────────┘ │
│ │ crawl, │ │ analyze) │ │
│ │ map) │ └────┬─────┘ │
│ └────┬─────┘ │ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ │
│ │ SearXNG │ │ Crawl4AI │ │
│ │(embedded)│ │(Playwright)│ │
│ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────┘
Build from Source
git clone https://github.com/n24q02m/wet-mcp
cd wet-mcp
# Setup (requires mise: https://mise.jdx.dev/)
mise run setup
# Run
uv run wet-mcp
Docker Build
docker build -t n24q02m/wet-mcp:latest .
Requirements: Python 3.13+
Contributing
See CONTRIBUTING.md
License
MIT - See 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
wet_mcp-2.3.0.tar.gz
(18.5 kB
view details)
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
wet_mcp-2.3.0-py3-none-any.whl
(24.8 kB
view details)
File details
Details for the file wet_mcp-2.3.0.tar.gz.
File metadata
- Download URL: wet_mcp-2.3.0.tar.gz
- Upload date:
- Size: 18.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","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 |
87c245b45ee80e8524e383ce9a36e918437c0b9001cf1e7791ca92d7cf926e87
|
|
| MD5 |
b3c165fa0f0328bbf57e6fd1884a030f
|
|
| BLAKE2b-256 |
062aa811af41d1b1208ccec5d9f2ada79aa4936d6c77ff1a06fd86a1ca47b133
|
File details
Details for the file wet_mcp-2.3.0-py3-none-any.whl.
File metadata
- Download URL: wet_mcp-2.3.0-py3-none-any.whl
- Upload date:
- Size: 24.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","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 |
0dd6183b1b0608345bf7c989c70d11d6cfa94e67926982f4d3a8307f99ffe27c
|
|
| MD5 |
39a3d58e5e6f4e0ae5cea13ba0b4502e
|
|
| BLAKE2b-256 |
85797c743c10e168cda1027f9a01a8e52e153d77db26613b1ec6b88f30eb141d
|