mcpField
W
wet

wet

本地服务
github.com/n24q02m搜索与检索20今天更新

关于 wet

wet 是面向 AI Agent 的开源网络研究与文档检索工具,提供 MCP 服务和命令行界面。它涵盖网页搜索、内容提取、学术检索、库文档查询及本地文件转换。

主要功能

  1. 01网页与学术搜索
  2. 02提取、分块和抓取网页内容
  3. 03搜索带版本信息的库文档
  4. 04转换常见文件为 Markdown
  5. 05列出并下载媒体文件
  6. 06本地嵌入与重排

适用场景

  1. 01为研究问题查找网页和学术资料
  2. 02提取网页内容并生成带引用的综合结果
  3. 03查询特定版本的库文档
  4. 04将 PDF 或表格转换为 Markdown

MCP 相关

wet 可作为 MCP 服务运行,通过工具提供搜索、内容提取、文档检索和文件转换能力;也提供命令行界面。服务支持 stdio 和自托管的 Streamable HTTP 接入。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"n24q02m-wet": {
"command": "uvx",
"args": [
"wet-mcp"
],
"env": {
"OPENROUTER_API_KEY": "<OPENROUTER_API_KEY>",
"GITHUB_TOKEN": "<GITHUB_TOKEN>"
}
}
}
}
启动命令uvx wet-mcp
需要配置的环境变量
OPENROUTER_API_KEY密钥OpenRouter API key — the single default credential for the [models.embed|rerank|chat|jev_score] provider cells and the openrouter search backend. Per-task overrides live in ~/.wet/config.toml; keys may also be injected via HULL_EMBED_API_KEY / HULL_RERANK_API_KEY / HULL_CHAT_API_KEY / HULL_JEV_SCORE_API_KEY. Empty cells fall back to local ONNX models.
GITHUB_TOKEN密钥GitHub personal access token for higher rate limits on library discovery

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiwet-mcp3.20.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

WET - Web Extended Toolkit MCP 服务

**已重命名(2026-09-13):**仓库现已命名为 wet,以命令行为先(wet 命令)。PyPI 包仍为 wet(PyPI 政策不允许创建新的 wet 项目);MCP 服务是次要入口:不带子命令运行 wet 即可。

mcp-name: io.github.n24q02m/wet

**已重命名:**仓库、CLI 和 Python 模块现已命名为 wet。PyPI 发行包仍为 wet-mcp(安装命令为 pip install wet-mcp / uvx wet-mcp)。MCP 服务仍可用:不带子命令运行 wet(直接运行 = MCP 透传);旧版 wet-mcp 控制台别名仍然有效。

面向 AI Agent 的开源 MCP 服务:网页搜索、内容提取和库文档。

阶段状态范围
阶段 1已发布web-core ScrapingAgent 迁移、智能分块输出、搜索优化、精简媒体功能
阶段 2已发布Context7 级别的文档搜索:库索引(Tier 1 + Tier 2)、带令牌上限的版本感知查询、项目锁定(Cabinets)
阶段 3已发布extract.agent 多步骤研究与引用综合、通过 patchright 执行 extract.interact 点击/填充/提交(可选会话持久化)、迁移 docs_004_chunk_summaries、已移除 media.analyze(v2.0.0)

当前版本:v3.x。 media(action="analyze") 已在 v2.0.0 重大变更版本中移除。使用 imagine-mcp 的 understand 操作进行视觉/音频/视频分析。升级方法请参阅 docs/migration.md。

模式 CI codecov PyPI 许可证:Apache-2.0

Python SearXNG MCP semantic-release Renovate

