Skip to main content
Glama
NakanoSanku

grok-web-search-mcp

by NakanoSanku

Sprache: Englisch | 中文

Python License: MIT MCP xAI GitHub

Über das Projekt

Agenten benötigen Live-Web- und X-Zugriff mit Quellenangaben, nicht nur eine Chat-Antwort. Dieses Projekt kapselt die serverseitigen Tools web_search und x_search von xAI als ein einziges MCP-Tool, sodass Hosts wie Grok, Cursor oder Claude Desktop sie aufrufen können, ohne xAI-Clientlogik einzubetten.

Repository: https://github.com/NakanoSanku/grok-web-search-mcp

Upstream-Aufruf (vereinfacht):

POST {base_url}/responses
Authorization: Bearer <api_key>
Content-Type: application/json

{
  "model": "grok-4.5",
  "input": [{"role": "user", "content": "<query>"}],
  "tools": [
    {"type": "web_search", "enable_image_understanding": true},
    {
      "type": "x_search",
      "allowed_x_handles": ["xai"],
      "from_date": "2025-10-01",
      "to_date": "2025-10-10",
      "enable_image_understanding": true,
      "enable_video_understanding": true
    }
  ]
}

Designziele:

  • Ein MCP-Tool, ein Aufrufvertrag – Modelle dürfen nur query / scope / recency / images übergeben.

  • Schlanke Ergebnissequery / text / citations / sources_used (kein roher Upstream-Dump)

  • Benutzerdefinierte Basis-URL – offizielle https://api.x.ai/v1 oder OpenAI-kompatible Proxys

  • Optionale Bildeingabe – HTTPS-URLs oder Data-URIs anhängen (lokale Pfade nur auf Wunsch)

  • Kein PyPI erforderlich – direkt von GitHub mit uvx --from git+... ausführen

Funktionen

Funktion

Hinweise

Live-Websuche

Grok erstellt eine Antwort mit Quellen-URLs

Live-X-Suche

Standardmäßig enthalten; mit scope="web" oder scope="x" einschränken

X-Filter

Behandelt Erlaubnis-/Verbotslisten (max. 20, @ entfernt) und inklusiven Datumsbereich

Domain-Filter

Erlaubnisliste oder Verbotsliste (max. 5, sich gegenseitig ausschließend; Schema/Pfad entfernt)

Medienverständnis bei der Suche

Bilder auf Webseiten und X-Beiträgen; Videos auf X-Beiträgen

Client-Bildeingabe

Optionale images (https / Data-URI; lokale Pfade nur auf Wunsch)

Schlanke JSON-Ausgabe

Kein model / base_url / Annotationen / rohe Nutzlast in Tool-Ergebnissen

Protokollfehler

Upstream-/Validierungsfehler setzen MCP isError (keine vorgetäuschte ok: false-Nutzlast)

Wiederholungen

429 / 502 / 503 / 504 und Transport-Timeouts, mit Backoff

Proxy-freundlich

GROK_BASE_URL / XAI_BASE_URL

GitHub-Installation

uvx --from git+https://github.com/NakanoSanku/grok-web-search-mcp.git

Nicht enthalten: enable_image_search (Einbettung von Web-Bildergalerien). Verwenden Sie images, wenn Sie ein Bild bereitstellen; verwenden Sie enable_image_understanding für Bilder auf durchsuchten Seiten und X-Beiträgen.

Erstellt mit

  • Python

  • FastMCP

  • httpx

  • xAI API

  • MCP

  • uv

Related MCP server: WebQuest MCP

Erste Schritte

Voraussetzungen

  • Python 3.10+

  • Ein xAI-API-Schlüssel (oder ein Schlüssel für ein kompatibles Gateway)

  • uv (empfohlen für uvx von GitHub)

# optional: install uv
curl -LsSf https://astral.sh/uv/install.sh | sh

Schnellstart (uvx von GitHub)

Für den täglichen MCP-Einsatz ist kein lokaler Klon erforderlich:

