Skip to main content
Glama
JerryLiu369

agent-web-search

Agent Web Search

Мульти-провайдерный веб-поиск для ИИ-агентов.

Agent Web Search предоставляет Hermes, Codex CLI, Claude Code, OpenCode и обычным скриптам единый инструмент веб-поиска. Он запускает независимых провайдеров параллельно и возвращает нормализованные результаты. Набор провайдеров по умолчанию:

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

  • DDGS — поиск DuckDuckGo

  • Exa — поиск Exa MCP (по возможности; доступность зависит от конечной точки)

Также реализованы дополнительные провайдеры:

  • Gemini — привязка к Google Search через Gemini Interactions API

  • Grok — xAI Responses API с нативным веб-поиском и X Search

  • Tavily — Tavily Search API с нативными фильтрами по количеству результатов и временному диапазону

Архитектура основана на провайдерах, поэтому DeepSeek, Brave и другие провайдеры с поддержкой поиска могут быть добавлены без изменения интерфейсов MCP или Hermes.

Quick start

# 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

Не помещайте API-ключи в историю оболочки, исходный код, Git-коммиты или скриншоты. Используйте локальный .env/менеджер секретов и экспортируйте переменную в окружение процесса.

Related MCP server: GroundRoute

Use from Codex CLI

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

Use from Claude Code

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

Или добавьте файл .mcp.json в проект:

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

Use from 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
    }
  }
}

Use from Hermes

Установите нативный плагин напрямую из GitHub:

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

Плагин регистрирует стандартный инструмент web_search и вызывает то же ядро Agent Web Search, которое используется в MCP и CLI. Если вы предпочитаете универсальный путь MCP, Hermes также может подключиться с помощью hermes mcp add.

Установщик GitHub устанавливает пакет и его дополнительные зависимости:

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

Hermes требует явного разрешения --allow-tool-override, потому что этот плагин намеренно заменяет встроенный инструмент web_search. Запустите новую сессию Hermes после его включения; перезапустите шлюз, если вы используете канал обмена сообщениями.

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

Volcengine collaboration rewards

Agent Web Search не требует участия в каких-либо программах вознаграждений. Пользователи, которые решат использовать ARK, могут создать собственный API-ключ и при желании ознакомиться с официальной программой вознаграждений Volcengine Collaboration. Программа может предоставлять вознаграждения в соответствии с её текущими правилами, но квота, поддерживаемые модели, срок действия и условия авторизации данных могут меняться. Проверьте официальную страницу перед участием. Участие означает принятие условий авторизации данных провайдера; оно не требуется для использования Agent Web Search.

Configuration

  • ARK_API_KEY: необязательный; требуется только при включённом провайдере ARK. Принимаются ключи, разделённые запятыми/переводами строк.

  • AGENT_WEB_SEARCH_PROVIDERS: набор провайдеров, включённых при запуске; по умолчанию ark,ddgs,exa.

  • AGENT_WEB_SEARCH_TIMEOUT: таймаут на провайдера в секундах (по умолчанию 60).

  • AGENT_WEB_SEARCH_ARK_MODELS: идентификаторы моделей ARK через запятую.

  • EXA_MCP_URL: необязательное переопределение конечной точки Exa MCP.

  • GEMINI_API_KEY: необязательный ключ провайдера Gemini.

  • AGENT_WEB_SEARCH_GEMINI_MODEL: необязательный идентификатор модели Gemini.

  • XAI_API_KEY: необязательный ключ провайдера Grok.

  • AGENT_WEB_SEARCH_GROK_MODEL: необязательный идентификатор модели Grok.

  • TAVILY_API_KEY: необязательный ключ провайдера Tavily.

Набор провайдеров определяется при запуске плагина Hermes или MCP-сервера. Публичная схема web_search генерируется из этого набора. Запрос может сузить набор с помощью providers, но не может активировать провайдера, который был отключён при запуске. Если grok включён при запуске, схема дополнительно предоставляет grok_search_mode со значениями web_search, x_search и both. both передаёт оба серверных инструмента xAI в одном запросе и позволяет Grok решить, какой вызвать; он не отправляет два независимых запроса.

Common search controls

Публичный интерфейс сохраняет единый набор элементов управления, не зависящий от провайдера. Каждый бэкенд сопоставляет их со своим нативным API, когда это возможно, и молча игнорирует неподдерживаемые элементы управления:

Параметр

ARK

DDGS

Exa

Gemini / Grok

Tavily

max_results

нативный limit

нативный max_results

нативный num_results

ограничение через промпт на английском

нативный max_results

max_keyword

нативный max_keyword

игнорируется

игнорируется

ограничение через промпт на английском

игнорируется

time_range

ограничение через промпт на английском

нативный timelimit

нативный фильтр по дате публикации

Gemini: промпт; Grok web: промпт; Grok X: нативные даты + промпт

нативный time_range

Промпт-ограничения являются best-effort для провайдеров на основе моделей; они не представлены как строгие гарантии.

Design principles

  • Одно ядро, несколько адаптеров.

  • Неудачный провайдер не отбрасывает успешных провайдеров.

  • Ответы провайдеров помечаются как searched, error и model вместо того, чтобы считать каждый HTTP 200 успешным поиском.

  • Никакой телеметрии и никакого общего сервиса API-ключей.

Development

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

License

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