n24q02m 的姊妹项目(点击展开) | 项目 | 简介 | 标签 | |---|---|---| | [agent-chat-plugin](https://github.com/n24q02m/agent-chat-plugin) | AI Agent 在共享文件夹中进行点对点对话——无需人工转发、无需协调器,工... | Tooling | | [crg](https://github.com/n24q02m/crg) | 面向高效代码审查的知识图谱——语义搜索和调用-... | MCP | | [better-drive](https://github.com/n24q02m/better-drive) | 双向 Google Drive 同步,支持 .driveignore 过滤器——采用 rclone 引擎,提供 Windows 托盘 | Tooling | | [better-email-mcp](https://github.com/n24q02m/better-email-mcp) | 面向 AI Agent 的 IMAP/SMTP 邮件功能——读取、发送、整理文件夹并管理附... | MCP | | [better-godot-mcp](https://github.com/n24q02m/better-godot-mcp) | 面向 Godot Engine 的复合 MCP 服务——提供 17 个复合工具,支持 AI 辅助游... | MCP | | [better-notion-mcp](https://github.com/n24q02m/better-notion-mcp) | 面向 AI Agent、以 Markdown 为先的 Notion——支持页面、数据库、内容块和评论... | MCP | | [better-semantic-release](https://github.com/n24q02m/better-semantic-release) | 可直接替换的 python-semantic-release 分支,内置发布安全防护(orp... | Tooling | | [better-telegram-mcp](https://github.com/n24q02m/better-telegram-mcp) | 面向 AI Agent 的 Telegram 功能——支持多种机器人... | MCP | | [better-workspace-mcp](https://github.com/n24q02m/better-workspace-mcp) | Google Workspace MCP 服务(Docs/Drive/Calendar/Gmail/Sheets/Slides/Tasks/Ch... | MCP | | [claude-plugins](https://github.com/n24q02m/claude-plugins) | 面向 n24q02m MCP 服务的 Claude Code 插件市场——安装网页搜索... | Marketplace | | [imagine-mcp](https://github.com/n24q02m/imagine-mcp) | 面向 AI Agent 的图像和视频理解与生成——支持 Gemini、Op... | MCP | | [jules-task-archiver](https://github.com/n24q02m/jules-task-archiver) | 通过 batchexecute API 批量操作 Jules 任务的 Chrome 扩展——... | Tooling | | [mcp-core](https://github.com/n24q02m/mcp-core) | 用于构建 MCP 服务的共享基础组件——支持 Streamable HTTP 传输、OAuth... | MCP | | [mnemo](https://github.com/n24q02m/mnemo) | 具备混合搜索和嵌入式同步功能的持久化 AI 记忆。开放、免费、无限... | MCP | | [fastretrieval](https://github.com/n24q02m/fastretrieval) | 基于 ONNX 和 GGUF 的多模型嵌入与重排运行时 | Library | | [skret](https://github.com/n24q02m/skret) | 无需服务端的密钥管理。 | CLI | | [tacet](https://github.com/n24q02m/tacet) | 一种自蒸馏神经符号级联架构,可在知识间摊销大模型成本... | Tooling | | [web-core](https://github.com/n24q02m/web-core) | 用于搜索、抓取、HTTP 安全和 st... 的共享 Web 基础设施包 | Library | | [wet](https://github.com/n24q02m/wet) | 面向 AI Agent 的开源 MCP 服务:网页搜索、内容提取和库... | MCP |

目录

WET MCP 服务 ## 功能
  • 网页搜索 -- 内置 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)的渲染后端 -> 可选的、需要密钥的 captcha);使用 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 设备代码,无需浏览器重定向)

快速安装

# Method 1 (default): plugin install via Claude Code
/plugin marketplace add n24q02m/claude-plugins
/plugin install wet@n24q02m-plugins

# Method 2 (CLI): direct uvx invocation
claude mcp add wet -- uvx wet-mcp

# Method 3 (source-built container for HTTP / multi-device / OAuth)
docker build --target http -t wet:local .
docker run -d --name wet-http -p 8084:8080 \
  -v wet-data:/data -e PUBLIC_URL=https://wet.example.com \
  wet:local

# Method 4 (remote): point a client at an HTTP deployment
claude mcp add --transport http wet https://<your-host>/mcp

安装矩阵(除非另有说明,均使用 stdio;完整步骤请参阅设置页面):

