wet-mcp(仓库与 CLI 现名为 wet,PyPI 包名仍为 wet-mcp)是一个面向 AI 智能体的开源 MCP 服务器,主要提供网页搜索、内容提取和库文档三大能力。当前版本为 v3.x。
用途 为 AI 智能体提供联网检索、网页内容抓取与本地/在线文档索引能力,使其能够获取实时信息、读取网页正文并检索库文档。
主要能力
- 网页搜索:内置 SearXNG 元搜索(Google、Bing、DuckDuckGo、Brave),支持查询扩展、TTL 缓存(通用 1 小时 / 时效性内容 5 分钟)、标准化引用格式与 200 token 摘要上限。可通过 SEARCH_BACKENDS 配置可选云端搜索后端(Tavily、Brave、Exa、Kagi、OpenRouter、Firecrawl)作为回退链。
- 学术研究:支持搜索 Google Scholar、Semantic Scholar、arXiv、PubMed、CrossRef、BASE。
- 库文档:自动发现并索引文档,采用 FTS5 混合搜索、HyDE 增强检索与版本特定文档。
- 内容提取:通过 n24q02m-web-core ScrapingAgent 实现 5 级策略升级链(basic_http → tls_spoof → 来自 BROWSER_BACKENDS 的渲染后端(native / browserless / cf-browser-rendering)→ 可选需密钥的验证码),提供 markitdown 桥接用于低层级 HTML/MD 回退、智能分块结构化输出(干净文本 + markdown + JSON-LD + 代码块 + 元数据)、批量处理(最多 50 个 URL)、深度爬取与站点地图。
- 本地文件转换:将 PDF、DOCX、XLSX、CSV、HTML、EPUB、PPTX 转换为 Markdown。
- 媒体:列出并下载图片 / 视频 / 音频文件。analyze 动作已在 v2.0.0 移除,视觉/音频推理请使用 imagine-mcp.understand。
- 反爬:隐身策略可绕过 Cloudflare、Medium、LinkedIn、Twitter。
- 零配置:通过 fastretrieval 内置本地参考嵌入与重排序,无需 API 密钥。可通过 ~/.wet/config.toml 中的 [models.embed|rerank|chat|jev_score] 按任务配置可选云端模型(默认 OpenRouter;一个 OPENROUTER_API_KEY 可服务所有单元)。
- 同步:通过 Google Drive 跨机器同步已索引文档(OAuth Device Code,无需浏览器重定向)。
使用方式 安装:pip install wet-mcp 或 uvx wet-mcp。包安装两个控制台脚本:wet(主命令)与 wet-mcp(旧别名)。裸调用(或任意前导短横线标志)启动服务器;前导位置参数作为子命令分发。 传输方式:stdio(默认,本地)与 HTTP(自托管,OAuth 门控)。HTTP 端点使用 Streamable HTTP,首次连接时客户端会在浏览器中提示认证。 自托管 HTTP 服务器:开发模式(uv,无认证回环)或常驻模式(docker)。MCP 端点为 http://127.0.0.1:8000/mcp,配置根目录为 ~/.wet/(config.toml、docs.db、subs/)。不要将服务器作为客户端子进程启动,而应在客户端注册端点。 配置:~/.wet/config.toml 中的 [models.embed|rerank|chat|jev_score] 按任务配置(各自 base_url + api_key + model,OpenAI 规范)。示例提供 OpenRouter 示例;任何 OpenAI 兼容端点均可,包括本地 Ollama。密钥可留空并通过 HULL_EMBED_API_KEY / HULL_RERANK_API_KEY / HULL_CHAT_API_KEY / HULL_JEV_SCORE_API_KEY 在启动时注入。 搜索后端:SEARCH_BACKENDS 为有序运行时回退链,默认 searxng(本地或通过 SEARXNG_URL 外部),可配置需密钥的 tavily / brave / exa / kagi / openrouter、可选密钥的 firecrawl,以及无需凭据的 duckduckgo / startpage。 浏览器渲染后端:BROWSER_BACKENDS(CSV,升级链)选择 extract 的无头渲染环节:native(进程内 chromium,零配置默认)、browserless(自托管渲染服务,需 BROWSERLESS_URL + BROWSERLESS_TOKEN)、cf-browser-rendering(Cloudflare Browser Rendering,需 CF_ACCOUNT_ID + CF_BROWSER_RENDERING_TOKEN)。空链回退到 native。设置 CAPSOLVER_API_KEY 可追加可选、需密钥的 CAPTCHA 层级作为最后升级步骤。 Robots 策略:设置 RESPECT_ROBOTS_TXT=true 可在 extract 策略链与 Crawl4AI 支持的 crawl、sitemap、list_media 动作中强制执行 robots.txt。默认 false。 隐身层级与种子身份(可选):在 BROWSER_BACKENDS 追加 invisible 可添加隐身 Firefox 引擎层级作为最后升级步骤(需 pip install "wet-mcp[invisible]")。通过 WET_IDENTITY_SEED 播种身份,并安装 wet[identity] 额外项。STEALTHFOX_BINARY 指向补丁版 Firefox 构建以跳过引擎下载;IDENTITY_PROFILE_DIR 保留每个命名空间的持久浏览器配置文件。 禁用本地回退:可按能力选择退出重量级进程内本地回退:DISABLE_LOCAL_BROWSER、DISABLE_LOCAL_SEARCH、DISABLE_LOCAL_EMBED、DISABLE_LOCAL_RERANK。 文档同步:SYNC_ENABLED(默认 true)、GOOGLE_DRIVE_CLIENT_ID(同步必需)、SYNC_FOLDER(默认 wet)、SYNC_INTERVAL(默认 300 秒)。DOCS_DB_BACKEND=cf-d1 会禁用 GDrive/S3 文件同步;SYNC_S3_BUCKET 选择 S3;SYNC_ENABLED=false 禁用两者。 HTTP 自托管:MCP_TRANSPORT=http、PUBLIC_URL=<your-domain>。设置表单由 MCP_RELAY_PASSWORD 门控;多用户部署需要 CREDENTIAL_SECRET、MCP_JWT_SIGNING_SECRET、MCP_DCR_SERVER_SECRET。 部署到 Cloudflare:需 Workers Paid 计划的 Cloudflare 账户(Containers、D1、Vectorize 需要)与 wrangler CLI。步骤包括克隆仓库、创建 D1 数据库并应用迁移、创建 Vectorize 索引与 KV 命名空间、构建 slim HTTP 镜像并推送到 Cloudflare 托管注册表、设置密钥、wrangler deploy 并在浏览器中完成设置。存储映射为 MCP_STORAGE_BACKEND=cf-kv、DOCS_DB_BACKEND=cf-d1 与 Vectorize。
适用场景
- AI 智能体需要联网搜索与网页内容提取。
- 需要检索库文档、学术论文或版本化文档。
- 需要将本地文档转换为 Markdown 供智能体使用。
- 需要跨机器同步已索引文档。
- 需要在无 API 密钥环境下零配置运行。
限制
- media(action="analyze") 已在 v2.0.0 移除,视觉/音频/视频分析需使用 imagine-mcp 的 understand 动作。
- 公共 OCI 镜像发布已停止;新容器部署需从源码构建或使用 Cloudflare 托管注册表。
- 无认证模式拒绝非回环绑定,服务器仅限 localhost,直到切换为 token 认证。
- 未配置 chat 单元密钥时,LLM 功能(如 extract(action="agent"))不可用。
- 部署到 Cloudflare 需要 Workers Paid 计划,免费层不包含 Containers、D1 与 Vectorize。
- 具体收费、价格与效果数据暂未提供。