grok-search

grok-search

Provides AI-driven web search, page fetching, and site mapping with real xAI citations, enabling LLM clients to access up-to-date external information.

Category
访问服务器

README

这是图片 <div align="center">

<!-- # Grok Search MCP -->

English | 简体中文

Grok-with-Tavily MCP,为 Claude Code 提供更完善的网络访问能力

License: MIT Python 3.10+ FastMCP

</div>

这是 GuDaStudio/GrokSearch 的 fork(sunami-grok-search)。 上游的 web_search 把检索外包给上游网关,直连官方 api.x.ai 时不会真正检索, 只会让模型编造 citation_card 引用、sources_count 恒为 0。 本 fork 改走 xAI Responses API 的原生 web_search / x_search 工具, 引用从 annotations[].url_citation 结构化读取,并把 X 检索的账号/时间过滤开放为参数。 改动详情见 SUNAMI.md;换机器部署把 PROMPT.md 里的提示词丢给 agent 即可。下方为上游原始文档。


一、概述

Grok Search MCP 是一个基于 FastMCP 构建的 MCP 服务器,采用双引擎架构:Grok 负责 AI 驱动的智能搜索,Tavily 负责高保真网页抓取与站点映射,各取所长为 Claude Code / Cherry Studio 等LLM Client提供完整的实时网络访问能力。

Claude ──MCP──► Grok Search Server
                  ├─ web_search  ───► Grok API(AI 搜索)
                  ├─ web_fetch   ───► Tavily Extract → Firecrawl Scrape(内容抓取,自动降级)
                  └─ web_map     ───► Tavily Map(站点映射)

功能特性

  • 双引擎:Grok 搜索 + Tavily 抓取/映射,互补协作
  • Firecrawl 托底:Tavily 提取失败时自动降级到 Firecrawl Scrape,支持空内容自动重试
  • OpenAI 兼容接口,支持任意 Grok 镜像站
  • 自动时间注入(检测时间相关查询,注入本地时间上下文)
  • 一键禁用 Claude Code 官方 WebSearch/WebFetch,强制路由到本工具
  • 智能重试(支持 Retry-After 头解析 + 指数退避)
  • 父进程监控(Windows 下自动检测父进程退出,防止僵尸进程)

效果展示

我们以在cherry studio中配置本MCP为例,展示了claude-opus-4.6模型如何通过本项目实现外部知识搜集,降低幻觉率。 如上图,为公平实验,我们打开了claude模型内置的搜索工具,然而opus 4.6仍然相信自己的内部常识,不查询FastAPI的官方文档,以获取最新示例。 如上图,当打开grok-search MCP时,在相同的实验条件下,opus 4.6主动调用多次搜索,以获取官方文档,回答更可靠。

二、安装

前置条件

  • Python 3.10+
  • uv(推荐的 Python 包管理器)
  • Claude Code

<details> <summary><b>安装 uv</b></summary>

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

# Windows PowerShell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Windows 用户强烈推荐在 WSL 中运行本项目。

</details>

一键安装

若之前安装过本项目,使用以下命令卸载旧版MCP。

claude mcp remove grok-search

将以下命令中的环境变量替换为你自己的值后执行。Grok 接口需为 OpenAI 兼容格式;Tavily 为可选配置,未配置时工具 web_fetch 和 web_map 不可用。

GuDa 用户(推荐)

GuDa 用户只需配置 GUDA_API_KEY 即可享受完整服务,所有 API 地址自动派生:

claude mcp add-json grok-search --scope user '{
  "type": "stdio",
  "command": "uvx",
  "args": [
    "--from",
    "git+https://github.com/GuDaStudio/GrokSearch@grok-with-tavily",
    "grok-search"
  ],
  "env": {
    "GUDA_API_KEY": "your-guda-api-key"
  }
}'

自定义配置

如需使用自己的 API 端点,可分别配置各服务:

claude mcp add-json grok-search --scope user '{
  "type": "stdio",
  "command": "uvx",
  "args": [
    "--from",
    "git+https://github.com/GuDaStudio/GrokSearch@grok-with-tavily",
    "grok-search"
  ],
  "env": {
    "GROK_API_URL": "https://your-api-endpoint.com/v1",
    "GROK_API_KEY": "your-grok-api-key",
    "TAVILY_API_KEY": "tvly-your-tavily-key",
    "TAVILY_API_URL": "https://api.tavily.com"
  }
}'

<details> <summary>如果遇到 SSL / 证书验证错误</summary>

在部分企业网络或代理环境中,可能会出现类似错误:

certificate verify failed self signed certificate in certificate chain

可以在 uvx 参数中添加 --native-tls,使其使用系统证书库:

claude mcp add-json grok-search --scope user '{ "type": "stdio", "command": "uvx", "args": [ "--native-tls", "--from", "git+https://github.com/GuDaStudio/GrokSearch@grok-with-tavily", "grok-search" ], "env": { "GUDA_API_KEY": "your-guda-api-key" } }' </details> ```

除此之外,你还可以在env字段中配置更多环境变量

变量 必填 默认值 说明
GUDA_API_KEY ❌ - GuDa API 密钥(配置后自动派生所有服务的 URL 和 Key)
GUDA_BASE_URL ❌ https://code.guda.studio GuDa 服务基础地址
GROK_API_URL ❌ {GUDA_BASE_URL}/grok/v1 Grok API 地址(OpenAI 兼容格式),显式设置时覆盖 GuDa 派生值
GROK_API_KEY ❌ {GUDA_API_KEY} Grok API 密钥,显式设置时覆盖 GuDa 派生值
GROK_MODEL ❌ grok-4.20-beta 默认模型(设置后优先于 ~/.config/grok-search/config.json)
TAVILY_API_KEY ❌ {GUDA_API_KEY} Tavily API 密钥(用于 web_fetch / web_map)
TAVILY_API_URL ❌ {GUDA_BASE_URL}/tavily Tavily API 地址
TAVILY_ENABLED ❌ true 是否启用 Tavily
FIRECRAWL_API_KEY ❌ {GUDA_API_KEY} Firecrawl API 密钥(Tavily 失败时托底)
FIRECRAWL_API_URL ❌ {GUDA_BASE_URL}/firecrawl Firecrawl API 地址
GROK_DEBUG ❌ false 调试模式
GROK_LOG_LEVEL ❌ INFO 日志级别
GROK_LOG_DIR ❌ logs 日志目录
GROK_RETRY_MAX_ATTEMPTS ❌ 3 最大重试次数
GROK_RETRY_MULTIPLIER ❌ 1 重试退避乘数
GROK_RETRY_MAX_WAIT ❌ 10 重试最大等待秒数

注意:配置了 GUDA_API_KEY 后,GROK_API_URL/GROK_API_KEY/TAVILY_*/FIRECRAWL_* 均为可选,系统自动从 GUDA_BASE_URL 派生。显式设置的独立变量优先级更高。

验证安装

claude mcp list

🍟 显示连接成功后,我们十分推荐在 Claude 对话中输入

调用 grok-search toggle_builtin_tools,关闭Claude Code's built-in WebSearch and WebFetch tools

工具将自动修改项目级 .claude/settings.json 的 permissions.deny,一键禁用 Claude Code 官方的 WebSearch 和 WebFetch,从而迫使claude code调用本项目实现搜索!

三、MCP 工具介绍

<details> <summary>本项目提供八个 MCP 工具(展开查看)</summary>

web_search — AI 网络搜索

通过 Grok API 执行 AI 驱动的网络搜索,默认仅返回 Grok 的回答正文,并返回 session_id 以便后续获取信源。

web_search 输出不展开信源,仅返回 sources_count;信源会按 session_id 缓存在服务端,可用 get_sources 拉取。

参数 类型 必填 默认值 说明
query string ✅ - 搜索查询语句
platform string ❌ "" 聚焦平台(如 "Twitter", "GitHub, Reddit")
model string ❌ null 按次指定 Grok 模型 ID
extra_sources int ❌ 0 额外补充信源数量(Tavily/Firecrawl,可为 0 关闭)

自动检测查询中的时间相关关键词(如"最新""今天""recent"等),注入本地时间上下文以提升时效性搜索的准确度。

返回值(结构化字典):

  • session_id: 本次查询的会话 ID
  • content: Grok 回答正文(已自动剥离信源)
  • sources_count: 已缓存的信源数量

get_sources — 获取信源

通过 session_id 获取对应 web_search 的全部信源。

参数 类型 必填 说明
session_id string ✅ web_search 返回的 session_id

返回值(结构化字典):

  • session_id
  • sources_count
  • sources: 信源列表(每项包含 url,可能包含 title/description/provider)

web_fetch — 网页内容抓取

通过 Tavily Extract API 获取完整网页内容,返回 Markdown 格式。Tavily 失败时自动降级到 Firecrawl Scrape 进行托底抓取。

参数 类型 必填 说明
url string ✅ 目标网页 URL

web_map — 站点结构映射

通过 Tavily Map API 遍历网站结构,发现 URL 并生成站点地图。

参数 类型 必填 默认值 说明
url string ✅ - 起始 URL
instructions string ❌ "" 自然语言过滤指令
max_depth int ❌ 1 最大遍历深度(1-5)
max_breadth int ❌ 20 每页最大跟踪链接数(1-500)
limit int ❌ 50 总链接处理数上限(1-500)
timeout int ❌ 150 超时秒数(10-150)

get_config_info — 配置诊断

无需参数。显示所有配置状态、测试 Grok API 连接、返回响应时间和可用模型列表(API Key 自动脱敏)。

switch_model — 模型切换

参数 类型 必填 说明
model string ✅ 模型 ID(如 "grok-4-fast", "grok-2-latest")

切换后配置持久化到 ~/.config/grok-search/config.json,跨会话保持。

toggle_builtin_tools — 工具路由控制

参数 类型 必填 默认值 说明
action string ❌ "status" "on" 禁用官方工具 / "off" 启用官方工具 / "status" 查看状态

修改项目级 .claude/settings.json 的 permissions.deny,一键禁用 Claude Code 官方的 WebSearch 和 WebFetch。

search_planning — 搜索规划

结构化搜索规划脚手架(分阶段、多轮),用于在执行复杂搜索前先生成可执行的搜索计划。 </details>

四、常见问题

<details> <summary> Q: 必须同时配置 Grok 和 Tavily 吗? </summary> A: 配置 GUDA_API_KEY 即可获得完整的 Grok + Tavily + Firecrawl 服务。如不使用 GuDa,Grok(GROK_API_URL + GROK_API_KEY)为必填,提供核心搜索能力。Tavily 和 Firecrawl 均为可选:配置 Tavily 后 web_fetch 优先使用 Tavily Extract,失败时降级到 Firecrawl Scrape;两者均未配置时 web_fetch 将返回配置错误提示。web_map 依赖 Tavily。 </details>

<details> <summary> Q: Grok API 地址需要什么格式? </summary> A: 需要 OpenAI 兼容格式的 API 地址(支持 /chat/completions 和 /models 端点)。如使用官方 Grok,需通过兼容 OpenAI 格式的镜像站访问。 </details>

<details> <summary> Q: 如何验证配置? </summary> A: 在 Claude 对话中说"显示 grok-search 配置信息",将自动测试 API 连接并显示结果。 </details>

许可证

MIT License


<div align="center">

如果这个项目对您有帮助,请给个 Star!

Star History Chart </div>

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选