export GROK_API_KEY=xai-...
uvx --from git+https://github.com/NakanoSanku/grok-web-search-mcp.git grok-web-search-mcp

Pinnen Sie einen Branch, Tag oder Commit, wenn Sie Reproduzierbarkeit benötigen:

uvx --from git+https://github.com/NakanoSanku/grok-web-search-mcp.git@main grok-web-search-mcp
# uvx --from git+https://github.com/NakanoSanku/grok-web-search-mcp.git@v0.3.0 grok-web-search-mcp

Lokale Entwicklungsinstallation

  1. Klonen Sie das Repository:

    git clone https://github.com/NakanoSanku/grok-web-search-mcp.git
    cd grok-web-search-mcp
  2. Installieren Sie die Abhängigkeiten:

    uv sync
    # or: pip install -e ".[dev]"
  3. Erstellen Sie eine lokale Env-Datei:

    cp .env.example .env
  4. Bearbeiten Sie .env und setzen Sie mindestens GROK_API_KEY (siehe Konfiguration).

Konfiguration

Variable

Erforderlich

Standard

Beschreibung

GROK_API_KEY

Ja

Akzeptiert auch XAI_API_KEY / GROK_WEB_SEARCH_API_KEY

GROK_BASE_URL

Nein

https://api.x.ai/v1

Auch XAI_BASE_URL / GROK_WEB_SEARCH_BASE_URL

GROK_MODEL

Nein

grok-4.5

Auch XAI_MODEL

GROK_TIMEOUT

Nein

300

Anfrage-Timeout in Sekunden (1–3600). Hohes Reasoning + Suche können Minuten dauern

GROK_CONNECT_TIMEOUT

Nein

15

TCP/TLS-Verbindungs-Timeout (durch GROK_TIMEOUT begrenzt)

GROK_ENABLE_IMAGE_UNDERSTANDING

Nein

true

Bilder auf durchsuchten Seiten und X-Beiträgen analysieren

GROK_REASONING_EFFORT

Nein

low

Standard-Denklänge: low / medium / high; auch XAI_REASONING_EFFORT

GROK_ALLOW_LOCAL_IMAGES

Nein

false

Erlaubt images, lokale Dateien zu lesen (eingeschränkt auf cwd / GROK_LOCAL_IMAGE_ROOT)

GROK_LOCAL_IMAGE_ROOT

Nein

cwd

Verzeichnis-Einschränkung für lokale Bilder, wenn aktiviert

GROK_MAX_RETRIES

Nein

3

Wiederholungen bei 429/5xx/Timeouts (0–8)

GROK_LOG_LEVEL

Nein

INFO

DEBUG / INFO / WARNING / ERROR

GROK_ENABLE_VIDEO_UNDERSTANDING

Nein

false

Videos in X-Beiträgen analysieren (nur Operator; kein Tool-Argument)

GROK_ALLOWED_DOMAINS

Nein

Web-Erlaubnisliste des Operators (max. 5). Aufrufer können dies nicht festlegen

GROK_EXCLUDED_DOMAINS

Nein

Web-Verbotsliste des Operators (max. 5)

GROK_ALLOWED_X_HANDLES

Nein

X-Handle-Erlaubnisliste des Operators (max. 20)

GROK_EXCLUDED_X_HANDLES

Nein

X-Handle-Verbotsliste des Operators (max. 20)

GROK_SEARCH_INSTRUCTIONS

Nein

Zusätzliche Regeln, die an den servereigenen System-Prompt angehängt werden

Halten Sie Geheimnisse aus Git heraus. Bevorzugen Sie nach Möglichkeit vom Host injizierte Umgebungsvariablen für MCP-Konfigurationen.

Verwendung

Server ausführen

Empfohlen (von GitHub):

export GROK_API_KEY=xai-...
uvx --from git+https://github.com/NakanoSanku/grok-web-search-mcp.git grok-web-search-mcp

Aus einem lokalen Checkout:

