Open-source MCP server for AI agents: web search, content extraction, and library docs.
mcp-name: io.github.n24q02m/wet-mcp
Open-source MCP Server for web search, content extraction, library docs & multimodal analysis.
Via marketplace (includes skills: /fact-check, /compare):
/plugin marketplace add n24q02m/claude-plugins
/plugin install wet-mcp@claude-plugins
Or install this plugin only:
/plugin marketplace add n24q02m/wet-mcp
/plugin install wet-mcp
Configure env vars in ~/.claude/settings.local.json or shell profile. See Environment Variables.
Python 3.13 required -- Python 3.14+ is not supported due to SearXNG incompatibility. You must specify
--python 3.13when usinguvx.
On first run, the server automatically installs SearXNG, Playwright chromium, and starts the embedded search engine.
{
"mcpServers": {
"wet": {
"command": "uvx",
"args": ["--python", "3.13", "wet-mcp@latest"]
}
}
}
// Cursor (~/.cursor/mcp.json), Windsurf, Cline, Amp, OpenCode
{
"mcpServers": {
"wet": {
"command": "uvx",
"args": ["--python", "3.13", "wet-mcp@latest"]
}
}
}
# Codex (~/.codex/config.toml)
[mcp_servers.wet]
command = "uvx"
args = ["--python", "3.13", "wet-mcp@latest"]
{
"mcpServers": {
"wet": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--name", "mcp-wet",
"-v", "wet-data:/data",
"-e", "API_KEYS",
"-e", "GITHUB_TOKEN",
"-e", "SYNC_ENABLED",
"n24q02m/wet-mcp:latest"
]
}
}
}
Configure env vars in ~/.claude/settings.local.json or your shell profile. See Environment Variables below.
Use the setup MCP tool to warmup models and install dependencies:
# Via MCP tool call (recommended):
setup(action="warmup")
# With cloud embedding configured, warmup validates API keys
# and skips local model download if cloud models are available.
The warmup action pre-downloads SearXNG, Playwright, and embedding/reranker models (~1.1GB total) so the first real connection does not timeout.
Sync is fully automatic. Just set SYNC_ENABLED=true and the server handles everything:
~/.wet-mcp/tokens/ (600 permissions)For non-Google Drive providers, set SYNC_PROVIDER and SYNC_REMOTE:
{
"SYNC_ENABLED": "true",
"SYNC_PROVIDER": "dropbox",
"SYNC_REMOTE": "dropbox"
}
| Tool | Actions | Description |
|---|---|---|
search | search, research, docs, similar | Web search (with filters, reranking, expand/enrich), academic research, library docs (HyDE), find similar |
extract | extract, batch, crawl, map, convert, extract_structured | Content extraction, batch processing (up to 50 URLs), deep crawling, site mapping, local file conversion, structured data extraction (JSON Schema) |
media | list, download, analyze | Media discovery, download, and analysis |
config | status, set, cache_clear, docs_reindex | Server configuration and cache management |
setup | warmup, setup_sync | Pre-download models, configure cloud sync |
help | -- | Full documentation for any tool |
| Prompt | Parameters | Description |
|---|---|---|
research_topic | topic | Research a topic using academic search |
library_docs | library, question | Find library documentation |
| Variable | Required | Default | Description |
|---|---|---|---|
API_KEYS | No | -- | LLM API keys for SDK mode (format: ENV_VAR:key,...). Enables cloud embedding + reranking |
LITELLM_PROXY_URL | No | -- | LiteLLM Proxy URL. Enables proxy mode |
LITELLM_PROXY_KEY | No | -- | LiteLLM Proxy virtual key |
GITHUB_TOKEN | No | auto-detect | GitHub token for docs discovery (60 -> 5000 req/hr). Auto-detected from gh auth token |
EMBEDDING_BACKEND | No | auto-detect | litellm (cloud) or local (Qwen3). Auto: API_KEYS -> litellm, else local |
EMBEDDING_MODEL | No | auto-detect | LiteLLM embedding model name |
EMBEDDING_DIMS | No | 0 (auto=768) | Embedding dimensions |
RERANK_ENABLED | No | true | Enable reranking after search |
RERANK_BACKEND | No | auto-detect | litellm or local. Auto: Cohere/Jina key -> litellm, else local |
RERANK_MODEL | No | auto-detect | LiteLLM rerank model name |
RERANK_TOP_N | No | 10 | Return top N results after reranking |
LLM_MODELS | No | gemini/gemini-3-flash-preview | LiteLLM model for media analysis |
WET_AUTO_SEARXNG | No | true | Auto-start embedded SearXNG subprocess |
WET_SEARXNG_PORT | No | 41592 | SearXNG port |
SEARXNG_URL | No | http://localhost:41592 | External SearXNG URL (when auto disabled) |
SEARXNG_TIMEOUT | No | 30 | SearXNG request timeout in seconds |
CONVERT_MAX_FILE_SIZE | No | 104857600 | Max file size for local conversion in bytes (100MB) |
CONVERT_ALLOWED_DIRS | No | -- | Comma-separated paths to restrict local file conversion |
CACHE_DIR | No | ~/.wet-mcp | Data directory for cache, docs, downloads |
DOCS_DB_PATH | No | ~/.wet-mcp/docs.db | Docs database location |
DOWNLOAD_DIR | No | ~/.wet-mcp/downloads | Media download directory |
TOOL_TIMEOUT | No | 120 | Tool execution timeout in seconds (0=no timeout) |
WET_CACHE | No | true | Enable/disable web cache |
SYNC_ENABLED | No | false | Enable rclone sync |
SYNC_PROVIDER | No | drive | rclone provider type (drive, dropbox, s3, etc.) |
SYNC_REMOTE | No | gdrive | rclone remote name |
SYNC_FOLDER | No | wet-mcp | Remote folder name |
SYNC_INTERVAL | No | 300 | Auto-sync interval in seconds (0=manual) |
LOG_LEVEL | No | INFO | Logging level |
Both embedding and reranking are always available -- local models are built-in and require no configuration.
JINA_AI_API_KEY enables both embedding and reranking| Priority | Mode | Config | Use case |
|---|---|---|---|
| 1 | Proxy | LITELLM_PROXY_URL + LITELLM_PROXY_KEY | Production (selfhosted gateway) |
| 2 | SDK | API_KEYS | Dev/local with direct API access |
| 3 | Local | Nothing needed | Offline, embedding/rerank only (no LLM) |
| Mode | Config | Description |
|---|---|---|
| Embedded (default) | WET_AUTO_SEARXNG=true | Auto-installs and manages SearXNG as subprocess |
| External | WET_AUTO_SEARXNG=false + SEARXNG_URL=http://host:port | Connects to pre-existing SearXNG instance |
CONVERT_ALLOWED_DIRS restrictiongit clone https://github.com/n24q02m/wet-mcp.git
cd wet-mcp
uv sync
uv run wet-mcp
| Server | Description |
|---|---|
| mnemo-mcp | Persistent AI memory with hybrid search and cross-machine sync |
| better-notion-mcp | Markdown-first Notion API with 9 composite tools |
| better-email-mcp | Email (IMAP/SMTP) with multi-account and auto-discovery |
| better-godot-mcp | Godot Engine 4.x with 18 tools for scenes, scripts, and shaders |
| better-telegram-mcp | Telegram dual-mode (Bot API + MTProto) with 6 composite tools |
| better-code-review-graph | Knowledge graph for token-efficient code reviews |
See CONTRIBUTING.md.
MIT -- See LICENSE.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx wet-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-n24q02m-wet-mcp": {
"command": "uvx",
"args": [
"wet-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencewet-mcppypiio.github.n24q02m/wet-mcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.