客户端安装
Claude Code(插件)/plugin marketplace add n24q02m/claude-plugins 然后运行 /plugin install wet@n24q02m-plugins
Claude Code(stdio)claude mcp add wet -- uvx wet-mcp
Codex在 ~/.codex/config.toml 的 mcp_servers 下注册 stdio 命令 uvx wet-mcp
Gemini CLI将下方的 mcpServers JSON 添加到 ~/.gemini/settings.json
Cursor / Windsurf通过客户端的 MCP 设置(mcp.json)添加下方的 mcpServers JSON
任意客户端(HTTP 自托管)将客户端指向 https://<your-host>/mcp(Streamable HTTP,需通过 OAuth 验证)

已停止发布公共 OCI 镜像。现有历史注册表标签保持不变;新的容器部署请从源代码构建,或使用 Cloudflare 管理的注册表。

HTTP 端点使用 Streamable HTTP,并受 OAuth 验证保护——客户端首次连接时会提示你在浏览器中进行身份验证(无需粘贴 API 密钥)。请使用方法 3 或部署到 Cloudflare一节进行部署。

完整的设置矩阵见规范文档站点 mcp.n24q02m.com/servers/wet/setup/ ;可直接粘贴给 Agent 的代码片段见 claude-plugins/plugins/wet/setup-with-agent.md (遵循 Spec F 单一事实来源)。

自托管用法

有两种受支持的方式可运行常驻 HTTP 服务。两种方式下,MCP 端点均为 http://127.0.0.1:8000/mcp(Streamable HTTP),配置根目录均为 ~/.wet/(config.toml、docs.db、subs/)。切勿将服务作为客户端的子进程启动——请在客户端中注册该端点。

开发环境(uv,无身份验证,仅限环回地址)
git clone https://github.com/n24q02m/wet && cd wet
uv run wet config init            # writes ~/.wet/config.toml (default: auth = "no-auth")
uv run wet                        # serves http://127.0.0.1:8000/mcp

no-auth 模式会拒绝绑定非环回地址——切换到令牌身份验证之前,服务仅可通过本地主机访问。

始终运行(docker)
# 1. Mint a token and its scrypt hash (hull-core canonical; the hash command
#    never echoes the token itself)
openssl rand -hex 32                 # the token — give it to clients, keep it secret
uv run wet token hash <token>        # paste the output as token_hash

# 2. Instance config from the example
cp docker-config/config.example.toml docker-config/config.toml
#    edit [server] token_hash and the [models.*] cells (see below)

# 3. Data continuity (optional): carry an existing instance over by copying
#    docs.db and subs/ into the wet-home named volume BEFORE first start:
docker volume create wet-wet-home && \
  docker cp ~/.wet/docs.db wet-wet-home:/docs.db && \
  docker cp ~/.wet/subs wet-wet-home:/subs  # adjust: files land as root, chown 999:999

docker compose up -d --build

Compose 将 127.0.0.1:${WET_PORT:-8000} 发布到容器的 8000 端口(仅限 loopback),并将 docker-config/config.toml 以只读方式挂载到 /home/appuser/.wet/config.toml。持久化数据(docs.db、subs/)存放在 名为 wet-home 的卷中;下载/缓存目录存放在 wet-data 中。编辑配置后,执行 docker compose restart 即可生效。

使用者
# CLI (same token, JSON-RPC over HTTP not needed — use the installed CLI):
uvx wet-mcp --help                  # or `wet <tool>` for direct tool calls

# MCP client (Claude Code):
claude mcp add --transport http wet http://127.0.0.1:8000/mcp \
  --header "Authorization: Bearer <token>"

# Raw probe:
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8000/mcp \
  -X POST -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'            # 401
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8000/mcp \
  -X POST -H 'Authorization: Bearer <token>' -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'  # 200
配置:本地模型与云端模型

~/.wet/config.toml 中的 [models.embed|rerank|chat|jev_score] 配置项按任务分别设置(每项都有自己的 base_url + api_key + model,遵循 OpenAI 规范)。示例附带了 OpenRouter 配置;任何兼容 OpenAI 的端点都可以使用——无论是云端端点,还是 Ollama 这类本地服务(从容器内访问时,base_url = "http://host.docker.internal:11434/v1")。文件中的密钥仅供主机使用;也可以将 api_key = "" 留空,并在启动时通过 HULL_EMBED_API_KEY / HULL_RERANK_API_KEY / HULL_CHAT_API_KEY / HULL_JEV_SCORE_API_KEY 注入密钥。