export GROK_API_KEY=xai-...
# Windows PowerShell: $env:GROK_API_KEY="xai-..."

uv run grok-web-search-mcp
# or
uv run python -m grok_web_search_mcp

Beispiel für einen kompatiblen Proxy:

export GROK_API_KEY=sk-xxx
export GROK_BASE_URL=http://127.0.0.1:8317/v1
export GROK_MODEL=grok-4.5
uvx --from git+https://github.com/NakanoSanku/grok-web-search-mcp.git grok-web-search-mcp

MCP-Host-Konfiguration

Bevorzugt: von GitHub mit uvx ausführen (kein lokaler Pfad).

JSON-basierte Hosts (Cursor / Claude Desktop usw.):

{
  "mcpServers": {
    "grok-web-search": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/NakanoSanku/grok-web-search-mcp.git",
        "grok-web-search-mcp"
      ],
      "env": {
        "GROK_API_KEY": "xai-your-key",
        "GROK_BASE_URL": "https://api.x.ai/v1",
        "GROK_MODEL": "grok-4.5"
      }
    }
  }
}

Grok-Benutzerkonfiguration (~/.grok/config.toml):

[mcp_servers.grok-web-search]
command = "uvx"
args = [
  "--from",
  "git+https://github.com/NakanoSanku/grok-web-search-mcp.git",
  "grok-web-search-mcp",
]
enabled = true

[mcp_servers.grok-web-search.env]
GROK_API_KEY = "xai-your-key"
GROK_BASE_URL = "https://api.x.ai/v1"
GROK_MODEL = "grok-4.5"

Einen Ref pinnen (Branch / Tag / Commit):

args = [
  "--from",
  "git+https://github.com/NakanoSanku/grok-web-search-mcp.git@main",
  "grok-web-search-mcp",
]

Nur für lokale Entwicklung (absoluter Pfad zu einem Checkout):

[mcp_servers.grok-web-search]
command = "uv"
args = [
  "run",
  "--directory",
  "/absolute/path/to/grok-web-search-mcp",
  "grok-web-search-mcp",
]
enabled = true

Tool: web_search

Jedes Host-Modell muss denselben Vier-Schlüssel-Vertrag verwenden. Zusätzliche Argumente (model, reasoning_effort, system_prompt, Domain-/Handle-Filter) werden abgelehnt. Qualitätsregler liegen in Umgebungsvariablen, damit das Suchverhalten zwischen Modellen nicht abweicht.

Parameter

Typ

Beschreibung

query

string

Erforderlich. Eine Frage in natürlicher Sprache, 2–600 Zeichen. Keine Stichwortliste (xAI Grok valuation) und kein Chatverlauf. Stichwortsammlungen werden serverseitig umgeschrieben.

scope

"all" | "web" | "x"

Standard all (Web + X). Verwenden Sie web für allgemeine Fakten; x nur für Beiträge/Konten.

recency

"any" | "day" | "week" | "month" | "year"

Standard any. Nur setzen, wenn der Benutzer ein Zeitfenster angefordert hat.

images

string[]?

Optionale Bild-URLs (http(s) / Data-URI, max. 5). Nur wenn der Benutzer ein Bild bereitgestellt hat.

Kanonisches Beispiel:

{ "query": "What is xAI's latest valuation?" }

Der Server führt dann Folgendes aus: normalisiert query, fügt einen festen System-Prompt ein, wendet Operator-Filter aus der Umgebung an, bildet recency auf X-Datumsgrenzen ab und verwendet immer das konfigurierte Modell / Reasoning-Effort.

images sind input_image-Teile der Responses API. Lokale Dateisystempfade sind standardmäßig deaktiviert. Dies ist keine „Suche im Web nach Stockbildern“.

Antwortformat

Erfolg (MCP isError: false, strukturierter Inhalt):

{
  "query": "What is xAI?",
  "text": "...",
  "citations": [{"url": "https://x.ai", "title": "xAI"}],
  "sources_used": ["web", "x"],
  "scope": "all",
  "recency": "any"
}

