wet-mcp

Búsqueda web, extracción de contenido y descarga de medios

Documentación

WET - Servidor MCP de Web Extended Toolkit

Renombrado (2026-09-13): el repositorio ahora es wet — primero CLI (comando wet). El paquete de PyPI sigue siendo wet (la política de PyPI bloquea el nuevo proyecto wet); el servidor MCP es una superficie secundaria: ejecuta wet sin subcomando.

mcp-name: io.github.n24q02m/wet

Renombrado: el repositorio, CLI y módulo de Python ahora son wet. La distribución de PyPI sigue siendo wet-mcp (instala pip install wet-mcp / uvx wet-mcp). El servidor MCP sigue disponible: ejecuta wet sin subcomando (solo = paso MCP); el alias de consola heredado wet-mcp sigue funcionando.

Servidor MCP de código abierto para agentes de IA: búsqueda web, extracción de contenido y documentación de bibliotecas.

FaseEstadoAlcance
Fase 1EnviadoMigración de ScrapingAgent de web-core, salida de fragmentos inteligentes, pulido de búsqueda, medios reducidos
Fase 2EnviadoBúsqueda de documentación a nivel de Context7: índice de bibliotecas (Nivel 1 + Nivel 2), consultas conscientes de versión con límite de tokens, bloqueo de proyectos (Cabinets)
Fase 3Enviadoextract.agent investigación multi-paso con síntesis citada, extract.interact clic/rellenar/enviar mediante patchright (persistencia de sesión opcional), migración docs_004_chunk_summaries, media.analyze eliminado (v2.0.0)

Versión actual: v3.x. media(action="analyze") se eliminó en la versión v2.0.0 BREAKING. Usa imagine-mcp's acción understand para análisis de visión/audio/video. Consulta docs/migration.md para la receta de actualización.

Mode CI codecov PyPI License: Apache-2.0

Python SearXNG MCP semantic-release Renovate

Proyectos hermanos de n24q02m (clic para expandir)
ProyectoEsloganEtiqueta
agent-chat-pluginAgentes de IA pares chatean en una carpeta compartida — sin relevo humano, sin orquestador, tra...Herramientas
crgGrafo de conocimiento para revisiones de código eficientes en tokens — búsqueda semántica y llam...MCP
better-driveSincronización bidireccional de Google Drive con filtro .driveignore — motor rclone, bandeja de WindowsHerramientas
better-email-mcpCorreo IMAP/SMTP para agentes de IA — leer, enviar, organizar carpetas y gestionar archivos adj...MCP
better-godot-mcpServidor MCP compuesto para Godot Engine — 17 herramientas compuestas para desarrollo de juegos asistido por IA...MCP
better-notion-mcpNotion primero en Markdown para agentes de IA — páginas, bases de datos, bloques y comentarios...MCP
better-semantic-releaseBifurcación de python-semantic-release con guardas de seguridad de lanzamiento integradas (orp...)Herramientas
better-telegram-mcpTelegram para agentes de IA — mensajes, chats, medios y contactos en ambos bo...MCP
better-workspace-mcpServidor MCP de Google Workspace (Docs/Drive/Calendar/Gmail/Sheets/Slides/Tasks/Ch...)MCP
claude-pluginsMercado de plugins de Claude Code para los servidores MCP de n24q02m — instala búsqueda web...Mercado
imagine-mcpComprensión y generación de imágenes y videos para agentes de IA — en Gemini, Op...MCP
jules-task-archiverExtensión de Chrome para operaciones masivas en tareas de Jules mediante la API batchexecute — a...Herramientas
mcp-coreBase compartida para construir servidores MCP — transporte HTTP Streamable, OAut...MCP
mnemoMemoria persistente de IA con búsqueda híbrida y sincronización integrada. Abierto, gratuito, ilimit...MCP
fastretrievalRuntime de incrustación y reordenamiento multi-modelo mediante ONNX y GGUFBiblioteca
skretSecretos sin el servidor.CLI
tacetUna cascada neuro-simbólica auto-destilante que amortiza el costo de LLM en conocimiento...Herramientas
web-corePaquete de infraestructura web compartida para búsqueda, scraping, seguridad HTTP y st...Biblioteca
wetServidor MCP de código abierto para agentes de IA: búsqueda web, extracción de contenido y lib...MCP

Tabla de contenidos