配置

wet 开箱即用,无需配置:网页搜索使用内嵌的本地 SearXNG;未设置云端密钥时,嵌入和重排会通过 fastretrieval 回退到捆绑的本地 ONNX 模型。若要获得更高质量的结果,请配置 ~/.wet/config.toml 中按任务划分的服务商配置项。运行设置使用普通环境变量(不带应用前缀)——在 HTTP 自托管模式下,则通过浏览器设置表单填写。

服务商配置项——[models.embed|rerank|chat|jev_score] 各自使用独立的 base_url + api_key + model(遵循 OpenAI 规范)。所有配置项都预先配置为使用 OpenRouter;任何兼容 OpenAI 的端点都可以使用。配置项的密钥可以在文件中留空,并在启动时通过 HULL_EMBED_API_KEY / HULL_RERANK_API_KEY / HULL_CHAT_API_KEY / HULL_JEV_SCORE_API_KEY 注入。如果配置项保留了 OpenRouter 默认的 base_url,环境变量中的 OPENROUTER_API_KEY 会作为最后的凭据供其使用——一个 OpenRouter 密钥即可支持所有任务。嵌入或重排配置项留空时会回退到本地 ONNX 模型;聊天配置项没有密钥时会禁用 LLM 功能(例如 extract(action="agent"))。

FASTRETRIEVAL_CACHE_PATH 用于控制本地模型缓存。

搜索后端——SEARCH_BACKENDS 是按顺序执行的运行时回退链: searxng(默认,可通过 SEARXNG_URL 使用本地或外部服务)、需要密钥的 tavily / brave / exa / kagi / openrouter、密钥可选的 firecrawl,以及无需凭据的 duckduckgo / startpage。需要密钥的服务商使用 TAVILY_API_KEY、BRAVE_API_KEY、EXA_API_KEY、 KAGI_API_KEY 或 OPENROUTER_API_KEY(使用逗号分隔多个密钥以轮换)。openrouter 后端会通过聊天补全和 openrouter:web_search 服务端工具执行查询,并将返回的 url_citation 注释映射为通用结果格式;OPENROUTER_MODEL(默认使用免费层级模型)、OPENROUTER_BASE_URL 和 OPENROUTER_SEARCH_ENGINE 可以覆盖其行为。未设置 FIRECRAWL_API_KEY 时,Firecrawl 会尝试无密钥请求;如果请求被拒,或者 DuckDuckGo/Startpage 遇到机器人验证,系统就会转到链中的下一个后端。

结果重排使用已配置的重排配置项([models.rerank]——默认通过 OpenRouter 使用云端服务,或在没有密钥时使用本地 ONNX);同一回退链也用于网页搜索、研究、相似页面搜索、Agent 搜索,以及文档发现/索引回退。SearXNG 在研究场景中保留科学类别筛选;其他服务商则使用各自的搜索功能。托管用户在自己的中继记录中配置回退链和密钥。空的托管记录不会继承运营方的服务商密钥或本地 SearXNG URL;单用户 stdio 仍使用环境变量/设置,并保留公开的本地路径。 浏览器渲染后端——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,以保留现有部署行为;如果运维人员要求执行 robots 规则,请明确配置此进程级策略。

隐身层级 + 预置身份(可选启用)——在 BROWSER_BACKENDS 中追加 invisible,可在升级链末尾添加一个隐身 Firefox 引擎层级(n24q02m-hull[invisible] 附加项:pip install "wet-mcp[invisible]")。整个链共用一个一致的浏览器身份:使用 WET_IDENTITY_SEED 为其设定种子(或由 wet 生成一次,并将其持久化到 ~/.wet/subs/<sub>/identity.json),同时安装 wet[identity] 附加项。若未安装这些附加项,链会保持旧版行为(仅警告一次)。STEALTHFOX_BINARY 用于指定已打补丁的 Firefox 版本,以跳过引擎下载;IDENTITY_PROFILE_DIR(默认值为 ~/.wet/subs/<sub>/profiles)用于按命名空间保存持久化的浏览器配置文件。