Ein Fehler ist ein Protokollfehler des Tools (isError: true) mit einer kurzen Meldung, zum Beispiel Grok API error (401): Invalid API key. Unvollständige oder leere Upstream-Antworten sind ebenfalls Fehler und kein stiller Erfolg.

Absichtlich nicht zurückgegeben: API-Schlüssel, model, base_url, rohes Upstream-JSON oder Annotations-Blobs (URLs werden ausschließlich in citations übernommen). Diagnostiziere die Konfiguration außerhalb des Tool-Ergebnisses (Env / Host-MCP-Einstellungen / stderr-Logs).

Python-Client-Beispiel

import asyncio
from grok_web_search_mcp.client import GrokWebSearchClient
from grok_web_search_mcp.config import Settings

async def main():
    async with GrokWebSearchClient(Settings.from_env()) as client:
        result = await client.web_search("What is xAI?")
        print(result.to_dict())

asyncio.run(main())

Echte Aufrufe verbrauchen Modell- und serverseitiges Suchkontingent. Unit-Tests verwenden Mocks und greifen nicht auf das Netzwerk zu.

Entwicklung

git clone https://github.com/NakanoSanku/grok-web-search-mcp.git
cd grok-web-search-mcp
uv sync --extra dev
uv run pytest
# live API (optional): GROK_LIVE=1 uv run pytest -m live

Projektstruktur:

src/grok_web_search_mcp/
  server.py    # MCP tool surface
  client.py    # Responses API client + image helpers
  config.py    # Environment settings
tests/

Roadmap

  • Ein einziges schlankes web_search-MCP-Tool

  • Upstream-web_search und x_search standardmäßig aktivieren

  • X-Handle-/Datumsfilter und Bild-/Video-Verständnis

  • Unterstützung für benutzerdefinierte base_url / Proxy

  • Domain-Allow-/Deny-Filter

  • Optionale multimodale Bildeingabe

  • Installation / Ausführung von GitHub über uvx

  • Protokollfehler, Wiederholungen, Timeout-/Reasoning-Standardwerte

  • Lokales Image-Jail (standardmäßig deaktiviert)

  • Kanonischer MCP-Aufrufvertrag (query / scope / recency / images)

  • Optionale Streamable-HTTP-Transport-Dokumentation/-Beispiele

  • Golden-Set-Evaluations-Harness für die Suchqualität

Siehe die offenen Issues.

Mitwirken

Beiträge sind willkommen.

  1. Forke das Projekt

  2. Erstelle deinen Feature-Branch (git checkout -b feature/AmazingFeature)

  3. Commite deine Änderungen (git commit -m 'Add some AmazingFeature')

  4. Pushe den Branch (git push origin feature/AmazingFeature)

  5. Öffne einen Pull Request

Bitte halte die Tool-Oberfläche schlank: Bevorzuge ein gut dokumentiertes Tool gegenüber vielen dünnen Wrappern.

Lizenz

Verteilt unter der MIT-Lizenz. Siehe LICENSE für weitere Informationen.

Danksagungen

Available Tools

1 tool

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev0.1.0
    • First observedweb_search

TDQS

A4.5/5.0
Disambiguation5/5

Only one tool exists, so there is no possibility of confusion or overlap with other tools.

Naming Consistency5/5

With a single tool, naming consistency is inherently perfect as there is no pattern to break.

Tool Count4/5

A single tool is slightly minimal but reasonably scoped for a focused web search server, as the tool itself is comprehensive.

Completeness5/5

The tool covers web search, X search, image understanding, domain and date filters, and reasoning effort, leaving no obvious gaps for its stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that provides real-time web search and X (Twitter) search capabilities via the xAI API.
    2
    28
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for live X/Twitter and web search, driven by your locally logged-in Grok CLI and leveraging your X Premium or SuperGrok subscription quota.
    3
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server providing web search, news search, and X/Twitter search capabilities via HTTP or stdio.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/NakanoSanku/grok-web-search-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server