{"id":44399088,"url":"https://github.com/n24q02m/wet-mcp","last_synced_at":"2026-05-29T03:04:32.538Z","repository":{"id":337351740,"uuid":"1148531699","full_name":"n24q02m/wet-mcp","owner":"n24q02m","description":"MCP server for web search, content extraction, and documentation indexing","archived":false,"fork":false,"pushed_at":"2026-05-01T22:55:17.000Z","size":4760,"stargazers_count":7,"open_issues_count":21,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-02T00:27:14.103Z","etag":null,"topics":["ai-agents","ai-coding","claude","claude-code","crawl4ai","cursor","docker","mcp","mcp-server","model-context-protocol","open-source","python","searxng","web-scraping","web-search"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/wet-mcp/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/n24q02m.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-03T04:20:30.000Z","updated_at":"2026-05-01T11:34:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/n24q02m/wet-mcp","commit_stats":null,"previous_names":["n24q02m/wet-mcp"],"tags_count":139,"template":false,"template_full_name":null,"purl":"pkg:github/n24q02m/wet-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n24q02m%2Fwet-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n24q02m%2Fwet-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n24q02m%2Fwet-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n24q02m%2Fwet-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/n24q02m","download_url":"https://codeload.github.com/n24q02m/wet-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n24q02m%2Fwet-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32571456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","ai-coding","claude","claude-code","crawl4ai","cursor","docker","mcp","mcp-server","model-context-protocol","open-source","python","searxng","web-scraping","web-search"],"created_at":"2026-02-12T05:53:19.505Z","updated_at":"2026-05-29T03:04:32.531Z","avatar_url":"https://github.com/n24q02m.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WET - Web Extended Toolkit MCP Server\n\nmcp-name: io.github.n24q02m/wet-mcp\n\n**5-strategy web search + extract + media MCP server, web-core ScrapingAgent backend.**\n\n| Phase | Status | Scope |\n|---|---|---|\n| Phase 1 | Shipped | web-core ScrapingAgent migration, smart chunks output, search polish, media slim |\n| Phase 2 | Shipped | Context7-level docs search: library index (Tier 1 + Tier 2), version-aware queries with token cap, project lock (Cabinets) |\n| Phase 3 | **Current (BREAKING v2.0.0)** | `extract.agent` multi-step research with cited synthesis, `extract.interact` click/fill/submit via patchright (optional session persistence), `docs_004_chunk_summaries` migration, **`media.analyze` removed** |\n\n\u003e **BREAKING in v2.0.0** -- `media(action=\"analyze\")` was removed entirely.\n\u003e Use [`imagine-mcp`](https://github.com/n24q02m/imagine-mcp)'s\n\u003e `understand` action for vision/audio/video analysis. See\n\u003e [`docs/migration.md`](docs/migration.md) for the upgrade recipe.\n\n\u003c!-- Badge Row 1: Status --\u003e\n[![CI](https://github.com/n24q02m/wet-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/n24q02m/wet-mcp/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/n24q02m/wet-mcp/graph/badge.svg?token=JK19TRLPEX)](https://codecov.io/gh/n24q02m/wet-mcp)\n[![PyPI](https://img.shields.io/pypi/v/wet-mcp?logo=pypi\u0026logoColor=white)](https://pypi.org/project/wet-mcp/)\n[![Docker](https://img.shields.io/docker/v/n24q02m/wet-mcp?label=docker\u0026logo=docker\u0026logoColor=white\u0026sort=semver)](https://hub.docker.com/r/n24q02m/wet-mcp)\n[![License: MIT](https://img.shields.io/github/license/n24q02m/wet-mcp)](LICENSE)\n\n\u003c!-- Badge Row 2: Tech --\u003e\n[![Python](https://img.shields.io/badge/Python-3776AB?logo=python\u0026logoColor=white)](#)\n[![SearXNG](https://img.shields.io/badge/SearXNG-3050FF?logo=searxng\u0026logoColor=white)](#)\n[![MCP](https://img.shields.io/badge/MCP-000000?logo=anthropic\u0026logoColor=white)](#)\n[![semantic-release](https://img.shields.io/badge/semantic--release-e10079?logo=semantic-release\u0026logoColor=white)](https://github.com/python-semantic-release/python-semantic-release)\n[![Renovate](https://img.shields.io/badge/renovate-enabled-1A1F6C?logo=renovatebot\u0026logoColor=white)](https://developer.mend.io/)\n\n\u003c!-- BEGIN: AUTO-GENERATED-CROSS-PROMO --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003eSister projects from n24q02m\u003c/strong\u003e (click to expand)\u003c/summary\u003e\n\n| Project | Tagline | Tag |\n|---|---|---|\n| [better-code-review-graph](https://github.com/n24q02m/better-code-review-graph) | Knowledge graph for token-efficient code reviews -- fixed search, configurabl... | MCP |\n| [better-email-mcp](https://github.com/n24q02m/better-email-mcp) | IMAP/SMTP email server for AI agents -- 6 composite tools with multi-account ... | MCP |\n| [better-godot-mcp](https://github.com/n24q02m/better-godot-mcp) | Composite MCP server for Godot Engine -- 17 mega-tools for AI-assisted game d... | MCP |\n| [better-notion-mcp](https://github.com/n24q02m/better-notion-mcp) | Markdown-first Notion API server for AI agents -- 10 composite tools replacin... | MCP |\n| [better-telegram-mcp](https://github.com/n24q02m/better-telegram-mcp) | MCP server for Telegram with dual-mode support: Bot API (httpx) for quick bot... | MCP |\n| [claude-plugins](https://github.com/n24q02m/claude-plugins) | Full documentation: mcp.n24q02m.com — unified docs for all 8 servers + the mc... | Marketplace |\n| [imagine-mcp](https://github.com/n24q02m/imagine-mcp) | Production-grade MCP server for image and video understanding + generation ac... | MCP |\n| [jules-task-archiver](https://github.com/n24q02m/jules-task-archiver) | Chrome Extension for bulk operations on Jules tasks via batchexecute API -- a... | Tooling |\n| [mcp-core](https://github.com/n24q02m/mcp-core) | Unified MCP Streamable HTTP 2025-11-25 transport, OAuth 2.1 Authorization Ser... | MCP |\n| [mnemo-mcp](https://github.com/n24q02m/mnemo-mcp) | Persistent AI memory with hybrid search and embedded sync. Open, free, unlimi... | MCP |\n| [qwen3-embed](https://github.com/n24q02m/qwen3-embed) | Lightweight Qwen3 text embedding and reranking via ONNX Runtime and GGUF | Library |\n| [skret](https://github.com/n24q02m/skret) | Secrets without the server. | CLI |\n| [web-core](https://github.com/n24q02m/web-core) | Shared web infrastructure package for search, scraping, HTTP security, and st... | Library |\n| [wet-mcp](https://github.com/n24q02m/wet-mcp) | Open-source MCP Server for web search, content extraction, library docs \u0026 mul... | MCP |\n\n\u003c/details\u003e\n\u003c!-- END: AUTO-GENERATED-CROSS-PROMO --\u003e\n\n## Table of contents\n\n- [Features](#features)\n- [Status](#status)\n- [Quick install](#quick-install)\n- [Documentation](#documentation)\n- [Tools](#tools)\n- [Comparison](#comparison)\n- [Security](#security)\n- [Build from Source](#build-from-source)\n- [Trust Model](#trust-model)\n- [License](#license)\n\n\n\n\u003ca href=\"https://glama.ai/mcp/servers/n24q02m/wet-mcp\"\u003e\n  \u003cimg width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/n24q02m/wet-mcp/badge\" alt=\"WET MCP server\" /\u003e\n\u003c/a\u003e\n\n## Features\n\n- **Web Search** -- Embedded SearXNG metasearch (Google, Bing, DuckDuckGo, Brave) with query expansion, TTL cache (1 h general / 5 min time-sensitive), standardized citation format, and 200-token snippet cap\n- **Academic Research** -- Search Google Scholar, Semantic Scholar, arXiv, PubMed, CrossRef, BASE\n- **Library Docs** -- Auto-discover and index documentation with FTS5 hybrid search, HyDE-enhanced retrieval, and version-specific docs\n- **Content Extract** -- 5-strategy escalation chain via `n24q02m-web-core` `ScrapingAgent` (`basic_http` -\u003e `tls_spoof` -\u003e `headless` Crawl4AI), markitdown bridge for low-tier HTML/MD fallback, smart chunks structured output (clean text + markdown + JSON-LD + code blocks + metadata), batch processing (up to 50 URLs), deep crawling, site mapping\n- **Local File Conversion** -- Convert PDF, DOCX, XLSX, CSV, HTML, EPUB, PPTX to Markdown\n- **Media** -- List + download images / videos / audio files. `analyze` deprecated v\u0026lt;auto\u0026gt;+ -- use `imagine-mcp.understand` for vision/audio inference\n- **Anti-bot** -- Stealth strategies bypass Cloudflare, Medium, LinkedIn, Twitter\n- **Zero Config** -- Built-in local Qwen3 embedding + reranking, no API keys needed. Optional cloud providers (Jina AI, Gemini, OpenAI, Cohere) for higher-quality vectors\n- **Sync** -- Cross-machine sync of indexed docs via Google Drive (OAuth Device Code, no browser redirect)\n\n## Quick install\n\n```bash\n# Method 1 (default): plugin install via Claude Code\n/plugin marketplace add n24q02m/claude-plugins\n/plugin install wet-mcp@n24q02m-plugins\n\n# Method 1 (CLI): direct uvx invocation\nclaude mcp add wet -- uvx wet-mcp\n\n# Method 3 (recommended for HTTP / multi-device / OAuth)\ndocker run -d --name wet-mcp-http -p 8084:8084 \\\n  -v wet-data:/data -e MCP_TRANSPORT=http \\\n  -e PUBLIC_URL=https://wet.example.com \\\n  n24q02m/wet-mcp:latest\n```\n\nFull setup matrices live at the canonical docs site\n[mcp.n24q02m.com/servers/wet-mcp/setup/](https://mcp.n24q02m.com/servers/wet-mcp/setup/)\nand the paste-to-agent snippets at\n[claude-plugins/plugins/wet-mcp/setup-with-agent.md](https://github.com/n24q02m/claude-plugins/blob/main/plugins/wet-mcp/setup-with-agent.md)\n(per Spec F single source of truth).\n\n## Status\n\n\u003e **2026-05-02 -- Architecture stabilization update**\n\u003e\n\u003e Past months saw significant churn around credential handling and the daemon-bridge auto-spawn pattern. This caused multi-process races, browser tab spam, and inconsistent setup UX across plugins. **As of v\u0026lt;auto\u0026gt;, the architecture is stable**: 2 clean modes (stdio + HTTP), no daemon-bridge layer, no auto-spawn from stdio.\n\u003e\n\u003e Apologies for the instability period. If you encountered issues with prior versions, please update to v\u0026lt;auto\u0026gt;+ and follow the current [setup docs](https://mcp.n24q02m.com/servers/wet-mcp/setup/) -- most prior workarounds are no longer needed.\n\u003e\n\u003e **Related plugins from the same author**:\n\u003e - [wet-mcp](https://github.com/n24q02m/wet-mcp) -- Web search + content extraction\n\u003e - [mnemo-mcp](https://github.com/n24q02m/mnemo-mcp) -- Persistent AI memory\n\u003e - [imagine-mcp](https://github.com/n24q02m/imagine-mcp) -- Image/video understanding + generation\n\u003e - [better-notion-mcp](https://github.com/n24q02m/better-notion-mcp) -- Notion API\n\u003e - [better-email-mcp](https://github.com/n24q02m/better-email-mcp) -- Email management\n\u003e - [better-telegram-mcp](https://github.com/n24q02m/better-telegram-mcp) -- Telegram\n\u003e - [better-godot-mcp](https://github.com/n24q02m/better-godot-mcp) -- Godot Engine\n\u003e - [better-code-review-graph](https://github.com/n24q02m/better-code-review-graph) -- Code review knowledge graph\n\u003e\n\u003e All plugins share the same architecture (this spec) -- install once, learn pattern transfers.\n\n## Documentation\n\nFull docs at **[mcp.n24q02m.com/servers/wet-mcp/](https://mcp.n24q02m.com/servers/wet-mcp/)**:\n\n- [Setup](https://mcp.n24q02m.com/servers/wet-mcp/setup/) -- install methods for Claude Code, Codex, Gemini CLI, Cursor, Windsurf, mcp.json\n- [Modes overview](https://mcp.n24q02m.com/get-started/modes-overview/) -- stdio / local-relay / remote-relay / remote-oauth\n- [Multi-user setup](https://mcp.n24q02m.com/get-started/multi-user/) -- per-JWT-sub credential model\n\nIn-repo references (Spec F single source of truth: setup docs live in\n[claude-plugins/plugins/wet-mcp/](https://github.com/n24q02m/claude-plugins/tree/main/plugins/wet-mcp)):\n\n- [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) -- web-core ScrapingAgent integration, strategy chain, storage layout, LLM provider dispatch\n- [`docs/BENCHMARKS.md`](docs/BENCHMARKS.md) -- v1.x baseline coverage / latency placeholders + tier-1 fixture metrics\n\n**Install with AI agent** -- paste this to your AI coding agent:\n\n\u003e Install MCP server `wet-mcp` following the steps at\n\u003e https://raw.githubusercontent.com/n24q02m/claude-plugins/main/plugins/wet-mcp/setup-with-agent.md\n\n## Tools\n\n5 MCP tools (3 domain + `config` + `help`). The legacy `setup` tool merged\ninto `config` action dispatch.\n\n| Tool | Description |\n|:-----|:------------|\n| `search` | Web (SearXNG metasearch), news, images, academic research (Scholar / arXiv / PubMed / CrossRef / Semantic Scholar / BASE), library docs (HyDE + FTS5), find similar pages. Includes `docs_resolve` (library name -\u003e ranked id), `docs_query` (version-aware + topic + 5000-token cap), `docs_lock_project` (Cabinets project pin via pyproject / package.json / go.mod / Cargo.toml manifest detection). |\n| `extract` | URL -\u003e smart chunks dict (`clean_text` + `markdown` + `structured_data` + `code_blocks` + `metadata`) via web-core 5-strategy chain. Batch processing (up to 50 URLs), deep crawling, site mapping, local file conversion (PDF/DOCX/XLSX/PPTX/EPUB), structured extraction (JSON Schema) |\n| `media` | `list` (discover URLs from gallery pages), `download` (SSRF-safe). `analyze` deprecated v\u0026lt;auto\u0026gt;+ -- forwards to `imagine-mcp.understand` |\n| `config` | `status`, `set`, `cache_clear`, `docs_reindex`, `warmup`, `setup_open_relay`, `setup_status`, `setup_skip`, `setup_reset`, `setup_complete`, `setup_sync` |\n| `help` | Per-tool documentation: `search`, `extract`, `media`, `config` |\n\n\u003e **Media boundary**: For vision / audio understanding (image captioning,\n\u003e OCR, audio transcription, video summarization), use\n\u003e [imagine-mcp](https://github.com/n24q02m/imagine-mcp). `media.analyze`\n\u003e was removed in wet v2.0.0 -- use `imagine-mcp.understand` instead.\n\n## Comparison\n\nHow wet-mcp stacks up against direct competitors in each pillar:\n\n| Capability | wet-mcp | Brave Search | Tavily | Firecrawl | Context7 |\n|---|---|---|---|---|---|\n| Web search | Yes (SearXNG aggregation) | Yes | Yes | No | No |\n| Extract URL | Yes (5-strategy chain) | No | Yes (basic) | Yes | No |\n| Media list / download | Yes | No | No | No | No |\n| Library docs search | Yes (Tier 1 curated + Tier 2 on-demand, version-aware, Cabinets) | No | No | No | Yes |\n| Academic research | Yes (6 providers) | No | No | No | No |\n| Self-hostable | Yes | No | No | No | Yes |\n| Free tier | Yes (open source) | Limited | Limited | Limited | Yes |\n\n## Security\n\n- **SSRF prevention** -- URL validation on crawl targets\n- **Graceful fallbacks** -- Cloud → Local embedding, multi-tier crawling\n- **Error sanitization** -- No credentials in error messages\n- **File conversion sandboxing** -- Optional `CONVERT_ALLOWED_DIRS` restriction\n\n## Build from Source\n\n```bash\ngit clone https://github.com/n24q02m/wet-mcp.git\ncd wet-mcp\nuv sync\nuv run wet-mcp\n```\n\n## Trust Model\n\nThis plugin implements **TC-Local** (machine-bound, single trust principal). See [mcp-core/docs/TRUST-MODEL.md](https://github.com/n24q02m/mcp-core/blob/main/docs/TRUST-MODEL.md) for full classification.\n\n| Mode | Storage | Encryption | Who can read your data? |\n|---|---|---|---|\n| stdio (default) | `~/.wet-mcp/config.json` | AES-GCM, machine-bound key | Only your OS user (file perm 0600) |\n| HTTP self-host | Same as stdio | Same | Only you (admin = user) |\n\n## License\n\nMIT -- See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fn24q02m%2Fwet-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fn24q02m%2Fwet-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fn24q02m%2Fwet-mcp/lists"}