禁用本地回退——可按能力选择退出占用资源较多的进程内本地回退(例如,在仅通过云后端进行渲染、搜索和嵌入的精简容器中):DISABLE_LOCAL_BROWSER、DISABLE_LOCAL_SEARCH、DISABLE_LOCAL_EMBED、DISABLE_LOCAL_RERANK。

文档同步——SYNC_ENABLED(默认值为 true)、GOOGLE_DRIVE_CLIENT_ID(同步必需)、SYNC_FOLDER(默认值为 wet)、SYNC_INTERVAL(默认值为 300s)。同步通过 OAuth Device Code 流程使用 Google Drive(无需浏览器重定向)。 DOCS_DB_BACKEND=cf-d1 会禁用 GDrive/S3 文件同步,包括自动启动、中继向导和设备代码设置,即使仍保留旧版同步设置也是如此。非 CF SQLite 部署仍可使用 GDrive 同步;SYNC_S3_BUCKET 用于改用 S3,而 SYNC_ENABLED=false 会同时禁用两者。

HTTP 自托管——MCP_TRANSPORT=http、PUBLIC_URL=<your-domain>。设置表单由 MCP_RELAY_PASSWORD 控制访问;多用户部署还需要 CREDENTIAL_SECRET(每用户的保险库密钥)、MCP_JWT_SIGNING_SECRET(可轮换的 OAuth JWT 密钥)和 MCP_DCR_SERVER_SECRET。

stdio 配置示例(一个 OpenRouter 密钥即可为所有提供商单元供能):

{
  "mcpServers": {
    "wet": {
      "command": "uvx",
      "args": ["wet-mcp"],
      "env": {
        "OPENROUTER_API_KEY": "sk-or-xxx"
      }
    }
  }
}

如需为不同任务使用不同的端点或模型,请编辑 ~/.wet/config.toml 中的 [models.*] 单元,或在启动时注入 HULL_EMBED_API_KEY / HULL_RERANK_API_KEY / HULL_CHAT_API_KEY / HULL_JEV_SCORE_API_KEY,而不是将密钥存储在文件中。

状态

采用稳定架构,支持两种传输方式:stdio(默认,本地)和 HTTP(自托管,由 OAuth 控制访问)。没有守护进程桥接层,也不会从 stdio 自动启动。media.analyze 操作已在 v2.0.0 BREAKING 版本中移除——升级说明请参阅 docs/migration.md。当前发布系列:v3.x。

文档

完整文档见 mcp.n24q02m.com/servers/wet/setup/:

  • 安装 -- Claude Code、Codex、Gemini CLI、Cursor、Windsurf、mcp.json 的安装方法
  • 模式概览 -- stdio / local-relay / remote-relay / remote-oauth
  • 多用户设置 -- 基于 JWT 的 sub 声明的凭证模型

仓库内参考资料(Spec F 的唯一事实来源:设置文档位于 claude-plugins/plugins/wet/):

  • docs/ARCHITECTURE.md -- web-core ScrapingAgent 集成、策略链、存储布局、LLM 提供商分发
  • docs/BENCHMARKS.md -- v1.x 基准覆盖范围 / 延迟占位符 + tier-1 fixture 指标

使用 AI Agent 安装 -- 将以下内容粘贴给你的 AI 编码 Agent:

按照以下步骤安装 MCP 服务 wet: https://raw.githubusercontent.com/n24q02m/claude-plugins/main/plugins/wet/setup-with-agent.md

工具

6 个 MCP 工具(3 个领域工具 + config + help + config__open_relay)。旧版 setup 工具已合并到 config 操作分发中。

