grok-web-search-mcp
Язык: English | 中文
О проекте
Агентам нужен живой доступ к вебу и X с цитатами, а не просто завершение чата. Этот проект оборачивает серверные инструменты xAI web_search и x_search в единый MCP-инструмент, поэтому такие хосты, как Grok, Cursor или Claude Desktop, могут вызывать их без встраивания клиентской логики xAI.
Репозиторий: https://github.com/NakanoSanku/grok-web-search-mcp
Вызов вышестоящего API (упрощённо):
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
}
]
}Цели дизайна:
Один MCP-инструмент, один контракт вызова — модели могут передавать только
query/scope/recency/imagesКомпактные результаты —
query/text/citations/sources_used(без сырого дампа вышестоящего API)Настраиваемый base URL — официальный
https://api.x.ai/v1или OpenAI-совместимые проксиОпциональный ввод изображений — прикрепляйте https-URL или data URI (локальные пути — по желанию)
PyPI не требуется — запуск прямо из GitHub через
uvx --from git+...
Возможности
Возможность | Примечания |
Живой веб-поиск | Grok формирует ответ с URL источников |
Живой поиск по X | Включён по умолчанию; укажите |
Фильтры X | Обрабатывает списки разрешений/запретов (макс. 20, |
Фильтры доменов | Разрешающий или запрещающий список (макс. 5, взаимоисключающие; схема/путь удаляются) |
Понимание медиа в поиске | Изображения на веб-страницах и в постах X; видео в постах X |
Ввод изображений клиентом | Опциональные |
Компактный JSON-вывод | Нет |
Ошибки протокола | Сбои вышестоящего API/валидации устанавливают MCP |
Повторные попытки | 429 / 502 / 503 / 504 и таймауты транспорта, с экспоненциальной задержкой |
Дружелюбность к прокси |
|
Установка из GitHub |
|
Не включено: enable_image_search (встраивание веб-галереи изображений). Используйте images, когда изображение предоставляете вы; используйте enable_image_understanding для изображений на просматриваемых страницах и в постах X.
Создано с помощью
Related MCP server: WebQuest MCP
Начало работы
Предварительные требования
Python 3.10+
Ключ xAI API (или ключ для совместимого шлюза)
uv (рекомендуется для
uvxиз GitHub)
# optional: install uv
curl -LsSf https://astral.sh/uv/install.sh | shБыстрый старт (uvx из GitHub)
Для повседневного использования MCP локальный клон не требуется:
export GROK_API_KEY=xai-...
uvx --from git+https://github.com/NakanoSanku/grok-web-search-mcp.git grok-web-search-mcpЗафиксируйте ветку, тег или коммит, когда нужна воспроизводимость:
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Локальная установка для разработки
Клонируйте репозиторий:
git clone https://github.com/NakanoSanku/grok-web-search-mcp.git cd grok-web-search-mcpУстановите зависимости:
uv sync # or: pip install -e ".[dev]"Создайте локальный файл окружения:
cp .env.example .envОтредактируйте
.envи укажите как минимумGROK_API_KEY(см. Конфигурация).
Конфигурация
Переменная | Обязательная | По умолчанию | Описание |
| Да | — | Также принимает |
| Нет |
| Также |
| Нет |
| Также |
| Нет |
| Таймаут запроса в секундах (1–3600). Высокое рассуждение + поиск могут требовать минут |
| Нет |
| Таймаут TCP/TLS-подключения (ограничен |
| Нет |
| Анализировать изображения на просматриваемых страницах и в постах X |
| Нет |
| Длина рассуждений по умолчанию: |
| Нет |
| Разрешить |
| Нет | cwd | Каталог-изоляция для локальных изображений, когда включено |
| Нет |
| Повторные попытки для 429/5xx/таймаутов (0–8) |
| Нет |
|
|
| Нет |
| Анализировать видео в постах X (только для оператора; не аргумент инструмента) |
| Нет | — | Операторский веб-разрешающий список (макс. 5). Вызывающие стороны не могут его задать |
| Нет | — | Операторский веб-запрещающий список (макс. 5) |
| Нет | — | Операторский разрешающий список X-аккаунтов (макс. 20) |
| Нет | — | Операторский запрещающий список X-аккаунтов (макс. 20) |
| Нет | — | Дополнительные правила, добавляемые к системному промпту сервера |
Не храните секреты в git. По возможности используйте переменные окружения, внедряемые хостом, для MCP-конфигураций.
Использование
Запуск сервера
Рекомендуемый способ (из GitHub):
export GROK_API_KEY=xai-...
uvx --from git+https://github.com/NakanoSanku/grok-web-search-mcp.git grok-web-search-mcpИз локальной копии:
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Пример совместимого прокси:
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-хоста
Предпочтительно: запуск из GitHub через uvx (без локального пути).
Хосты в JSON-стиле (Cursor / Claude Desktop и т.д.):
{
"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 (~/.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"Зафиксируйте ref (ветку / тег / коммит):
args = [
"--from",
"git+https://github.com/NakanoSanku/grok-web-search-mcp.git@main",
"grok-web-search-mcp",
]Только для локальной разработки (абсолютный путь к копии):
[mcp_servers.grok-web-search]
command = "uv"
args = [
"run",
"--directory",
"/absolute/path/to/grok-web-search-mcp",
"grok-web-search-mcp",
]
enabled = trueИнструмент: web_search
Каждая модель хоста должна использовать один и тот же контракт из четырёх ключей. Дополнительные аргументы (model, reasoning_effort, system_prompt, фильтры доменов/аккаунтов) отклоняются. Параметры качества находятся в переменных окружения, чтобы поведение поиска не различалось между моделями.
Параметр | Тип | Описание |
| string | Обязательный. Вопрос на естественном языке, 2–600 символов. Не список ключевых слов ( |
|
| По умолчанию |
|
| По умолчанию |
| string[]? | Опциональные URL изображений (http(s) / data URI, макс. 5). Только если пользователь предоставил изображение. |
Канонический пример:
{ "query": "What is xAI's latest valuation?" }Затем сервер: нормализует query, внедряет фиксированный системный промпт, применяет операторские фильтры из окружения, сопоставляет recency с границами дат X и всегда использует настроенную модель / усилия рассуждений.
images — это части input_image из Responses API. Локальные пути файловой системы отключены по умолчанию. Это не «поиск в вебе стоковых изображений».
Структура ответа
Успех (MCP isError: false, структурированный контент):
{
"query": "What is xAI?",
"text": "...",
"citations": [{"url": "https://x.ai", "title": "xAI"}],
"sources_used": ["web", "x"],
"scope": "all",
"recency": "any"
}Сбой — это ошибка инструмента на уровне протокола (isError: true) с коротким сообщением, например Grok API error (401): Invalid API key. Неполные или пустые ответы вышестоящего API также считаются ошибками, а не молчаливым успехом.
Намеренно не возвращаются: API-ключ, model, base_url, сырой JSON вышестоящего API или blob-объекты аннотаций (URL-адреса извлекаются только в citations). Диагностируйте конфигурацию вне результата инструмента (переменные окружения / настройки MCP на хосте / журналы stderr).
Пример Python-клиента
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())Реальные вызовы расходуют квоту модели и серверного поиска. Модульные тесты используют моки и не обращаются к сети.
Разработка
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Структура проекта:
src/grok_web_search_mcp/
server.py # MCP tool surface
client.py # Responses API client + image helpers
config.py # Environment settings
tests/Дорожная карта
Один компактный MCP-инструмент
web_searchВключить вышестоящие
web_searchиx_searchпо умолчаниюФильтры по X-аккаунту/дате и понимание изображений/видео
Поддержка настраиваемого
base_url/ проксиФильтры разрешённых/запрещённых доменов
Опциональный мультимодальный ввод изображений
Установка / запуск из GitHub через
uvxОшибки на уровне протокола, повторные попытки, тайм-ауты/стандартные параметры reasoning
Локальный jail для изображений (отключён по умолчанию)
Канонический контракт вызова MCP (
query/scope/recency/images)Документация/примеры для опционального Streamable HTTP transport
Оценочный стенд на основе golden-set для качества поиска
См. открытые issues.
Участие в разработке
Вклад приветствуется.
Сделайте форк проекта
Создайте свою ветку функции (
git checkout -b feature/AmazingFeature)Сделайте коммит своих изменений (
git commit -m 'Add some AmazingFeature')Запушьте в ветку (
git push origin feature/AmazingFeature)Откройте Pull Request
Пожалуйста, сохраняйте набор инструментов компактным: предпочитайте один хорошо документированный инструмент множеству тонких обёрток.
Лицензия
Распространяется под лицензией MIT. Подробнее см. в LICENSE.
Благодарности
Available Tools
1 toolweb_searchA
Live web and X search via Grok. Returns ok, text (answer), citations (URL list). Optional images: public URL, data:image/...;base64,..., or local file path (max 5) to ask about a picture while searching. Supports web domain filters, X handle/date filters, and reasoning_effort (low/medium/high). Image understanding applies to browsed pages and X posts; video understanding applies to X posts only.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Optional model override (default from GROK_MODEL / grok-4.5). | |
| query | Yes | Natural-language search question or topic. | |
| images | No | Optional image input(s) for visual questions: URL / data-URI / local path (comma or newline separated, max 5). Not an image-search API. | |
| to_date | No | Optional inclusive X search end date (YYYY-MM-DD). | |
| from_date | No | Optional inclusive X search start date (YYYY-MM-DD). | |
| image_detail | No | Vision detail for input images: low | high | auto (default high). | |
| system_prompt | No | Optional system instruction prepended to the request. | |
| allowed_domains | No | Optional comma-separated allowlist (max 5). Mutually exclusive with excluded_domains. | |
| excluded_domains | No | Optional comma-separated denylist (max 5). | |
| reasoning_effort | No | Optional thinking length for reasoning models: low | medium | high. | |
| allowed_x_handles | No | Optional comma-separated X handle allowlist (max 20). Mutually exclusive with excluded_x_handles. | |
| excluded_x_handles | No | Optional comma-separated X handle denylist (max 20). | |
| enable_image_understanding | No | Analyze images found on browsed pages and X posts (default on). | |
| enable_video_understanding | No | Analyze videos found in X posts (default off). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses return format, image handling constraints (max 5, types), and scoping of image/video understanding. It lacks explicit mention of read-only nature but is otherwise transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (6 sentences), front-loaded with core purpose, and every sentence adds meaningful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (14 parameters, optional features) and the presence of an output schema, the description covers most behavioral aspects. Minor gaps exist (e.g., rate limits, indexing scope), but overall it is thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by summarizing key parameters (domain filters, reasoning_effort) and clarifying behavior of image/video understanding fields, which are not detailed in schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs 'Live web and X search via Grok' and details return values. It uses a specific verb (search) and resource (web and X), and the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While no sibling tools exist for comparison, the description provides clear context on features and filters, sufficiently guiding usage. It could benefit from explicit when-not-to-use, but the absence of alternatives makes this less critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v0.1.0- First observed
web_search
TDQS
Only one tool exists, so there is no possibility of confusion or overlap with other tools.
With a single tool, naming consistency is inherently perfect as there is no pattern to break.
A single tool is slightly minimal but reasonably scoped for a focused web search server, as the tool itself is comprehensive.
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
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
Live AI-native web search with citations. One tool for every MCP client. Flat per-request pricing.
Docs: https://docs.keenable.ai/mcp-server Keenable is a free, remote MCP server that gives agents access to the web index. Search the web with ranked results and date/site filters, then fetch any indexed page as clean markdown. Works out of the box with no account or API key.
Scrape, crawl and search the web for AI agents via MCP.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that provides real-time web search and X (Twitter) search capabilities via the xAI API.243MIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that exposes powerful web search and scraping tools to AI agents and MCP-compatible clients.Apache 2.0
- AlicenseAqualityBmaintenanceMCP 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.31MIT
- FlicenseNot gradedqualityCmaintenanceMCP server providing web search, news search, and X/Twitter search capabilities via HTTP or stdio.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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