grok-search

English | 简体中文
Grok-with-Tavily MCP,为 Claude Code 提供更完善的网络访问能力
这是 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
# 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 中运行本项目。
一键安装
若之前安装过本项目,使用以下命令卸载旧版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"
}
}'在部分企业网络或代理环境中,可能会出现类似错误:
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" } }'
除此之外,你还可以在env字段中配置更多环境变量
变量 | 必填 | 默认值 | 说明 |
| ❌ | - | GuDa API 密钥(配置后自动派生所有服务的 URL 和 Key) |
| ❌ |
| GuDa 服务基础地址 |
| ❌ |
| Grok API 地址(OpenAI 兼容格式),显式设置时覆盖 GuDa 派生值 |
| ❌ |
| Grok API 密钥,显式设置时覆盖 GuDa 派生值 |
| ❌ |
| 默认模型(设置后优先于 |
| ❌ |
| Tavily API 密钥(用于 web_fetch / web_map) |
| ❌ |
| Tavily API 地址 |
| ❌ |
| 是否启用 Tavily |
| ❌ |
| Firecrawl API 密钥(Tavily 失败时托底) |
| ❌ |
| Firecrawl API 地址 |
| ❌ |
| 调试模式 |
| ❌ |
| 日志级别 |
| ❌ |
| 日志目录 |
| ❌ |
| 最大重试次数 |
| ❌ |
| 重试退避乘数 |
| ❌ |
| 重试最大等待秒数 |
注意:配置了
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 工具介绍
web_search — AI 网络搜索
通过 Grok API 执行 AI 驱动的网络搜索,默认仅返回 Grok 的回答正文,并返回 session_id 以便后续获取信源。
web_search 输出不展开信源,仅返回 sources_count;信源会按 session_id 缓存在服务端,可用 get_sources 拉取。
参数 | 类型 | 必填 | 默认值 | 说明 |
| string | ✅ | - | 搜索查询语句 |
| string | ❌ |
| 聚焦平台(如 |
| string | ❌ |
| 按次指定 Grok 模型 ID |
| int | ❌ |
| 额外补充信源数量(Tavily/Firecrawl,可为 0 关闭) |
自动检测查询中的时间相关关键词(如"最新""今天""recent"等),注入本地时间上下文以提升时效性搜索的准确度。
返回值(结构化字典):
session_id: 本次查询的会话 IDcontent: Grok 回答正文(已自动剥离信源)sources_count: 已缓存的信源数量
get_sources — 获取信源
通过 session_id 获取对应 web_search 的全部信源。
参数 | 类型 | 必填 | 说明 |
| string | ✅ |
|
返回值(结构化字典):
session_idsources_countsources: 信源列表(每项包含url,可能包含title/description/provider)
web_fetch — 网页内容抓取
通过 Tavily Extract API 获取完整网页内容,返回 Markdown 格式。Tavily 失败时自动降级到 Firecrawl Scrape 进行托底抓取。
参数 | 类型 | 必填 | 说明 |
| string | ✅ | 目标网页 URL |
web_map — 站点结构映射
通过 Tavily Map API 遍历网站结构,发现 URL 并生成站点地图。
参数 | 类型 | 必填 | 默认值 | 说明 |
| string | ✅ | - | 起始 URL |
| string | ❌ |
| 自然语言过滤指令 |
| int | ❌ |
| 最大遍历深度(1-5) |
| int | ❌ |
| 每页最大跟踪链接数(1-500) |
| int | ❌ |
| 总链接处理数上限(1-500) |
| int | ❌ |
| 超时秒数(10-150) |
get_config_info — 配置诊断
无需参数。显示所有配置状态、测试 Grok API 连接、返回响应时间和可用模型列表(API Key 自动脱敏)。
switch_model — 模型切换
参数 | 类型 | 必填 | 说明 |
| string | ✅ | 模型 ID(如 |
切换后配置持久化到 ~/.config/grok-search/config.json,跨会话保持。
toggle_builtin_tools — 工具路由控制
参数 | 类型 | 必填 | 默认值 | 说明 |
| string | ❌ |
|
|
修改项目级 .claude/settings.json 的 permissions.deny,一键禁用 Claude Code 官方的 WebSearch 和 WebFetch。
search_planning — 搜索规划
结构化搜索规划脚手架(分阶段、多轮),用于在执行复杂搜索前先生成可执行的搜索计划。
四、常见问题
许可证
如果这个项目对您有帮助,请给个 Star!
This server cannot be installed
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
LLM-ready web search + instant answers + URL-to-clean-text fetch for agents and RAG.
The best web search for your AI Agent
Web search, page extraction and structured commerce, social and business data for AI agents
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/zhehaosun717/sunami-grok-search'
If you have feedback or need assistance with the MCP directory API, please join our Discord server