工具描述
search网页(SearXNG 元搜索)、新闻、图片、学术研究(Scholar / arXiv / PubMed / CrossRef / Semantic Scholar / BASE)、库文档(HyDE + FTS5)、查找相似页面。包含 docs_resolve(库名称 -> 排序后的 ID)、docs_query(感知版本 + 主题 + 5000-token 上限)、docs_lock_project(通过 pyproject / package.json / go.mod / Cargo.toml 清单检测,固定 Cabinets 项目)。
extractURL -> 智能分块字典(clean_text + markdown + structured_data + code_blocks + metadata),通过 web-core 5 策略链处理。批量处理(最多 50 个 URL)、深度爬取、站点映射、本地文件转换(PDF/DOCX/XLSX/PPTX/EPUB)、结构化提取(JSON Schema)
medialist(从图库页面发现 URL)、download(防 SSRF)。analyze 已在 v2.0.0 中移除 -- 请改用 imagine-mcp.understand
configstatus、set、cache_clear、docs_reindex、warmup、setup_sync、setup_status、setup_skip、setup_reset、setup_complete
help各工具文档:search、extract、media、config
config__open_relay重新触发零配置中继设置流程(为浏览器表单输出新的中继 URL)。通过 mcp-core 的 register_open_relay_tool 注册,让 LLM 无需手动重启即可重新开始设置。

媒体处理边界:对于视觉 / 音频理解(图片描述生成、 OCR、音频转录、视频摘要),请使用 imagine-mcp。media.analyze 已在 wet v2.0.0 中移除 -- 请改用 imagine-mcp.understand。

命令行

此软件包会安装两个控制台脚本:wet(主要脚本)和 wet-mcp (为兼容现有 uvx wet-mcp 配置而保留的旧版别名)。直接调用 (或使用任何以连字符开头的标志)会启动服务;以位置参数开头的调用 会作为子命令分发。

uvx --from wet-mcp wet warmup   # try a subcommand without a persistent install

wet                             # start the server over stdio (default transport)
wet --http                      # start the server over Streamable HTTP (self-host mode)

wet auth google                 # authorize the Google credential provider for Drive sync
wet logout                      # clear the local Google Drive sync token
wet warmup                      # pre-download local models + run auto-setup (SearXNG, browser) to avoid first-run delays
wet docs reindex <library>      # drop the cached docs index for <library>; the next docs search re-indexes it

auth google 可通过 --client-id 和 --client-secret 使用自带的 OAuth 客户端(仅限单用户 / 本地机器;令牌会写入 本地存储)。每个子命令都会输出 JSON 结果并退出。

功能wetBrave SearchTavilyFirecrawlContext7
网页搜索是(SearXNG 聚合)是是否否
提取 URL 内容是(5 策略链)否是(基础功能)是否
媒体列表 / 下载是否否否否
库文档搜索是(Tier 1 精选 + Tier 2 按需,感知版本,Cabinets)否否否是
学术研究是(6 个提供商)否否否否
可自托管是否否否是
免费层级是(开源)有限有限有限是

安全性

  • 防止 SSRF——对爬取目标进行 URL 验证
  • 优雅降级——云端 → 本地嵌入,多层级爬取
  • 错误信息清理——错误消息中不包含凭据
  • 文件转换沙箱隔离——可选的 CONVERT_ALLOWED_DIRS 限制

从源代码构建

git clone https://github.com/n24q02m/wet.git
cd wet
uv sync
uv run wet

部署到 Cloudflare

部署到 Cloudflare

在 Cloudflare 上以无服务器方式运行自己的单用户 wet 实例(Containers + D1 + Vectorize + KV)。

