wet-mcp

Pesquisa na web, extração de conteúdo e download de mídia

Documentação

WET - Servidor MCP Web Extended Toolkit

Renomeado (2026-09-13): o repositório agora é wet — prioridade CLI (comando wet). O pacote PyPI continua sendo wet (a política do PyPI bloqueia novo projeto wet); o servidor MCP é uma superfície secundária: execute wet sem subcomando.

mcp-name: io.github.n24q02m/wet

Renomeado: o repositório, a CLI e o módulo Python agora são wet. A distribuição PyPI continua sendo wet-mcp (instale pip install wet-mcp / uvx wet-mcp). O servidor MCP permanece disponível: execute wet sem subcomando (somente o comando = passagem MCP); o alias de console legado wet-mcp ainda funciona.

Servidor MCP de código aberto para agentes de IA: busca na web, extração de conteúdo e documentação de bibliotecas.

FaseStatusEscopo
Fase 1LançadaMigração do ScrapingAgent web-core, saída de chunks inteligentes, refinamento de busca, mídia enxuta
Fase 2LançadaBusca de documentação no nível Context7: índice de bibliotecas (Nível 1 + Nível 2), consultas com reconhecimento de versão e limite de tokens, bloqueio de projeto (Cabinets)
Fase 3Lançadaextract.agent pesquisa multi-etapas com síntese citada, extract.interact clique/preenchimento/envio via patchright (persistência de sessão opcional), migração docs_004_chunk_summaries, media.analyze removido (v2.0.0)

Versão atual: v3.x. media(action="analyze") foi removido na versão v2.0.0 BREAKING. Use imagine-mcp's ação understand para análise de visão/áudio/vídeo. Consulte docs/migration.md para a receita de atualização.

Mode CI codecov PyPI License: Apache-2.0

Python SearXNG MCP semantic-release Renovate

Projetos irmãos de n24q02m (clique para expandir)
ProjetoTaglineTag
agent-chat-pluginAgentes de IA pares conversam em uma pasta compartilhada — sem retransmissão humana, sem orquestrador, tra...Ferramentas
crgGrafo de conhecimento para revisões de código eficientes em tokens — busca semântica e chamada...MCP
better-driveSincronização bidirecional do Google Drive com filtro .driveignore — mecanismo rclone, bandeja do WindowsFerramentas
better-email-mcpE-mail IMAP/SMTP para agentes de IA — ler, enviar, organizar pastas e gerenciar anex...MCP
better-godot-mcpServidor MCP composto para Godot Engine — 17 ferramentas compostas para jogos assistidos por IA...MCP
better-notion-mcpNotion com prioridade Markdown para agentes de IA — páginas, bancos de dados, blocos e comentários...MCP
better-semantic-releaseFork drop-in do python-semantic-release com proteções de segurança de lançamento integradas (orp...)Ferramentas
better-telegram-mcpTelegram para agentes de IA — mensagens, chats, mídia e contatos em ambos os bo...MCP
better-workspace-mcpServidor MCP do Google Workspace (Docs/Drive/Calendar/Gmail/Sheets/Slides/Tasks/Ch...)MCP
claude-pluginsMarketplace de plugins do Claude Code para os servidores MCP n24q02m — instale busca na web...Marketplace
imagine-mcpCompreensão e geração de imagens e vídeos para agentes de IA — em Gemini, Op...MCP
jules-task-archiverExtensão do Chrome para operações em lote em tarefas do Jules via API batchexecute — a...Ferramentas
mcp-coreFundação compartilhada para construir servidores MCP — transporte HTTP Streamable, OAut...MCP
mnemoMemória persistente de IA com busca híbrida e sincronização incorporada. Aberto, gratuito, ilimit...MCP
fastretrievalRuntime de incorporação e reclassificação multi-modelo via ONNX e GGUFBiblioteca
skretSegredos sem o servidor.CLI
tacetUma cascata neuro-simbólica autodestiladora que amortiza o custo de LLM em conhecimento...Ferramentas
web-corePacote de infraestrutura web compartilhado para busca, scraping, segurança HTTP e st...Biblioteca
wetServidor MCP de código aberto para agentes de IA: busca na web, extração de conteúdo e lib...MCP

Sumário

WET MCP server

