Rust重写GrokSearch MCP,内存不到5MB
速览
该项目用Rust重写了GrokSearch MCP,实现极低内存占用和快速启动。整合了Grok联网搜索、Tavily抓取和Firecrawl兜底,让AI客户端轻松获得实时联网能力。支持多种配置,包括API密钥、模型选择等,并持续更新优化智能源提取等功能。
AI 深度解读
背景
在 AI 辅助编程和智能体开发领域,MCP(Model Context Protocol)已成为连接大语言模型与外部工具的关键桥梁。xAI 的 Grok 模型以其强大的网络搜索能力受到关注,但原有的 Grok 联网搜索 MCP 实现(基于 Node/Python)存在内存占用高、冷启动慢的痛点。为追求极致轻量和跨平台兼容,社区开发者使用 Rust 语言重写了 GrokSearch MCP,诞生了 grok-search-rs 项目。该方案将 Grok 联网搜索、Tavily 网页抓取、Firecrawl 兜底整合为一体,使 Claude Code、Codex、Cursor 等 MCP 客户端获得实时联网与全文抓取能力,同时将运行内存压缩至 5MB 以下。
核心内容
grok-search-rs 是一个基于 Rust 编写的单文件二进制 MCP 服务器,旨在替代孙佬(@DaiSun)原版 GrokSearch 的 Node/Python 实现。它通过标准输入输出(stdio)与 MCP 客户端通信,支持跨平台直接运行,无需 Node 或 Python 运行时。
安装与配置
用户可通过 npx 或 npm 全局安装(npm install -g grok-search-rs)来获取二进制文件。在 MCP 配置中,直接指定命令为 grok-search-rs,并设置以下环境变量:
FIRECRAWL_API_KEY:Firecrawl API 密钥(可选)GROK_SEARCH_API_KEY:Grok(xAI)API 密钥(必填)GROK_SEARCH_MODEL:模型名称,默认grok-4-1-fast-reasoning,可改为grok-4或其他兼容型号GROK_SEARCH_URL:API 端点,支持根 URL 或/v1路径,服务自动归一化到/v1/responsesTAVILY_API_KEY:Tavily API 密钥(必填)TAVILY_API_URL:Tavily API 地址,默认https://api.tavily.com
项目默认开启 web_search 工具调用,并可配置开启 x_search。
API Key 获取方式
- Grok(xAI):推荐通过 xAI 官方平台(https://x.ai/api)创建 API Key,开头为
xai-...;也可使用 new-api/one-api 等中转服务。 - Tavily:在 https://tavily.com 注册后控制台生成 Key,免费额度足够个人日常使用。
- Firecrawl(可选):在 Firecrawl 官网注册获取 Key,用于 Tavily 拒绝或返回过薄内容时兜底抓取网页全文。
更新日志亮点
-
V0.1.14 (2026-6-5):
web_fetch工具增加智能源提取功能,对 GitHub issue/PR、StackExchange/MathOverflow、arXiv、Wikipedia 链接使用专用解析器返回结构化 Markdown(标题、状态/标签、采纳答案、论文摘要、按票排序的回答等),其他链接走通用通道。返回新增source_type和fallback_reason字段。web_search新增可选参数include_content,开启后自动补全返回来源的正文,减少一次web_fetch往返。新增环境变量:GITHUB_TOKEN:GitHub 抓取鉴权(匿名限 60 次/小时,加 Token 可提升)GROK_SEARCH_SOURCE_MAX_ANSWERS:StackExchange 回答折叠上限(默认 5)GROK_SEARCH_SOURCE_MAX_COMMENTS:评论折叠上限(默认 30)GROK_SEARCH_ENRICH_CONCURRENCY:富化并发数(默认 3,范围 1–5)GROK_SEARCH_ENRICH_MAX_CHARS:每条富化正文字数上限(默认 15000)
-
V0.1.13 (2026-5-19):支持 Grok OAuth 模式登录,提供
grok-search-rs login、status、logout命令。 -
V0.1.12 (2026-5-16):支持 chat/completions 格式;Windows 下使用
"command": "grok-search-rs.exe";提供 npx 方式配置示例。
npx 配置示例
{
"type": "stdio",
"command": "npx",
"args": ["-y", "grok-search-rs"],
"env": {
"GROK_SEARCH_API_KEY": "xai-...",
"TAVILY_API_KEY": "tvly-..."
}
}
关键要点
- 极致轻量:Rust 实现为单文件二进制,运行时内存占用不到 5MB,冷启动为毫秒级;相比原 Node/Python 版本(30~50MB+)显著降低资源消耗。
- 跨平台单二进制:一份代码编译出各平台可执行文件,无需安装运行时依赖,部署简便。
- 纯 stdio MCP 接口:通过标准输入输出与任意 MCP 客户端(如 Claude Code、Codex、Cursor)集成,开箱即用。
- 多搜索引擎兜底:默认使用 Grok 的 web_search,同时整合 Tavily 抓取与 Firecrawl 兜底,遇到 Tavily 拒绝或内容过薄时自动切换,提高抓取成功率。
- 智能源提取:V0.1.14 为 GitHub、StackExchange、arXiv、Wikipedia 等专业站点提供专用解析器,返回结构化 Markdown(含标签、采纳答案、论文摘要等),提升信息质量。
- 内联富化能力:web_search 新增
include_content参数,可在一次搜索调用中直接返回网页正文,减少 MCP 往返次数。 - OAuth 登录:V0.1.13 支持 Grok OAuth 模式,方便使用账户凭据而非 API Key。
- 环境变量可调:提供丰富的环境变量用于限制抓取深度、并发数、字数上限等,满足不同场景需求。
- 兼容 chat/completions 格式:V0.1.12 起支持 OpenAI 兼容 API 格式,便于集成其他系统。
- 多平台支持:Windows、macOS、Linux 均可使用,Windows 需指定
.exe。
意义与影响
grok-search-rs 通过 Rust 重写将 MCP 服务的内存开销降低一个数量级,解决了 AI 编程工具本地运行时资源紧张的问题。其单二进制分发模式降低了 MCP 插件的安装门槛,使得开发者可以轻松在低配设备或容器环境中获得实时联网搜索能力。智能源提取功能的加入,使得 AI 智能体能够直接消费结构化的社区讨论、论文摘要等高质量内容,减少后处理成本。该项目展示了 Rust 在构建轻量级 MCP 服务方面的优势,为后续类似工具(如网页抓取、数据库查询等 MCP)提供了可复用的架构范本。同时,它与原版 GrokSearch 生态兼容,用户可平滑迁移,体现了开源社区协作和迭代的效率。
