Skip to main content
Glama
JerryLiu369

agent-web-search

Agent Web Search

Multi-Anbieter-Websuche für KI-Agenten.

Agent Web Search bietet Hermes, Codex CLI, Claude Code, OpenCode und gewöhnlichen Skripten ein einheitliches Websuch-Tool. Es führt unabhängige Anbieter parallel aus und liefert normalisierte Ergebnisse. Der standardmäßige Anbieter-Set ist:

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

  • DDGS — DuckDuckGo-Suche

  • Exa — Exa-MCP-Suche (Best Effort; Verfügbarkeit hängt vom Endpunkt ab)

Optionale Anbieter sind ebenfalls implementiert:

  • Gemini — Google-Search-Grounding über Gemini Interactions API

  • Grok — xAI Responses API mit nativer Websuche und X-Suche

  • Tavily — Tavily Search API mit nativen Ergebnisanzahl- und Zeitraum-Filtern

Die Architektur ist anbieterbasiert, sodass DeepSeek, Brave und andere suchfähige Anbieter hinzugefügt werden können, ohne die MCP- oder Hermes-Schnittstellen zu ändern.

Schnellstart

# 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

Geben Sie API-Schlüssel nicht in die Shell-Historie, in Quellcode, Git-Commits oder Screenshots ein. Verwenden Sie einen lokalen .env-/Secret-Manager und exportieren Sie die Variable in der Prozessumgebung.

Related MCP server: GroundRoute

Verwendung mit Codex CLI

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

Verwendung mit Claude Code

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

Oder fügen Sie eine Projekt-.mcp.json hinzu:

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

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

Verwendung mit Hermes

Installieren Sie das native Plugin direkt von GitHub:

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

Das Plugin registriert das standardmäßige web_search-Tool und ruft denselben Agent-Web-Search-Kern auf, der von MCP und CLI verwendet wird. Wenn Sie den generischen MCP-Pfad bevorzugen, kann Hermes auch mit hermes mcp add verbunden werden.

Der GitHub-Installer installiert das Paket und seine optionalen Abhängigkeiten:

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

Hermes erfordert die explizite --allow-tool-override-Berechtigung, da dieses Plugin absichtlich sein integriertes web_search-Tool ersetzt. Starten Sie nach der Aktivierung eine neue Hermes-Sitzung; starten Sie das Gateway neu, wenn Sie einen Messaging-Kanal verwenden.

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-Kooperationsprämien

Agent Web Search erfordert keine Teilnahme an einem Prämienprogramm. Benutzer, die ARK verwenden möchten, können ihren eigenen API-Schlüssel erstellen und optional das offizielle Volcengine Collaboration Rewards Program prüfen. Das Programm kann gemäß seinen aktuellen Regeln Prämienressourcen bereitstellen, aber Kontingent, unterstützte Modelle, Gültigkeitsdauer und Datenautorisierungsbedingungen können sich ändern. Prüfen Sie die offizielle Seite, bevor Sie sich anmelden. Die Teilnahme bedeutet die Akzeptanz der Datenautorisierungsbedingungen des Anbieters; sie ist nicht erforderlich, um Agent Web Search zu verwenden.

Konfiguration

  • ARK_API_KEY: optional; nur erforderlich, wenn der ARK-Anbieter aktiviert ist. Durch Komma/Zeilenumbruch getrennte Schlüssel werden akzeptiert.

  • AGENT_WEB_SEARCH_PROVIDERS: beim Start aktiviertes Anbieter-Set; Standard ist ark,ddgs,exa.

  • AGENT_WEB_SEARCH_TIMEOUT: Timeout pro Anbieter in Sekunden (Standard 60).

  • AGENT_WEB_SEARCH_ARK_MODELS: durch Komma getrennte ARK-Modell-IDs.

  • EXA_MCP_URL: optionale Exa-MCP-Endpunktüberschreibung.

  • GEMINI_API_KEY: optionaler Gemini-Anbieterschlüssel.

  • AGENT_WEB_SEARCH_GEMINI_MODEL: optionale Gemini-Modell-ID.

  • XAI_API_KEY: optionaler Grok-Anbieterschlüssel.

  • AGENT_WEB_SEARCH_GROK_MODEL: optionale Grok-Modell-ID.

  • TAVILY_API_KEY: optionaler Tavily-Anbieterschlüssel.

Der Anbieter-Set wird beim Start des Hermes-Plugins oder MCP-Servers aufgelöst. Das öffentliche web_search-Schema wird aus diesem Set generiert. Eine Anfrage kann das Set mit providers eingrenzen, kann aber keinen Anbieter aktivieren, der beim Start deaktiviert wurde. Wenn grok beim Start aktiviert ist, stellt das Schema zusätzlich grok_search_mode mit den Werten web_search, x_search und both bereit. both übergibt beide xAI-Server-seitigen Tools in einer Anfrage und überlässt Grok die Entscheidung, welches aufgerufen wird; es sendet keine zwei unabhängigen Anfragen.

Allgemeine Suchsteuerungen

Die öffentliche Schnittstelle hält einen anbieterneutralen Satz von Steuerungen. Jedes Backend bildet sie nach Möglichkeit auf seine native API ab und ignoriert nicht unterstützte Steuerungen stillschweigend:

Steuerung

ARK

DDGS

Exa

Gemini / Grok

Tavily

max_results

nativ limit

nativ max_results

nativ num_results

Englische Prompt-Einschränkung

nativ max_results

max_keyword

nativ max_keyword

ignoriert

ignoriert

Englische Prompt-Einschränkung

ignoriert

time_range

Englische Prompt-Einschränkung

nativ timelimit

natives Veröffentlichungsdatum-Filter

Gemini: Prompt; Grok Web: Prompt; Grok X: native Daten + Prompt

nativ time_range

Prompt-Einschränkungen sind für modellgestützte Anbieter Best Effort; sie werden nicht als strikte Garantien dargestellt.

Designprinzipien

  • Ein Kern, mehrere Adapter.

  • Ein fehlgeschlagener Anbieter verwirft nicht erfolgreiche Anbieter.

  • Anbieterantworten werden mit searched, error und model markiert, anstatt so zu tun, als wäre jede HTTP-200-Antwort eine erfolgreiche Suche.

  • Keine Telemetrie und kein gemeinsamer API-Schlüsseldienst.

Entwicklung

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

Lizenz

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