Recursos

  • Busca na web — Metabusca SearXNG incorporada (Google, Bing, DuckDuckGo, Brave) com expansão de consulta, cache TTL (1 h geral / 5 min sensível ao tempo), formato de citação padronizado e limite de 200 tokens por trecho. Backends de busca em nuvem opcionais (Tavily, Brave, Exa, Kagi, OpenRouter, Firecrawl) como cadeia de fallback via SEARCH_BACKENDS
  • Pesquisa acadêmica — Pesquise no Google Scholar, Semantic Scholar, arXiv, PubMed, CrossRef, BASE
  • Documentação de bibliotecas — Descoberta e indexação automáticas de documentação com busca híbrida FTS5, recuperação aprimorada por HyDE e documentação específica por versão
  • Extração de conteúdo — Cadeia de escalonamento de 5 estratégias via n24q02m-web-core ScrapingAgent (basic_http -> tls_spoof -> backends de renderização de BROWSER_BACKENDS (native / browserless / cf-browser-rendering) -> captcha opcional com chave), ponte markitdown para fallback de HTML/MD de baixo nível, saída estruturada de chunks inteligentes (texto limpo + markdown + JSON-LD + blocos de código + metadados), processamento em lote (até 50 URLs), rastreamento profundo, mapeamento de sites
  • Conversão de arquivos locais — Converta PDF, DOCX, XLSX, CSV, HTML, EPUB, PPTX para Markdown
  • Mídia — Listar + baixar arquivos de imagens / vídeos / áudio. analyze foi removido na v2.0.0 — use imagine-mcp.understand para inferência de visão/áudio
  • Anti-bot — Estratégias furtivas contornam Cloudflare, Medium, LinkedIn, Twitter
  • Zero Configuração — Incorporação de referência local integrada + reclassificação via fastretrieval, sem necessidade de chaves de API. Modelos de nuvem opcionais configurados por tarefa via células [models.embed|rerank|chat|jev_score] em ~/.wet/config.toml (padrão OpenRouter; um OPENROUTER_API_KEY atende a todas as células)
  • Sincronização — Sincronização entre máquinas de documentos indexados via Google Drive (Código de Dispositivo OAuth, sem redirecionamento de navegador)

Instalação rápida

# 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

Matriz de instalação (stdio, salvo indicação em contrário; consulte a página Configuração para etapas completas):

ClienteInstalação
Claude Code (plugin)/plugin marketplace add n24q02m/claude-plugins e depois /plugin install wet@n24q02m-plugins
Claude Code (stdio)claude mcp add wet -- uvx wet-mcp
Codexregistre o comando stdio uvx wet-mcp em mcp_servers no ~/.codex/config.toml
Gemini CLIadicione o JSON mcpServers abaixo em ~/.gemini/settings.json
Cursor / Windsurfadicione o JSON mcpServers abaixo via configurações MCP do cliente (mcp.json)
Qualquer cliente (HTTP auto-hospedado)aponte o cliente para https://<your-host>/mcp (HTTP Streamable, protegido por OAuth)

A publicação pública de imagens OCI foi descontinuada. As tags históricas existentes do registro permanecem intactas; novas implantações de contêineres compilam a partir do código-fonte ou usam o registro gerenciado pelo Cloudflare.

O endpoint HTTP fala HTTP Streamable e é protegido por OAuth — seu cliente é solicitado a autenticar no navegador na primeira conexão (sem necessidade de colar chave de API). Implante um via Método 3 ou na seção Implantar no Cloudflare.

Matrizes de configuração completas estão no site de documentação canônico mcp.n24q02m.com/servers/wet/setup/ e os trechos para colar no agente em claude-plugins/plugins/wet/setup-with-agent.md (conforme Spec F, fonte única de verdade).

Uso com auto-hospedagem

Duas maneiras suportadas de executar o servidor HTTP sempre em escuta. Em ambas, o endpoint MCP é http://127.0.0.1:8000/mcp (HTTP Streamable) e a raiz de configuração é ~/.wet/ (config.toml, docs.db, subs/). Nunca execute o servidor como um subprocesso gerado por um cliente — registre o endpoint no seu cliente.

Desenvolvimento (uv, loopback sem autenticação)

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 recusa binds fora do loopback — o servidor é somente localhost até você alternar para autenticação por token.

