Skip to main content
Glama
JerryLiu369

agent-web-search

Agent Web Search

Búsqueda web multiproveedor para agentes de IA.

Agent Web Search ofrece a Hermes, Codex CLI, Claude Code, OpenCode y scripts ordinarios una herramienta de búsqueda web coherente. Ejecuta proveedores independientes de forma concurrente y devuelve resultados normalizados. El conjunto de proveedores predeterminado es:

  • ARK grounding — Volcengine ARK Responses API + web_search (Doubao)

  • DDGS — Búsqueda de DuckDuckGo

  • Exa — Búsqueda Exa MCP (mejor esfuerzo; la disponibilidad depende del endpoint)

También se implementan proveedores opcionales:

  • Gemini — Google Search grounding mediante Gemini Interactions API

  • Grok — xAI Responses API con búsqueda web nativa y X Search

  • Tavily — Tavily Search API con filtros nativos de recuento de resultados y rango de fechas

La arquitectura está basada en proveedores, por lo que se pueden añadir DeepSeek, Brave y otros proveedores con capacidad de búsqueda sin cambiar las interfaces MCP o Hermes.

Inicio rápido

# Omit this line when the ARK provider is not enabled.
export ARK_API_KEY="your_ark_api_key"
pipx install 'git+https://github.com/JerryLiu369/agent-web-search.git'
agent-web-search-mcp

No pongas claves de API en el historial del shell, el código fuente, los commits de Git ni las capturas de pantalla. Usa un gestor local de .env/secretos y exporta la variable en el entorno del proceso.

Related MCP server: GroundRoute

Uso desde Codex CLI

export ARK_API_KEY="your_ark_api_key"
codex mcp add agent-web-search -- \
  agent-web-search-mcp
codex mcp list

Uso desde Claude Code

export ARK_API_KEY="your_ark_api_key"
claude mcp add agent-web-search -- \
  agent-web-search-mcp

O añade un .mcp.json de proyecto:

{
  "mcpServers": {
    "agent-web-search": {
      "command": "agent-web-search-mcp",
      "args": [],
      "env": {"ARK_API_KEY": "${ARK_API_KEY}"}
    }
  }
}

Uso desde OpenCode

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "agent-web-search": {
      "type": "local",
      "command": ["agent-web-search-mcp"],
      "environment": {"ARK_API_KEY": "${ARK_API_KEY}"},
      "enabled": true
    }
  }
}

Uso desde Hermes

Instala el plugin nativo directamente desde GitHub:

pip install 'ddgs>=9.0'
hermes plugins install JerryLiu369/agent-web-search --no-enable
hermes plugins enable agent-web-search --allow-tool-override

El plugin registra la herramienta estándar web_search y llama al mismo núcleo de Agent Web Search que usan MCP y CLI. Si prefieres la ruta MCP genérica, Hermes también puede conectarse con hermes mcp add.

El instalador de GitHub instala el paquete y sus dependencias opcionales:

pipx install 'git+https://github.com/JerryLiu369/agent-web-search.git'

Hermes requiere la concesión explícita --allow-tool-override porque este plugin reemplaza intencionadamente su herramienta integrada web_search. Inicia una nueva sesión de Hermes después de habilitarlo; reinicia la puerta de enlace si usas un canal de mensajería.

CLI

agent-web-search "What changed in the latest OpenAI Codex CLI?"
agent-web-search "GPU kernel generation papers from the past month" --time-range m --max-results 5
agent-web-search "latest news" --provider ark --provider ddgs

Recompensas de colaboración de Volcengine

Agent Web Search no requiere participar en ningún programa de recompensas. Los usuarios que decidan usar ARK pueden crear su propia clave de API y, opcionalmente, revisar el Programa de recompensas de colaboración de Volcengine oficial. El programa puede proporcionar recursos de recompensa según sus reglas actuales, pero la cuota, los modelos compatibles, el período de validez y los términos de autorización de datos pueden cambiar. Consulta la página oficial antes de aceptar. La participación implica aceptar los términos de autorización de datos del proveedor; no es necesario para usar Agent Web Search.

Configuración

  • ARK_API_KEY: opcional; solo se requiere cuando el proveedor ARK está habilitado. Se aceptan claves separadas por comas/saltos de línea.

  • AGENT_WEB_SEARCH_PROVIDERS: conjunto de proveedores habilitados al inicio; el valor predeterminado es ark,ddgs,exa.

  • AGENT_WEB_SEARCH_TIMEOUT: tiempo de espera por proveedor en segundos (predeterminado 60).

  • AGENT_WEB_SEARCH_ARK_MODELS: IDs de modelo ARK separados por comas.

  • EXA_MCP_URL: anulación opcional del endpoint Exa MCP.

  • GEMINI_API_KEY: clave opcional del proveedor Gemini.

  • AGENT_WEB_SEARCH_GEMINI_MODEL: ID de modelo Gemini opcional.

  • XAI_API_KEY: clave opcional del proveedor Grok.

  • AGENT_WEB_SEARCH_GROK_MODEL: ID de modelo Grok opcional.

  • TAVILY_API_KEY: clave opcional del proveedor Tavily.

