Skip to main content
Glama
JerryLiu369

agent-web-search

Agent Web Search

AIエージェント向けマルチプロバイダーWeb検索。

Agent Web Searchは、Hermes、Codex CLI、Claude Code、OpenCode、および通常のスクリプトに、一貫したWeb検索ツールを提供します。独立したプロバイダーを並行して実行し、正規化された結果を返します。デフォルトのプロバイダーセットは以下のとおりです。

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

  • DDGS — DuckDuckGo検索

  • Exa — Exa MCP検索(ベストエフォート。可用性はエンドポイントに依存します)

オプションのプロバイダーも実装されています。

  • Gemini — Gemini Interactions APIによるGoogle検索グラウンディング

  • Grok — ネイティブWeb検索とX Searchを備えたxAI Responses API

  • Tavily — ネイティブの結果数・期間フィルターを備えたTavily Search API

アーキテクチャはプロバイダーベースのため、DeepSeek、Brave、その他の検索対応プロバイダーを、MCPやHermesのインターフェースを変更せずに追加できます。

クイックスタート

# 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

Codex CLIから使用する

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

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}"}
    }
  }
}

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

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ツールを登録し、MCPやCLIで使用されるものと同じAgent Web Searchコアを呼び出します。汎用のMCPパスを希望する場合、Hermesはhermes mcp addで接続することもできます。

GitHubインストーラーは、パッケージとそのオプション依存関係をインストールします。

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

Hermesは、このプラグインが組み込みのweb_searchツールを意図的に置き換えるため、明示的な--allow-tool-override許可を必要とします。有効化後は新しい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コラボレーション報酬について

Agent Web Searchは、いかなる報酬プログラムへの参加も必須としません。ARKを使用することを選択したユーザーは、独自のAPIキーを作成し、任意で公式の**Volcengineコラボレーション報酬プログラム**を確認できます。このプログラムは現在のルールに応じて報酬リソースを提供する場合がありますが、割り当て量、サポート対象モデル、有効期間、データ承認条件は変更される可能性があります。オプトインする前に公式ページを確認してください。参加することは、プロバイダーのデータ承認条件を受け入れることを意味します。Agent Web Searchの使用には必須ではありません。

設定

  • ARK_API_KEY: 任意。ARKプロバイダーが有効な場合のみ必要です。カンマ/改行区切りのキーを受け付けます。

  • AGENT_WEB_SEARCH_PROVIDERS: 起動時に有効なプロバイダーセット。デフォルトはark,ddgs,exaです。

  • AGENT_WEB_SEARCH_TIMEOUT: プロバイダーごとのタイムアウト(秒)。デフォルトは60です。

  • AGENT_WEB_SEARCH_ARK_MODELS: カンマ区切りのARKモデルID。

  • EXA_MCP_URL: 任意のExa MCPエンドポイント上書き。

  • GEMINI_API_KEY: 任意のGeminiプロバイダーキー。

  • AGENT_WEB_SEARCH_GEMINI_MODEL: 任意のGeminiモデルID。

  • XAI_API_KEY: 任意のGrokプロバイダーキー。

  • AGENT_WEB_SEARCH_GROK_MODEL: 任意のGrokモデルID。

  • TAVILY_API_KEY: 任意のTavilyプロバイダーキー。

プロバイダーセットは、HermesプラグインまたはMCPサーバーの起動時に解決されます。公開web_searchスキーマはそのセットから生成されます。リクエストはprovidersでセットを絞り込むことはできますが、起動時に無効化されたプロバイダーを有効化することはできません。grokが起動時に有効な場合、スキーマはさらにgrok_search_modeを公開し、web_search、x_search、bothの値を受け付けます。bothは両方のxAIサーバーサイドツールを1つのリクエストで渡し、Grokにどちらを呼び出すかを判断させます。独立した2つのリクエストを送信するわけではありません。

共通の検索コントロール

公開インターフェースは、プロバイダーに依存しない1つのコントロールセットを維持します。各バックエンドは、可能な場合はそれらをネイティブ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

プロンプト制約はモデルベースのプロバイダーに対するベストエフォートであり、厳格な保証として提示されるものではありません。

設計原則

  • 1つのコア、複数のアダプター。

  • 失敗したプロバイダーが、成功したプロバイダーを破棄することはありません。

  • プロバイダーの応答は、すべてのHTTP 200が成功した検索であるかのように装うのではなく、searched、error、modelでマークされます。

  • テレメトリなし、共有APIキーサービスなし。

開発

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

ライセンス

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