Sempre ativo (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

O Compose publica 127.0.0.1:${WET_PORT:-8000} → contêiner 8000 (somente loopback) e monta docker-config/config.toml somente leitura em /home/appuser/.wet/config.toml. Dados persistentes (docs.db, subs/) ficam no volume nomeado wet-home; o diretório de download/cache em wet-data. Editar a configuração tem efeito em docker compose restart.

Consumidores

# 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

Configuração: modelos locais vs. nuvem

As células [models.embed|rerank|chat|jev_score] em ~/.wet/config.toml são por tarefa (cada uma com seu próprio base_url + api_key + model, especificação OpenAI). O exemplo inclui exemplos do OpenRouter; qualquer endpoint compatível com OpenAI funciona — nuvem ou um servidor local como Ollama (base_url = "http://host.docker.internal:11434/v1" do contêiner). As chaves no arquivo são material somente do host; alternativamente, deixe api_key = "" e injete na inicialização via HULL_EMBED_API_KEY / HULL_RERANK_API_KEY / HULL_CHAT_API_KEY / HULL_JEV_SCORE_API_KEY.

Configuração

wet funciona com zero configuração imediatamente: a busca na web usa um SearXNG local incorporado, e a incorporação/reclassificação recorre aos modelos ONNX locais incluídos via fastretrieval quando nenhuma chave de nuvem está definida. Para resultados de maior qualidade, configure as células de provedor por tarefa em ~/.wet/config.toml. As configurações operacionais são variáveis de ambiente simples (sem prefixo de aplicativo) — no modo auto-hospedado HTTP, elas são inseridas pelo formulário de configuração do navegador.

Células de provedor — [models.embed|rerank|chat|jev_score] cada uma aceita seu próprio base_url + api_key + model (especificação OpenAI). OpenRouter é o padrão pré-configurado para cada célula; qualquer endpoint compatível com OpenAI funciona. As chaves das células podem ser deixadas vazias no arquivo e injetadas na inicialização via HULL_EMBED_API_KEY / HULL_RERANK_API_KEY / HULL_CHAT_API_KEY / HULL_JEV_SCORE_API_KEY. Quando uma célula mantém o padrão OpenRouter base_url, OPENROUTER_API_KEY no ambiente a atende como credencial de último recurso — uma chave OpenRouter pode alimentar todas as tarefas. Células de incorporação/reclassificação vazias recorrem aos modelos ONNX locais; uma célula de chat sem chave desativa recursos de LLM (por exemplo, extract(action="agent")).

FASTRETRIEVAL_CACHE_PATH controla o cache de modelos locais.

Backends de busca — SEARCH_BACKENDS é uma cadeia de fallback em tempo de execução ordenada: searxng (padrão, local ou externo via SEARXNG_URL), com chave tavily / brave / exa / kagi / openrouter, firecrawl com chave opcional e duckduckgo / startpage sem credenciais. Provedores com chave usam TAVILY_API_KEY, BRAVE_API_KEY, EXA_API_KEY, KAGI_API_KEY ou OPENROUTER_API_KEY (separados por vírgula para rotação). O backend openrouter executa a consulta por meio de uma conclusão de chat com a ferramenta de servidor openrouter:web_search e mapeia as anotações url_citation retornadas para a forma de resultado compartilhada; OPENROUTER_MODEL (padrão um modelo de nível gratuito), OPENROUTER_BASE_URL e OPENROUTER_SEARCH_ENGINE substituem seu comportamento. O Firecrawl tenta uma solicitação sem chave quando FIRECRAWL_API_KEY está ausente; rejeição ou um desafio de bot DuckDuckGo/Startpage avança a cadeia. O re-ranking de resultados usa a célula de re-rank configurada ([models.rerank] — nuvem via OpenRouter por padrão, ou ONNX local quando sem chave); a mesma cadeia serve busca web, pesquisa, busca de páginas similares, busca de agente e fallbacks de descoberta/indexação de docs. O SearXNG mantém seu filtro de categoria de ciência para pesquisa; outros provedores usam suas próprias capacidades de busca. Usuários hospedados configuram a cadeia e as chaves em seu próprio registro de relay. Um registro hospedado vazio nunca herda a chave de provedor do operador ou a URL local do SearXNG; stdio de usuário único ainda usa env/settings e preserva o caminho público local.

Backends de renderização de navegador -- BROWSER_BACKENDS (CSV, cadeia de escalonamento) escolhe a etapa de renderização headless de extract: native (chromium em processo, o padrão de zero configuração), browserless (serviço de render auto-hospedado — defina BROWSERLESS_URL + BROWSERLESS_TOKEN) e cf-browser-rendering (Cloudflare Browser Rendering — defina CF_ACCOUNT_ID + CF_BROWSER_RENDERING_TOKEN). Cadeia vazia cai para native. Defina CAPSOLVER_API_KEY para anexar uma camada CAPTCHA opcional, protegida por chave, como a última etapa de escalonamento.

Política de robots -- defina RESPECT_ROBOTS_TXT=true para aplicar robots.txt em toda a cadeia de estratégia extract e nas ações crawl, sitemap e list_media baseadas em Crawl4AI. O padrão é false para preservar o comportamento de implantação existente; configure esta política de nível de processo explicitamente quando o operador exigir a aplicação de robots.

Camada invisível + identidade semeada (opt-in) -- anexe invisible a BROWSER_BACKENDS para adicionar uma camada de mecanismo stealth-Firefox como a última etapa de escalonamento (extra hull-core[invisible]: pip install "wet-mcp[invisible]"). Uma identidade de navegador coerente abrange toda a cadeia: semeie-a com WET_IDENTITY_SEED (ou deixe o wet derivar uma vez e persistir sob ~/.wet/subs/<sub>/identity.json) e instale o extra wet[identity]. Sem os extras, a cadeia mantém o comportamento legado (aviso único). STEALTHFOX_BINARY aponta para uma compilação Firefox corrigida para pular o download do mecanismo; IDENTITY_PROFILE_DIR (padrão ~/.wet/subs/<sub>/profiles) mantém perfis de navegador persistentes por namespace.

Desabilitar fallbacks locais -- opte por não usar os fallbacks locais pesados em processo por capacidade (por exemplo, em um contêiner enxuto que renderiza/busca/incorpora apenas via backends de nuvem): DISABLE_LOCAL_BROWSER, DISABLE_LOCAL_SEARCH, DISABLE_LOCAL_EMBED, DISABLE_LOCAL_RERANK.

Sincronização de docs -- SYNC_ENABLED (padrão true), GOOGLE_DRIVE_CLIENT_ID (obrigatório para sincronização), SYNC_FOLDER (padrão wet), SYNC_INTERVAL (padrão 300s). A sincronização usa o Google Drive pelo fluxo OAuth Device Code (sem redirecionamento de navegador). DOCS_DB_BACKEND=cf-d1 desabilita a sincronização de arquivos GDrive/S3, incluindo inicialização automática, assistente de relay e configuração de device-code, mesmo que configurações de sincronização legadas permaneçam. Implantações SQLite não-CF mantêm a sincronização GDrive; SYNC_S3_BUCKET seleciona S3 em vez disso, e SYNC_ENABLED=false desabilita ambos.

Auto-hospedagem HTTP -- MCP_TRANSPORT=http, PUBLIC_URL=<your-domain>. O formulário de configuração é protegido por MCP_RELAY_PASSWORD; implantações multiusuário exigem CREDENTIAL_SECRET (chave de cofre por usuário), MCP_JWT_SIGNING_SECRET (chave OAuth JWT rotacionável) e MCP_DCR_SERVER_SECRET.

Exemplo de configuração stdio (uma chave OpenRouter alimenta cada célula de provedor):

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

Para usar um endpoint ou modelo diferente por tarefa, edite as células [models.*] em ~/.wet/config.toml, ou injete HULL_EMBED_API_KEY / HULL_RERANK_API_KEY / HULL_CHAT_API_KEY / HULL_JEV_SCORE_API_KEY na inicialização em vez de armazenar chaves no arquivo.

Status

Arquitetura estável com dois transportes: stdio (padrão, local) e HTTP (auto-hospedado, protegido por OAuth). Sem camada de bridge daemon e sem auto-spawn a partir do stdio. A ação media.analyze foi removida na versão BREAKING v2.0.0 — veja docs/migration.md para a receita de atualização. Linha de versão atual: v3.x.

Documentação

Documentação completa em mcp.n24q02m.com/servers/wet/setup/:

Referências no repositório (fonte única de verdade da Spec F: docs de setup vivem em claude-plugins/plugins/wet/):

  • docs/ARCHITECTURE.md — integração web-core ScrapingAgent, cadeia de estratégia, layout de armazenamento, despacho de provedor LLM
  • docs/BENCHMARKS.md — cobertura de linha de base v1.x / placeholders de latência + métricas de fixture de nível 1

Instalar com agente de IA — cole isto no seu agente de codificação de IA:

Instale o servidor MCP wet seguindo os passos em https://raw.githubusercontent.com/n24q02m/claude-plugins/main/plugins/wet/setup-with-agent.md

Ferramentas

6 ferramentas MCP (3 de domínio + config + help + config__open_relay). A ferramenta legada setup foi mesclada no despacho de ação config.

FerramentaDescrição
searchWeb (metapesquisa SearXNG), notícias, imagens, pesquisa acadêmica (Scholar / arXiv / PubMed / CrossRef / Semantic Scholar / BASE), docs de biblioteca (HyDE + FTS5), encontrar páginas similares. Inclui docs_resolve (nome da biblioteca -> id classificado), docs_query (ciente de versão + tópico + limite de 5000 tokens), docs_lock_project (fixação de projeto Cabinets via detecção de manifesto pyproject / package.json / go.mod / Cargo.toml).
extractURL -> dicionário de chunks inteligentes (clean_text + markdown + structured_data + code_blocks + metadata) via cadeia de 5 estratégias web-core. Processamento em lote (até 50 URLs), rastreamento profundo, mapeamento de site, conversão de arquivos locais (PDF/DOCX/XLSX/PPTX/EPUB), extração estruturada (JSON Schema)
medialist (descobrir URLs de páginas de galeria), download (seguro contra SSRF). analyze foi removido na v2.0.0 — use imagine-mcp.understand em vez disso
configstatus, set, cache_clear, docs_reindex, warmup, setup_sync, setup_status, setup_skip, setup_reset, setup_complete
helpDocumentação por ferramenta: search, extract, media, config
config__open_relayRe-dispara o fluxo de configuração de relay zero-config (imprime uma nova URL de relay para o formulário do navegador). Registrado via mcp-core's register_open_relay_tool para que um LLM possa reiniciar a configuração sem reinicialização manual.

Limite de mídia: Para compreensão de visão / áudio (legenda de imagem, OCR, transcrição de áudio, resumo de vídeo), use imagine-mcp. media.analyze foi removido no wet v2.0.0 — use imagine-mcp.understand em vez disso.

CLI

O pacote instala dois scripts de console: wet (principal) e wet-mcp (alias legado mantido para que as configurações uvx wet-mcp existentes continuem funcionando). Uma invocação simples (ou qualquer flag com hífen inicial) inicia o servidor; um argumento posicional inicial é despachado como um subcomando.

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 aceita um cliente OAuth opcional trazido pelo usuário via --client-id e --client-secret (usuário único / máquina local apenas; o token é gravado no armazenamento local). Cada subcomando imprime um resultado JSON e sai.

CapacidadewetBrave SearchTavilyFirecrawlContext7
Busca webSim (agregação SearXNG)SimSimNãoNão
Extrair URLSim (cadeia de 5 estratégias)NãoSim (básico)SimNão
Listar / baixar mídiaSimNãoNãoNãoNão
Busca de docs de bibliotecaSim (Nível 1 curado + Nível 2 sob demanda, ciente de versão, Cabinets)NãoNãoNãoSim
Pesquisa acadêmicaSim (6 provedores)NãoNãoNãoNão
Auto-hospedávelSimNãoNãoNãoSim
Nível gratuitoSim (código aberto)LimitadoLimitadoLimitadoSim

Segurança

  • Prevenção de SSRF — validação de URL em alvos de rastreamento
  • Fallbacks graciosos — Cloud → Incorporação local, rastreamento em múltiplas camadas
  • Sanitização de erros — Sem credenciais em mensagens de erro
  • Sandbox de conversão de arquivos — Restrição opcional CONVERT_ALLOWED_DIRS

Compilar a partir do código-fonte

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

Implantar no Cloudflare

Deploy to Cloudflare

Execute sua própria instância wet de usuário único sem servidor no Cloudflare (Containers + D1 + Vectorize + KV).

Pré-requisitos: uma conta Cloudflare no plano Workers Paid — obrigatório para Containers, D1 e Vectorize (o nível gratuito do Cloudflare não os inclui) — e o CLI wrangler.

  1. git clone https://github.com/n24q02m/wet && cd wet
  2. wrangler login
  3. Provisione recursos e aplique o esquema 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
    
    Cole os IDs retornados em wrangler.jsonc.
  4. Compile a imagem HTTP enxuta a partir deste checkout e envie-a diretamente para o registro gerenciado do Cloudflare (CF Containers não pode puxar de registros externos):
    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. Defina os segredos de auth/armazenamento do operador e 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 e conclua a configuração no formulário de relay do navegador no domínio do seu Worker.

O armazenamento mapeia para o Cloudflare via MCP_STORAGE_BACKEND=cf-kv (credenciais/tokens, criptografados), DOCS_DB_BACKEND=cf-d1 (docs + texto completo BM25) e Vectorize (embeddings). O renderizador headless padrão é BROWSER_BACKENDS=cf-browser-rendering. Fallbacks ONNX locais são desabilitados na imagem enxuta; configure busca e recuperação em nuvem através do registro de relay de cada sujeito autenticado. Cadeias de busca/modelo e chaves de provedor em todo o Worker não são encaminhadas para o contêiner.

As células [models.*] por tarefa (em config.toml) configuram embed/rerank/chat em nuvem: aponte o base_url de cada célula para qualquer endpoint compatível com OpenAI — OpenRouter é o padrão — e forneça a chave via api_key da célula ou o env HULL_<TASK>_API_KEY correspondente. Um OPENROUTER_API_KEY atende a cada célula que mantém o padrão OpenRouter base_url. Armazene credenciais de provedor de busca com chave (como TAVILY_API_KEY) no mesmo registro de sujeito. Provisione Vectorize e EMBEDDING_DIMS para uma dimensão suportada pelo modelo de embedding selecionado.

Implantação (instância mantida)

Cada release marcado é implantado automaticamente (apenas enquanto o gate CF_DEPLOY_ENABLED estiver ativo — veja a nota de pausa abaixo): o job de CD deploy-cf verifica o tag do release, compila a imagem http-slim, envia-a para o registro gerenciado pelo Cloudflare como :<release-tag> imutável, implanta o Worker e faz gate em uma verificação de saúde canary — um release está ativo exatamente na sua própria versão. Um dispatch beta reimplanta o beta; um dispatch estável é controlado pelo mantenedor. wrangler deploy manual contra a instância mantida não é permitido: quebraria a correspondência release-tag ↔ imagem-viva. Auto-hospedagem na sua própria conta Cloudflare (o botão acima) não é afetada.

Pausado em 2026-09-13: o token de deploy CF foi removido da conta como fora do manifesto (violação de processo), então deploy-cf agora não faz nada atrás da variável de repositório CF_DEPLOY_ENABLED. A instância mantida permanece congelada em seu último release implantado até que um token seja restabelecido via o processo documentado e a variável seja definida como true.

Smithery

wet inclui um smithery.yaml para que possa ser instalado e executado através do Smithery. O manifesto declara um comando de início stdio (uvx --python 3.13 wet-mcp) com um esquema de configuração vazio — nenhuma configuração é necessária para iniciar, e provedores e credenciais são configurados em tempo de execução via o fluxo de configuração do próprio servidor (veja Configuration).

Modelo de Confiança

Este plugin implementa TC-Local (vinculado à máquina, principal de confiança único). Veja modelo de confiança mcp-core para classificação completa.

ModoArmazenamentoCriptografiaQuem pode ler seus dados?
stdio (padrão)~/.wet/config.jsonAES-GCM, chave vinculada à máquinaApenas seu usuário do SO (permissão de arquivo 0600)
HTTP auto-hospedadoIgual ao stdioIgualApenas você (admin = usuário)

Licença

Apache-2.0 — Veja LICENSE.