WET MCP server

Características

  • Búsqueda web -- Metabúsqueda SearXNG integrada (Google, Bing, DuckDuckGo, Brave) con expansión de consultas, caché TTL (1 h general / 5 min sensible al tiempo), formato de citas estandarizado y límite de fragmentos de 200 tokens. Backends de búsqueda en la nube opcionales (Tavily, Brave, Exa, Kagi, OpenRouter, Firecrawl) como cadena de respaldo mediante SEARCH_BACKENDS
  • Investigación académica -- Busca en Google Scholar, Semantic Scholar, arXiv, PubMed, CrossRef, BASE
  • Documentación de bibliotecas -- Descubre e indexa automáticamente documentación con búsqueda híbrida FTS5, recuperación mejorada con HyDE y documentación específica por versión
  • Extracción de contenido -- Cadena de escalada de 5 estrategias mediante n24q02m-web-core ScrapingAgent (basic_http -> tls_spoof -> backends de renderizado de BROWSER_BACKENDS (native / browserless / cf-browser-rendering) -> captcha opcional con clave), puente markitdown para respaldo HTML/MD de bajo nivel, salida estructurada de fragmentos inteligentes (texto limpio + markdown + JSON-LD + bloques de código + metadatos), procesamiento por lotes (hasta 50 URL), rastreo profundo, mapeo de sitios
  • Conversión de archivos locales -- Convierte PDF, DOCX, XLSX, CSV, HTML, EPUB, PPTX a Markdown
  • Medios -- Lista + descarga de archivos de imágenes / videos / audio. analyze se eliminó en v2.0.0 -- usa imagine-mcp.understand para inferencia de visión/audio
  • Anti-bot -- Estrategias sigilosas evaden Cloudflare, Medium, LinkedIn, Twitter
  • Configuración cero -- Incrustación de referencia local integrada + reordenamiento mediante fastretrieval, sin necesidad de claves API. Modelos en la nube opcionales configurados por tarea mediante las celdas [models.embed|rerank|chat|jev_score] en ~/.wet/config.toml (OpenRouter por defecto; una OPENROUTER_API_KEY sirve a cada celda)
  • Sincronización -- Sincronización entre máquinas de documentos indexados mediante Google Drive (Código de dispositivo OAuth, sin redirección de navegador)

Instalación 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 instalación (stdio salvo que se indique; consulta la página de Configuración para los pasos completos):

ClienteInstalación
Claude Code (plugin)/plugin marketplace add n24q02m/claude-plugins luego /plugin install wet@n24q02m-plugins
Claude Code (stdio)claude mcp add wet -- uvx wet-mcp
Codexregistra el comando stdio uvx wet-mcp bajo mcp_servers en ~/.codex/config.toml
Gemini CLIagrega el JSON mcpServers a continuación en ~/.gemini/settings.json
Cursor / Windsurfagrega el JSON mcpServers a continuación mediante la configuración MCP del cliente (mcp.json)
Cualquier cliente (HTTP auto-alojado)apunta el cliente a https://<your-host>/mcp (HTTP Streamable, protegido por OAuth)

La publicación pública de imágenes OCI está descontinuada. Las etiquetas históricas existentes del registro permanecen intactas; las nuevas implementaciones de contenedores compilan desde el código fuente o usan el registro gestionado por Cloudflare.

El endpoint HTTP habla HTTP Streamable y está protegido por OAuth — tu cliente recibe un aviso para autenticarse en el navegador en la primera conexión (sin necesidad de pegar una clave API). Pon uno en marcha mediante el Método 3 o la sección Desplegar en Cloudflare.

Las matrices de configuración completas viven en el sitio de documentación canónico mcp.n24q02m.com/servers/wet/setup/ y los fragmentos para pegar al agente en claude-plugins/plugins/wet/setup-with-agent.md (según la fuente única de verdad de Spec F).

Uso de auto-alojamiento

Dos formas compatibles de ejecutar el servidor HTTP siempre a la escucha. En ambas, el endpoint MCP es http://127.0.0.1:8000/mcp (HTTP Streamable) y la raíz de configuración es ~/.wet/ (config.toml, docs.db, subs/). Nunca ejecutes el servidor como un subproceso generado de un cliente — registra el endpoint en tu cliente en su lugar.