El conjunto de proveedores se resuelve cuando se inicia el plugin de Hermes o el servidor MCP. El esquema público web_search se genera a partir de ese conjunto. Una solicitud puede reducir el conjunto con providers, pero no puede activar un proveedor que se deshabilitó al inicio. Si grok está habilitado al inicio, el esquema también expone grok_search_mode con los valores web_search, x_search y both. both pasa ambas herramientas del lado del servidor de xAI en una sola solicitud y deja que Grok decida cuál llamar; no envía dos solicitudes independientes.

Controles de búsqueda comunes

La interfaz pública mantiene un conjunto de controles neutrales para el proveedor. Cada backend los asigna a su API nativa cuando es posible e ignora silenciosamente los controles no compatibles:

Control

ARK

DDGS

Exa

Gemini / Grok

Tavily

max_results

nativo limit

nativo max_results

nativo num_results

restricción de prompt en inglés

nativo max_results

max_keyword

nativo max_keyword

ignorado

ignorado

restricción de prompt en inglés

ignorado

time_range

restricción de prompt en inglés

nativo timelimit

filtro de fecha de publicación nativo

Gemini: prompt; Grok web: prompt; Grok X: fechas nativas + prompt

nativo time_range

Las restricciones de prompt son de mejor esfuerzo para los proveedores respaldados por modelos; no se presentan como garantías estrictas.

Principios de diseño

  • Un núcleo, múltiples adaptadores.

  • Un proveedor con fallo no descarta a los proveedores que tuvieron éxito.

  • Las respuestas de los proveedores se marcan con searched, error y model en lugar de fingir que cada HTTP 200 fue una búsqueda exitosa.

  • Sin telemetría y sin servicio compartido de claves de API.

Desarrollo

python -m venv .venv
. .venv/bin/activate
pip install -e '.[dev,ddgs,mcp]'
pytest -q
ruff check .

Licencia

MIT.

Available Tools

1 tool

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.8.0
    • Changedweb_search2 fields changed
      • changedInput schema / properties / max_results / default
        Previous value: -10New value: +5
      • changedInput schema / properties / query / description
        Previous value: -"A complete natural-language search question."New value: +"A complete, detailed natural-language question or intent. Do NOT use fragmented keyword queries (e.g. avoid 'NVDA earnings'); instead pass the full question (e.g. 'What were the key highlights and market reactions to NVIDIA latest earnings?'). Model-native and semantic providers reason over full sentences to retrieve, read, and synthesize grounded evidence."
  2. 1 tool updatev0.7.2
    • Changedweb_search3 fields changed
      • removedInput schema / properties / max_keyword
        Removed value: -{
        -  "default": 3,
        -  "description": "Desired maximum number of distinct search queries or keywords. Providers without an equivalent control ignore it.",
        -  "maximum": 10,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • changedInput schema / properties / max_results / description
        Previous value: -"Desired maximum number of results or cited sources. Providers enforce this natively or as a best-effort prompt constraint."New value: +"Desired maximum number of results. Providers enforce this natively or as a best-effort prompt constraint."
      • addedInput schema / properties / query / maxLength
        Added value: +4000
  3. 1 tool updatev0.3.0
    • Changedweb_search1 field changed
      • changedInput schema / properties / providers / items / enum
        Previous value: -[
        -  "ark",
        -  "ddgs",
        -  "exa"
        -]New value: +[
        +  "ddgs",
        +  "exa",
        +  "parallel"
        +]
  4. 1 tool updatev0.1.0
    • First observedweb_search

TDQS

A4.1/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool in the set, there is no possibility of confusing it with another tool. Its purpose—semantic web search for natural-language questions—is unambiguous and clearly stated.

Naming Consistency5/5

The single tool uses a clean snake_case verb_noun name (web_search) that is readable and conventional. No competing conventions exist to create inconsistency.

Tool Count3/5

A search server can legitimately be a one-tool server, so the scope is defensible. However, a single tool is thin for a search surface that could reasonably offer companion operations (e.g., page fetch/retrieval), placing it at the borderline end of the rubric.

Completeness3/5

Search itself is well covered, including multi-provider fallback and diagnostics, but the lifecycle dead-ends there: an agent getting only snippets has no tool to retrieve or read a specific result page. This is a notable gap an agent must work around.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Web search for AI agents across 6 engines (Serper, Brave, Exa, Tavily, Firecrawl, Perplexity) through one search tool. Routes each query to the cheapest engine that clears a quality bar and caches repeats. Hosted, streamable-HTTP, BYOK supported.
    1
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to perform unified web searches, GitHub, and GitLab searches with caching, reranking, and fallback across multiple providers.
    4
    13 npm
    18
    MIT