前提条件: Cloudflare 账户需使用 Workers Paid 计划——Containers、D1 和 Vectorize 均需此计划(Cloudflare 免费套餐不包含这些服务)——并安装 wrangler CLI。

  1. git clone https://github.com/n24q02m/wet && cd wet
  2. wrangler login
  3. 配置资源并应用 D1 架构:
    wrangler d1 create wet-docs
    wrangler d1 execute wet-docs --file migrations/0001_init_wet.sql --remote
    wrangler d1 execute wet-docs --file migrations/0002_project_context.sql --remote
    wrangler d1 execute wet-docs --file migrations/0003_version_index_state.sql --remote
    wrangler vectorize create wet-docs-vectors --dimensions 768 --metric cosine
    wrangler kv namespace create wet-kv
    
    将返回的 ID 粘贴到 wrangler.jsonc 中。
  4. 从此检出版本构建精简版 HTTP 镜像,并直接推送到 Cloudflare 的托管注册表(CF Containers 无法从外部 注册表拉取镜像):
    docker build --target http --build-arg SLIM=1 -t wet:beta .
    wrangler containers push wet:beta   # prints registry.cloudflare.com/<ACCOUNT_ID>/wet:beta
    
  5. 设置操作员身份验证/存储和 Browser Run 密钥:
    wrangler secret put CREDENTIAL_SECRET
    wrangler secret put MCP_JWT_SIGNING_SECRET
    wrangler secret put MCP_RELAY_PASSWORD
    wrangler secret put MCP_DCR_SERVER_SECRET
    wrangler secret put CF_BROWSER_RENDERING_TOKEN
    
  6. 执行 wrangler deploy,然后在 Worker 域名下的浏览器中继表单中完成设置。

存储通过 MCP_STORAGE_BACKEND=cf-kv(凭据/令牌,加密)、 DOCS_DB_BACKEND=cf-d1(文档 + BM25 全文检索)和 Vectorize(嵌入)映射到 Cloudflare。默认的无头渲染器为 BROWSER_BACKENDS=cf-browser-rendering。精简镜像中已禁用本地 ONNX 回退;请通过每个已验证身份主题的中继记录配置搜索和云端 检索。Worker 级别的搜索/模型链和提供商密钥不会转发到容器。

config.toml 中每个任务对应的 [models.*] 配置项用于配置云端 嵌入/重排/聊天:将每项的 base_url 指向任意兼容 OpenAI 的端点——默认使用 OpenRouter——并通过该项的 api_key 或对应的 HULL_<TASK>_API_KEY 环境变量提供密钥。对于所有保留 OpenRouter 默认 base_url 的配置项,只需使用一个 OPENROUTER_API_KEY。 将带密钥的搜索提供商凭据(例如 TAVILY_API_KEY)存储在同一主题记录中。请为所选嵌入模型支持的维度配置 Vectorize 和 EMBEDDING_DIMS。

部署(维护中的实例)

每个带标签的版本都会自动部署(仅当 CF_DEPLOY_ENABLED 开关开启时——请参阅下方的暂停说明):CD 的 deploy-cf 作业会检出 已发布的标签,构建 http-slim 镜像,将其作为不可变的 :<release-tag> 推送到 Cloudflare 托管的 注册表,部署 Worker,并通过金丝雀健康检查——线上运行的版本与其自身版本完全一致。Beta 分发会重新部署 beta;稳定版分发需经维护者批准。禁止对维护中的实例手动运行 wrangler deploy:这会破坏 版本标签与线上镜像之间的对应关系。在自己的 Cloudflare 账户上自托管(使用上方按钮)不受影响。

已于 2026-09-13 暂停: 账户中的 CF 部署令牌因不符合清单要求(违反流程)而被移除,因此 deploy-cf 现在会在 CF_DEPLOY_ENABLED 仓库变量关闭时跳过操作。维护中的实例将保持冻结状态,继续运行最后一次部署的版本,直到按照文档说明的流程重新建立令牌并将变量设为 true。

Smithery

wet 提供 smithery.yaml,因此可以通过 Smithery 安装和运行。清单声明了 stdio 启动 命令(uvx --python 3.13 wet-mcp),配置架构为空——启动无需配置,提供商和凭据可在运行时通过服务自身的配置流程进行设置(请参阅配置)。

信任模型

此插件实现 TC-Local(绑定到机器,单一信任主体)。完整分类请参见 mcp-core 信任模型。

模式存储加密谁可以读取你的数据?
stdio(默认)~/.wet/config.jsonAES-GCM,绑定到机器的密钥仅你的操作系统用户(文件权限 0600)
HTTP 自托管与 stdio 相同相同仅你(管理员 = 用户)

许可证

Apache-2.0 -- 参见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。