Desarrollo (uv, bucle local sin autenticación)

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 rechaza enlaces que no sean de bucle local — el servidor es solo localhost hasta que cambies a autenticación por token.

Siempre activo (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 publica 127.0.0.1:${WET_PORT:-8000} → contenedor 8000 (solo bucle local) y monta docker-config/config.toml de solo lectura en /home/appuser/.wet/config.toml. Los datos persistentes (docs.db, subs/) viven en el volumen nombrado wet-home; el directorio de descarga/caché en wet-data. Editar la configuración tiene efecto en 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

Configuración: modelos locales vs. en la nube

Las celdas [models.embed|rerank|chat|jev_score] en ~/.wet/config.toml son por tarea (cada una con su propio base_url + api_key + model, especificación OpenAI). El ejemplo incluye ejemplos de OpenRouter; cualquier endpoint compatible con OpenAI funciona — en la nube, o un servidor local como Ollama (base_url = "http://host.docker.internal:11434/v1" desde el contenedor). Las claves en el archivo son material solo de host; alternativamente deja api_key = "" e inyecta al inicio mediante HULL_EMBED_API_KEY / HULL_RERANK_API_KEY / HULL_CHAT_API_KEY / HULL_JEV_SCORE_API_KEY.

Configuración

wet funciona con configuración cero de fábrica: la búsqueda web usa un SearXNG local integrado, y la incrustación/reordenamiento recurren a los modelos ONNX locales incluidos mediante fastretrieval cuando no se establecen claves en la nube. Para resultados de mayor calidad, configura las celdas de proveedor por tarea en ~/.wet/config.toml. Los ajustes operativos son variables de entorno simples (sin prefijo de aplicación) — en el modo de auto-alojamiento HTTP se ingresan mediante el formulario de configuración del navegador en su lugar.

Celdas de proveedor -- [models.embed|rerank|chat|jev_score] cada una toma su propio base_url + api_key + model (especificación OpenAI). OpenRouter es el valor predeterminado preconfigurado para cada celda; cualquier endpoint compatible con OpenAI funciona. Las claves de celda pueden dejarse vacías en el archivo e inyectarse al inicio mediante HULL_EMBED_API_KEY / HULL_RERANK_API_KEY / HULL_CHAT_API_KEY / HULL_JEV_SCORE_API_KEY. Cuando una celda mantiene el valor predeterminado de OpenRouter base_url, OPENROUTER_API_KEY en el entorno la sirve como credencial de último recurso — una clave de OpenRouter puede impulsar cada tarea. Las celdas vacías de incrustación/reordenamiento recurren a los modelos ONNX locales; una celda de chat sin clave desactiva las funciones de LLM (por ejemplo, extract(action="agent")).

FASTRETRIEVAL_CACHE_PATH controla la caché de modelos locales.

Backends de búsqueda -- SEARCH_BACKENDS es una cadena de respaldo en tiempo de ejecución ordenada: searxng (predeterminado, local o externo mediante SEARXNG_URL), con clave tavily / brave / exa / kagi / openrouter, con clave opcional firecrawl, y sin credenciales duckduckgo / startpage. Los proveedores con clave usan TAVILY_API_KEY, BRAVE_API_KEY, EXA_API_KEY, KAGI_API_KEY o OPENROUTER_API_KEY (separados por comas para rotación). El backend openrouter ejecuta la consulta mediante una finalización de chat con la herramienta de servidor openrouter:web_search y mapea las anotaciones url_citation devueltas a la forma de resultado compartida; OPENROUTER_MODEL (predeterminado un modelo de nivel gratuito), OPENROUTER_BASE_URL y OPENROUTER_SEARCH_ENGINE anulan su comportamiento. Firecrawl intenta una solicitud sin clave cuando FIRECRAWL_API_KEY está ausente; el rechazo o un desafío de bot de DuckDuckGo/Startpage avanza la cadena. El reranking de resultados utiliza la celda de rerank configurada ([models.rerank] — en la nube a través de OpenRouter por defecto, o ONNX local cuando no hay clave); la misma cadena sirve para búsqueda web, investigación, búsqueda de páginas similares, búsqueda de agente y respaldos de descubrimiento/indexación de documentación. SearXNG conserva su filtro de categoría científica para investigación; otros proveedores usan sus propias capacidades de búsqueda. Los usuarios alojados configuran la cadena y las claves en su propio registro de relay. Un registro alojado vacío nunca hereda la clave de proveedor del operador ni la URL local de SearXNG; el stdio de un solo usuario aún usa env/configuración y preserva la ruta pública local.

Backends de renderizado de navegador — BROWSER_BACKENDS (CSV, cadena de escalamiento) elige la etapa de renderizado headless de extract: native (chromium en proceso, el predeterminado de cero configuración), browserless (servicio de renderizado autoalojado — configure BROWSERLESS_URL + BROWSERLESS_TOKEN) y cf-browser-rendering (Cloudflare Browser Rendering — configure CF_ACCOUNT_ID + CF_BROWSER_RENDERING_TOKEN). Una cadena vacía cae en native. Configure CAPSOLVER_API_KEY para agregar un nivel CAPTCHA opcional protegido por clave como último paso de escalamiento.

Política de robots — configure RESPECT_ROBOTS_TXT=true para aplicar robots.txt tanto en la cadena de estrategia extract como en las acciones crawl, sitemap y list_media respaldadas por Crawl4AI. El valor predeterminado es false para preservar el comportamiento de despliegue existente; configure esta política a nivel de proceso explícitamente cuando el operador requiera la aplicación de robots.

Nivel invisible + identidad sembrada (opt-in) — agregue invisible a BROWSER_BACKENDS para añadir un nivel de motor Firefox sigiloso como último paso de escalamiento (extra hull-core[invisible]: pip install "wet-mcp[invisible]"). Una identidad de navegador coherente abarca toda la cadena: siémbrela con WET_IDENTITY_SEED (o deje que wet la derive una vez y la persista bajo ~/.wet/subs/<sub>/identity.json) e instale el extra wet[identity]. Sin los extras, la cadena mantiene el comportamiento heredado (advertencia única). STEALTHFOX_BINARY apunta a una compilación de Firefox parcheada para omitir la descarga del motor; IDENTITY_PROFILE_DIR (predeterminado ~/.wet/subs/<sub>/profiles) mantiene perfiles de navegador persistentes por espacio de nombres.

Deshabilitar respaldos locales — opte por no usar los respaldos locales pesados en proceso por capacidad (por ejemplo, en un contenedor delgado que renderiza/busca/incrusta solo a través de backends en la nube): DISABLE_LOCAL_BROWSER, DISABLE_LOCAL_SEARCH, DISABLE_LOCAL_EMBED, DISABLE_LOCAL_RERANK.

Sincronización de documentación — SYNC_ENABLED (predeterminado true), GOOGLE_DRIVE_CLIENT_ID (requerido para sincronizar), SYNC_FOLDER (predeterminado wet), SYNC_INTERVAL (predeterminado 300s). La sincronización usa Google Drive a través del flujo OAuth Device Code (sin redirección de navegador). DOCS_DB_BACKEND=cf-d1 deshabilita la sincronización de archivos GDrive/S3, incluido el inicio automático, el asistente de relay y la configuración de device-code, incluso si quedan configuraciones de sincronización heredadas. Los despliegues SQLite que no son CF conservan la sincronización de GDrive; SYNC_S3_BUCKET selecciona S3 en su lugar, y SYNC_ENABLED=false deshabilita ambos.

Autoalojamiento HTTP — MCP_TRANSPORT=http, PUBLIC_URL=<your-domain>. El formulario de configuración está protegido por MCP_RELAY_PASSWORD; los despliegues multiusuario requieren CREDENTIAL_SECRET (clave de vault por usuario), MCP_JWT_SIGNING_SECRET (clave JWT OAuth rotable) y MCP_DCR_SERVER_SECRET.

Ejemplo de configuración stdio (una clave OpenRouter alimenta cada celda de proveedor):

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

Para usar un endpoint o modelo diferente por tarea, edite las celdas [models.*] en ~/.wet/config.toml, o inyecte HULL_EMBED_API_KEY / HULL_RERANK_API_KEY / HULL_CHAT_API_KEY / HULL_JEV_SCORE_API_KEY al inicio en lugar de almacenar claves en el archivo.

Estado

Arquitectura estable con dos transportes: stdio (predeterminado, local) y HTTP (autoalojado, protegido por OAuth). Sin capa de puente daemon y sin auto-generación desde stdio. La acción media.analyze se eliminó en la versión v2.0.0 BREAKING — consulte docs/migration.md para la receta de actualización. Línea de versión actual: v3.x.

Documentación

Documentación completa en mcp.n24q02m.com/servers/wet/setup/:

Referencias en el repositorio (fuente única de verdad de Spec F: la documentación de configuración vive en claude-plugins/plugins/wet/):

  • docs/ARCHITECTURE.md — integración de ScrapingAgent de web-core, cadena de estrategia, diseño de almacenamiento, despacho de proveedores LLM
  • docs/BENCHMARKS.md — cobertura de línea base v1.x / marcadores de latencia + métricas de fixtures de nivel 1

Instalar con agente de IA — pegue esto a su agente de codificación de IA:

Instale el servidor MCP wet siguiendo los pasos en https://raw.githubusercontent.com/n24q02m/claude-plugins/main/plugins/wet/setup-with-agent.md

Herramientas

6 herramientas MCP (3 de dominio + config + help + config__open_relay). La herramienta heredada setup se fusionó en el despacho de acciones config.

HerramientaDescripción
searchWeb (metabúsqueda SearXNG), noticias, imágenes, investigación académica (Scholar / arXiv / PubMed / CrossRef / Semantic Scholar / BASE), documentación de biblioteca (HyDE + FTS5), encontrar páginas similares. Incluye docs_resolve (nombre de biblioteca -> id clasificado), docs_query (consciente de versión + tema + límite de 5000 tokens), docs_lock_project (fijación de proyecto Cabinets mediante detección de manifiesto pyproject / package.json / go.mod / Cargo.toml).
extractURL -> diccionario de fragmentos inteligentes (clean_text + markdown + structured_data + code_blocks + metadata) a través de la cadena de 5 estrategias de web-core. Procesamiento por lotes (hasta 50 URLs), rastreo profundo, mapeo de sitios, conversión de archivos locales (PDF/DOCX/XLSX/PPTX/EPUB), extracción estructurada (JSON Schema)
medialist (descubrir URLs desde páginas de galería), download (seguro contra SSRF). analyze se eliminó en v2.0.0 — use imagine-mcp.understand en su lugar
configstatus, set, cache_clear, docs_reindex, warmup, setup_sync, setup_status, setup_skip, setup_reset, setup_complete
helpDocumentación por herramienta: search, extract, media, config
config__open_relayRe-disparar el flujo de configuración de relay de cero configuración (imprime una URL de relay nueva para el formulario del navegador). Registrado a través de mcp-core's register_open_relay_tool para que un LLM pueda reiniciar la configuración sin reinicio manual.

Límite de medios: Para comprensión de visión / audio (subtitulado de imágenes, OCR, transcripción de audio, resumen de video), use imagine-mcp. media.analyze se eliminó en wet v2.0.0 — use imagine-mcp.understand en su lugar.

CLI

El paquete instala dos scripts de consola: wet (principal) y wet-mcp (alias heredado conservado para que las configuraciones existentes de uvx wet-mcp sigan funcionando). Una invocación simple (o cualquier bandera con guion inicial) inicia el servidor; un argumento posicional inicial se despacha como 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 acepta un cliente OAuth opcional traído por el usuario a través de --client-id y --client-secret (solo máquina local / un solo usuario; el token se escribe en el almacén local). Cada subcomando imprime un resultado JSON y sale.

CapacidadwetBrave SearchTavilyFirecrawlContext7
Búsqueda webSí (agregación SearXNG)SíSíNoNo
Extraer URLSí (cadena de 5 estrategias)NoSí (básico)SíNo
Lista / descarga de mediosSíNoNoNoNo
Búsqueda de documentación de bibliotecaSí (Nivel 1 curado + Nivel 2 bajo demanda, consciente de versión, Cabinets)NoNoNoSí
Investigación académicaSí (6 proveedores)NoNoNoNo
AutoalojableSíNoNoNoSí
Nivel gratuitoSí (código abierto)LimitadoLimitadoLimitadoSí

Seguridad

  • Prevención de SSRF — validación de URL en objetivos de rastreo
  • Respaldos elegantes — Nube → Incrustación local, rastreo de múltiples niveles
  • Sanitización de errores — Sin credenciales en mensajes de error
  • Aislamiento de conversión de archivos — Restricción opcional de CONVERT_ALLOWED_DIRS

Compilar desde el Código Fuente

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

Desplegar en Cloudflare

Deploy to Cloudflare

Ejecute su propia instancia wet de un solo usuario sin servidor en Cloudflare (Containers + D1 + Vectorize + KV).

Requisitos previos: una cuenta de Cloudflare en el plan Workers Paid — requerido para Containers, D1 y Vectorize (el nivel gratuito de Cloudflare no los incluye) — y el CLI wrangler.

  1. git clone https://github.com/n24q02m/wet && cd wet
  2. wrangler login
  3. Aprovisione recursos y aplique el 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
    
    Pegue los IDs devueltos en wrangler.jsonc.
  4. Compile la imagen HTTP delgada desde este checkout y empújela directamente al registro administrado de Cloudflare (CF Containers no puede extraer 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. Configure los secretos de autenticación/almacenamiento del operador y 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 y complete la configuración en el formulario de relay del navegador en su dominio de Worker.

El almacenamiento se asigna a Cloudflare a través de MCP_STORAGE_BACKEND=cf-kv (credenciales/tokens, cifrados), DOCS_DB_BACKEND=cf-d1 (documentos + texto completo BM25) y Vectorize (incrustaciones). El renderizador headless predeterminado es BROWSER_BACKENDS=cf-browser-rendering. Los respaldos ONNX locales están deshabilitados en la imagen delgada; configure la búsqueda y la recuperación en la nube a través del registro de relay de cada sujeto autenticado. Las cadenas de búsqueda/modelo a nivel de Worker y las claves de proveedor no se reenvían al contenedor.

Las celdas [models.*] por tarea (en config.toml) configuran embed/rerank/chat en la nube: apunte el base_url de cada celda a cualquier endpoint compatible con OpenAI — OpenRouter es el predeterminado — y proporcione la clave a través del api_key de la celda o el env HULL_<TASK>_API_KEY correspondiente. Un OPENROUTER_API_KEY sirve a cada celda que mantiene el predeterminado OpenRouter base_url. Almacene credenciales de proveedores de búsqueda con clave (como TAVILY_API_KEY) en el mismo registro de sujeto. Aprovisione Vectorize y EMBEDDING_DIMS para una dimensión compatible con el modelo de incrustación seleccionado.

Despliegue (instancia mantenida)

Cada versión etiquetada se despliega automáticamente (solo mientras la compuerta CF_DEPLOY_ENABLED esté activada — consulte la nota de pausa a continuación): el trabajo de CD deploy-cf verifica la etiqueta publicada, compila la imagen http-slim, la empuja al registro administrado por Cloudflare como :<release-tag> inmutable, despliega el Worker y se bloquea en una verificación de salud canary — una versión está activa exactamente en su propia versión. Un despacho beta redespliega la beta; un despacho estable está controlado por el mantenedor. El wrangler deploy manual contra la instancia mantenida no está permitido: rompería la correspondencia etiqueta de versión ↔ imagen activa. El autoalojamiento en su propia cuenta de Cloudflare (el botón anterior) no se ve afectado.

Pausado 2026-09-13: el token de despliegue de CF se eliminó de la cuenta como fuera de manifiesto (violación de proceso), por lo que deploy-cf ahora no hace nada detrás de la variable de repositorio CF_DEPLOY_ENABLED. La instancia mantenida permanece congelada en su última versión desplegada hasta que se restablezca un token a través del proceso documentado y la variable se establezca en true.

Smithery

wet incluye un smithery.yaml para que pueda instalarse y ejecutarse a través de Smithery. El manifiesto declara un comando de inicio stdio (uvx --python 3.13 wet-mcp) con un esquema de configuración vacío — no se requiere configuración para iniciar, y los proveedores y credenciales se configuran en tiempo de ejecución a través del flujo de configuración del propio servidor (consulte Configuración).

Modelo de Confianza

Este plugin implementa TC-Local (vinculado a la máquina, principal de confianza único). Consulte modelo de confianza de mcp-core para la clasificación completa.

ModoAlmacenamientoCifrado¿Quién puede leer sus datos?
stdio (predeterminado)~/.wet/config.jsonAES-GCM, clave vinculada a la máquinaSolo su usuario de SO (permiso de archivo 0600)
HTTP autoalojadoIgual que stdioIgualSolo usted (admin = usuario)

Licencia

Apache-2.0 — Consulte LICENSE.