用于Google搜索和页面抓取的MCP服务器,使用headless Chromium
如果您想支持 noapi-google-mcp 或 gpt-oss-20B/120B-Vision 及其他即将推出的开源模型,请为我的 GPU 计算基金捐款:大约需要 3000 美元。
如果您觉得这个工具有用,请考虑支持持续开发和新增功能。
BTC:16DT4AHemLyn7C6P116YepjY518gu9wUUH
ETH:
0x7287D1F9c77832cFF246937af0443622bFdACD04
38 个工具。零 API 密钥。为任何本地 LLM 提供真正的 Google 搜索、实时信息流、视觉、OCR 和完整视频理解。
一个将您的本地 LLM 变为全功能助手的 MCP 服务器。真正的 Google 搜索结果、实时新闻和社交信息流、反向图像搜索、离线 OCR、YouTube 转录和片段提取——全部通过无头 Chromium 和开源机器学习模型在本地运行。无需 API 密钥、无使用限制、无云端依赖。
可与 LM Studio、Claude Desktop、OpenClaw、Ollama 以及任何兼容 MCP 的客户端配合使用。
Google 开始检测无头 Chromium 浏览器并显示 CAPTCHA 替代搜索结果(#2)。已正确修复此问题,随后又添加了一个神经网络 CAPTCHA 求解器,纯粹出于好玩。
隐形补丁:
navigator.webdriver、伪造浏览器插件、chrome.runtime,并移除 Playwright 指纹aarch64,现在匹配实际 Chromium 二进制文件)神经网络 CAPTCHA 求解器(MobileNetV2 + OpenCV):
它能解决所有 CAPTCHA 吗?不能。但它能通过其中一些,说实话我们构建它主要是因为我们可以。
一个完整的本地检索增强生成流水线,适用于 YouTube。订阅任意频道,当您检查信息流时,服务器会自动下载音频,使用 Whisper 进行转录,并将完整转录文本存储到支持 FTS5 全文搜索的 SQLite 中。每个视频中的每一个词都可被搜索——让您的 LLM 提出一个问题,它就能从相关视频中提取答案。
发现了感兴趣的内容?让 LLM 将该片段提取为剪辑。它会读取转录文本,找到精确的时间戳,然后为您裁剪视频。这是 AI/LLM 驱动的视频编辑的开端——您的 LLM 理解内容,并根据所说的话(而不仅仅是时间戳)来裁剪剪辑。
工作原理:
subscribe 订阅一个 YouTube 频道——通过句柄(@3Blue1Brown)、URL 或频道 IDcheck_feeds——新视频会被获取并在本地使用 faster-whisper 自动转录。转录文本被写入数据库以实现即时搜索。每次检查最多处理 5 个视频,并带有缓存以避免重复下载。search_feeds——跨所有转录文本进行全文搜索。支持 AND、OR、NOT 以及带引号的短语。您的 LLM 能找出回答您问题的确切视频和段落。extract_video_clip——告诉 LLM 您对什么感兴趣,它将从视频中裁剪出该片段。LLM 使用转录文本定位正确片段并自动提取。```
"Subscribe to @AndrejKarpathy on YouTube"
"Check my feeds"
"Search my feeds for backpropagation explained"
"What did Karpathy say about tokenization?"
"Extract the part where he explains gradient descent"
"Cut a clip of the hardware comparison section"无需嵌入、无需向量数据库、无需API——只需在你机器上运行的Whisper + SQLite FTS5。
> **路线图:** 片段提取是迈向完全AI驱动视频编辑的第一步。未来版本将添加音乐/音频叠加、视频混剪、多片段合成、为TikTok/Reels/Shorts的竖屏格式转换,以及自动精彩集锦——所有这些都由你的LLM理解内容来驱动。
---
### 实时订阅源
订阅新闻、Reddit、Hacker News、YouTube频道、Twitter/X账号、GitHub仓库、arXiv论文和播客。内容会被抓取并本地存储在SQLite中,支持全文搜索,LLM可即时访问。
| 新工具 | 功能说明 |
|----------|-------------|
| `subscribe` | 添加任何来源——新闻RSS、Reddit、HN、GitHub、arXiv、YouTube、播客、Twitter/X |
| `unsubscribe` | 移除一个订阅及其存储的内容 |
| `list_subscriptions` | 查看所有活跃订阅源及其条目数量 |
| `check_feeds` | 轮询所有订阅源,抓取新内容,自动转录YouTube视频 |
| `search_feeds` | 对订阅源收集的所有内容进行全文搜索 |
| `get_feed_items` | 浏览最近的条目,可按来源或类型筛选 |
**预配置的新闻源** —— 一个词即可订阅:`bbc`、`cnn`、`nyt`、`guardian`、`npr`、`aljazeera`、`techcrunch`、`ars`、`verge`、`wired`、`reuters`
**arXiv快捷方式** —— `ai`、`ml`、`cv`、`nlp`、`robotics`、`crypto`、`systems`、`hci````
"Subscribe to BBC News, r/LocalLLaMA, and Hacker News"
"Follow @elonmusk on Twitter"
"Subscribe to the YouTube channel @3Blue1Brown"
"Watch anthropics/claude-code on GitHub for new releases"
"Subscribe to the machine learning arXiv category"
"Check my feeds"
"Search my feeds for transformer architecture"
"What's new in my Reddit feeds?"
转录会议、转换格式、读取文档——全部本地处理,无需云端。
| 新工具 | 功能 |
|---|---|
transcribe_local | 使用Whisper转录任何本地音频或视频文件(mp3, wav, mp4, mkv等) |
convert_media | FFmpeg格式转换——视频转音频、格式互转、视频转GIF |
read_document | 从PDF、DOCX、HTML、CSV、JSON以及30多种文本格式中提取文字 |
拉取邮件、生成二维码、缩短链接、存档页面、查询维基百科、上传至S3。
**订阅源零额外依赖。** 完全基于 Python 标准库构建——SQLite 用于存储,FTS5 用于搜索,urllib 用于获取,xml.etree 用于解析。YouTube 和 Twitter 使用已有的 Playwright 浏览器。`convert_media` 需要 FFmpeg(通常已预装)。
---
## 所有 38 个工具按类别分类
### 实时订阅源
| 工具 | 描述 |
|------|------|
| `subscribe` | 订阅新闻、Reddit、HN、GitHub、arXiv、YouTube、播客、Twitter/X |
| `unsubscribe` | 移除订阅及其存储内容 |
| `list_subscriptions` | 列出所有活跃订阅及其项目数量 |
| `check_feeds` | 从所有或特定源获取新内容 |
| `search_feeds` | 对所有存储的订阅内容进行全文搜索 |
| `get_feed_items` | 按源或类型筛选获取最近项目 |
### Google 搜索与 Web
| 工具 | 描述 |
|------|------|
| `google_search` | 带时间筛选、站点筛选、分页、语言/区域的 Web 搜索 |
| `google_news` | 新闻搜索,内联显示文章缩略图 |
| `google_scholar` | 学术论文,含引用 |
| `google_images` | 图片搜索,结果在聊天中内联显示 |
| `google_trends` | 主题随时间热度、相关查询 |
| `visit_page` | 获取任意 URL 并提取可读文本 |
### 旅行与商业
| 工具 | 描述 |
|------|------|
| `google_shopping` | 产品搜索,含价格、商店、评分、图片 |
| `google_flights` | 航班搜索,含价格和旅行时间 |
| `google_hotels` | 酒店搜索,含图片、价格、评分、预订 URL |
| `google_translate` | 支持 100+ 种语言翻译 |
| `google_maps` | 地点搜索,含评分、评论和地图截图 |
| `google_maps_directions` | 路线导航,含逐步指示和地图截图 |
### 金融与信息
| 工具 | 描述 |
|------|------|
| `google_finance` | 股票价格、市场数据、公司信息 |
| `google_weather` | 当前天气状况和未来多天预报 |
| `google_books` | 图书搜索,含作者、ISBN、摘要 |
### 视觉与 OCR
| 工具 | 描述 |
|------|------|
| `google_lens` | 反向图片搜索——识别物体、产品、地标、文字 |
| `google_lens_detect` | 检测图像中的所有物体(OpenCV),并通过 Lens 识别每个物体 |
| `ocr_image` | 本地从图像中提取文字(RapidOCR,完全离线) |
| `list_images` | 列出目录中的图片文件,供视觉工具使用 |
### 视频与音频智能——AI 驱动的视频编辑
| 工具 | 描述 |
|------|------|
| `transcribe_video` | 下载并转写任意视频,带时间戳(faster-whisper) |
| `transcribe_local` | 转写本地音频/视频文件(mp3, wav, m4a, mp4, mkv 等) |
| `search_transcript` | 按关键词在转写后的视频中搜索主题 |
| `extract_video_clip` | AI 驱动的剪辑提取——告诉 LLM 你想要什么,它会根据转写上下文切割视频 |
| `convert_media` | 通过 FFmpeg 转换音视频格式 |
### 文档与数据
| 工具 | 描述 |
|------|------|
| `read_document` | 从 PDF、DOCX、HTML、CSV、JSON 及 30+ 种格式中提取文本 |
### 电子邮件
| 工具 | 描述 |
|------|------|
| `fetch_emails` | 通过 IMAP 拉取邮件——Gmail、Outlook、Yahoo、iCloud、任意 IMAP 服务器 |
### Web 工具
| 工具 | 描述 |
|------|------|
| `paste_text` | 将文本发布到 pastebin 并获取可分享的 URL |
| `shorten_url` | 通过 TinyURL 缩短任意 URL |
| `generate_qr` | 生成二维码图像(URL、Wi-Fi、联系人、任意数据) |
| `archive_webpage` | 在 Wayback Machine 上存档网页 |
| `wikipedia` | 任意语言的维基百科文章查询 |
### 云存储
| 工具 | 描述 |
|------|------|
| `upload_to_s3` | 上传文件到 MinIO、AWS S3、DigitalOcean Spaces、Cloudflare R2、Backblaze B2 |
---
## 支持的文件格式
### 文档 (`read_document`)
| 类别 | 格式 |
|------|------|
| 文档 | PDF(扫描页面有 OCR 后备)、DOCX |
| Web | HTML, HTM |
| 数据 | CSV, JSON, XML, YAML, YML, TOML |
| 文本 | TXT, MD, LOG |
| 配置 | INI, CFG, CONF, ENV |
| 代码 | PY, JS, TS, GO, RS, C, CPP, H, JAVA, KT, RB, SQL, R, M, SWIFT |
| Shell | SH, BASH, ZSH |
### 音频与视频 (`transcribe_local`, `transcribe_video`, `convert_media`)
| 类别 | 格式 |
|------|------|
| 音频 | MP3, WAV, M4A, FLAC, OGG, AAC, WMA, OPUS |
| 视频 | MP4, MKV, WEBM, AVI, MOV |
| 特殊 | GIF(视频转 GIF 输出) |
| 输入 | FFmpeg 能解码的任何格式(上百种格式) |
### 图片 (`google_lens`, `google_lens_detect`, `ocr_image`, `list_images`)
| 类别 | 格式 |
|------|------|
| 标准 | JPG, JPEG, PNG, GIF, BMP, WEBP |
| 专业 | TIFF, TIF, SVG |
| 输入方式 | 本地文件路径、公共 URL、base64(拖放到聊天中) |
---
## 为何选择此方案而非基于 API 的替代方案?
| | **noapi-google-search-mcp** | 基于 API 的 MCP 服务器 | OpenClaw 内置 |
|---|---|---|---|
| 需要 API 密钥 | **否** | 是(Google CSE API) | 是(Brave/Perplexity) |
| 成本 | **免费** | 每天 100 次查询后付费 | API 费用 |
| 设置时间 | **`pip install` + 运行** | 创建 Cloud 项目,启用 API,配置 | 多个 API 密钥 |
| 结果质量 | **真实的 Google 结果** | 自定义搜索引擎 | Brave 索引 |
| JavaScript 页面 | **渲染(Chromium)** | 无法渲染 JS | 无法渲染 JS |
| 工具数量 | **38** | 1-3 | 2(web_search, web_fetch) |
| Google 搜索 | 内置(带筛选) | 仅基础 | 不可用 |
| Google 购物 | 内置 | 不可用 | 不可用 |
| Google 航班 | 内置 | 不可用 | 不可用 |
| Google 酒店 | 内置 | 不可用 | 不可用 |
| Google 翻译 | 内置 | 需要单独 API | 不可用 |
| Google 地图 | 内置(含截图) | 不可用 | 不可用 |
| Google 地图导航 | 内置(含路线图) | 不可用 | 不可用 |
| Google 天气 | 内置 | 不可用 | 不可用 |
| Google 财经 | 内置 | 不可用 | 不可用 |
| Google 新闻 | 内置 | 通常不可用 | 不可用 |
| Google 学术 | 内置 | 不可用 | 不可用 |
| Google 图书 | 内置 | 不可用 | 不可用 |
| Google 图片 | 内置(在聊天中内联) | 需要单独 API | 不可用 |
| Google Lens | 内置(反向图片搜索) | 不可用 | 不可用 |
| 物体检测 | 内置(OpenCV + Lens) | 不可用 | 不可用 |
| 本地 OCR | 内置(离线) | 不可用 | 不可用 |
| 视频转写 | 内置(本地 Whisper) | 不可用 | 不可用 |
| 视频剪辑提取 | **内置(AI/LLM 驱动)** | 不可用 | 不可用 |
| YouTube RAG 流程 | **内置(订阅→转写→搜索)** | 不可用 | 不可用 |
| Google 趋势 | 内置 | 需要单独 API | 不可用 |
| 订阅源订阅 | **内置(8 种源类型)** | 不可用 | 不可用 |
| 全文订阅搜索 | **内置(SQLite FTS5)** | 不可用 | 不可用 |
| 自动转写订阅 | **内置(YouTube → Whisper)** | 不可用 | 不可用 |
| 本地文件转写 | **内置(任意音频/视频)** | 不可用 | 不可用 |
| 媒体格式转换 | **内置(FFmpeg)** | 不可用 | 不可用 |
| 文档阅读器 | **内置(PDF、DOCX 等)** | 不可用 | 不可用 |
| 电子邮件集成 | **内置(IMAP)** | 不可用 | 不可用 |
| 粘贴板 | **内置** | 不可用 | 不可用 |
| URL 缩短 | **内置(TinyURL)** | 不可用 | 不可用 |
| 二维码生成 | **内置(OpenCV)** | 不可用 | 不可用 |
| Web 存档 | **内置(Wayback Machine)** | 不可用 | 不可用 |
| 维基百科 | **内置** | 不可用 | 不可用 |
| S3/MinIO 上传 | **内置** | 不可用 | 不可用 |
| 页面获取 | 内置 | 通常分开 | 基础 |
---
## 工具详情与参数
### 订阅源工具
#### `subscribe` — 添加内容源
| 参数 | 描述 | 示例 |
|------|------|------|
| `source_type` | 源类型(必填) | `"news"`, `"reddit"`, `"hackernews"`, `"github"`, `"arxiv"`, `"youtube"`, `"podcast"`, `"twitter"` |
| `identifier` | 源标识符(必填) | `"bbc"`, `"LocalLLaMA"`, `"top"`, `"anthropics/claude-code"`, `"ml"`, `"@3Blue1Brown"`, `"https://..."`, `"elonmusk"` |
| `name` | 显示名称(可选) | `"My Custom Feed"` |
**各类型的标识符格式:**
- **news:** 预设名称(`bbc`, `cnn`, `nyt`, `guardian`, `npr`, `aljazeera`, `techcrunch`, `ars`, `verge`, `wired`, `reuters`)或任意 RSS URL
- **reddit:** subreddit 名称(例如 `LocalLLaMA`, `programming`)
- **hackernews:** `top`, `new` 或 `best`
- **github:** `owner/repo`(例如 `anthropics/claude-code`)
- **arxiv:** 快捷名称(`ai`, `ml`, `cv`, `nlp`, `robotics`, `crypto`)或类似 `cs.AI` 的类别
- **youtube:** 频道句柄(`@3Blue1Brown`)、URL 或频道 ID(`UCxxxx`)
- **podcast:** RSS 订阅源 URL
- **twitter:** 用户名(带或不带 `@`)
#### `check_feeds` — 获取新内容
| 参数 | 描述 | 示例 |
|------|------|------|
| `source_type` | 限制为一种类型(可选) | `"news"`, `"reddit"` |
#### `search_feeds` — 全文搜索
| 参数 | 描述 | 示例 |
|------|------|------|
| `query` | 搜索查询(必填)——支持 FTS5: AND, OR, NOT, "引号短语" | `"machine learning"`, `"GPU NOT NVIDIA"` |
| `source_type` | 限制为一种类型(可选) | `"news"` |
| `limit` | 最大结果数(默认 20) | `10` |
#### `get_feed_items` — 浏览最近项目
| 参数 | 描述 | 示例 |
|------|------|------|
| `source` | 按源名称筛选(可选) | `"BBC"`, `"LocalLLaMA"` |
| `source_type` | 按类型筛选(可选) | `"reddit"`, `"hackernews"` |
| `limit` | 最大项目数(默认 20) | `10` |
---
### Google 搜索工具
#### `google_search` — Web 搜索
| 参数 | 描述 | 示例 |
|------|------|------|
| `query` | 搜索查询(必填) | `"best python frameworks 2025"` |
| `num_results` | 结果数量(1-10,默认 5) | `5` |
| `time_range` | 按时间范围筛选 | `"past_hour"`, `"past_day"`, `"past_week"`, `"past_month"`, `"past_year"` |
| `site` | 限制域名 | `"reddit.com"`, `"stackoverflow.com"`, `"github.com"` |
| `page` | 结果页数(1-10,默认 1) | `2` |
| `language` | 语言代码 | `"en"`, `"de"`, `"fr"`, `"ja"` |
| `region` | 国家/地区代码 | `"us"`, `"gb"`, `"de"`, `"jp"` |
#### `google_shopping` — 产品搜索
| 参数 | 描述 | 示例 |
|------|------|------|
| `query` | 产品搜索查询(必填) | `"Sony WH-1000XM5"` |
| `num_results` | 结果数量(1-10,默认 5) | `5` |
#### `google_flights` — 航班搜索
| 参数 | 描述 | 示例 |
|------|------|------|
| `origin` | 出发城市或机场(必填) | `"New York"`, `"LAX"` |
| `destination` | 到达城市或机场(必填) | `"London"`, `"NRT"` |
| `date` | 出发日期(可选) | `"March 15"` |
| `return_date` | 返回日期(可选) | `"March 22"` |

#### `google_hotels` — 酒店搜索
| 参数 | 描述 | 示例 |
|------|------|------|
| `query` | 酒店搜索(含位置)(必填) | `"Paris"`, `"Tokyo near Shibuya"` |
| `num_results` | 结果数量(1-10,默认 5) | `5` |

#### `google_translate` — 翻译
| 参数 | 描述 | 示例 |
|------|------|------|
| `text` | 要翻译的文本(必填) | `"Hello, how are you?"` |
| `to_language` | 目标语言(必填) | `"Spanish"`, `"Japanese"` |
| `from_language` | 源语言(可选,自动检测) | `"English"` |
#### `google_maps` — 地点搜索(含地图截图)
| 参数 | 描述 | 示例 |
|------|------|------|
| `query` | 地点搜索查询(必填) | `"pizza near Central Park"` |
| `num_results` | 结果数量(1-10,默认 5) | `5` |

#### `google_maps_directions` — 路线导航(含地图)
| 参数 | 描述 | 示例 |
|------|------|------|
| `origin` | 起点位置(必填) | `"Berlin"` |
| `destination` | 终点位置(必填) | `"Munich"` |
| `mode` | 出行方式(默认 "driving") | `"driving"`, `"walking"`, `"transit"`, `"cycling"` |

#### `google_weather` — 天气
| 参数 | 描述 | 示例 |
|------|------|------|
| `location` | 城市或位置(必填) | `"Dubai"`, `"Tokyo"` |
#### `google_finance` — 股票与市场数据
| 参数 | 描述 | 示例 |
|------|------|------|
| `query` | 股票代码或公司名称(必填) | `"AAPL:NASDAQ"`, `"TSLA:NASDAQ"` |

#### `google_news` — 新闻搜索
| 参数 | 描述 | 示例 |
|------|------|------|
| `query` | 新闻搜索查询(必填) | `"AI regulation"` |
| `num_results` | 结果数量(1-10,默认 5) | `5` |

#### `google_scholar` — 学术搜索
| 参数 | 描述 | 示例 |
|------|------|------|
| `query` | 学术搜索查询(必填) | `"transformer attention mechanism"` |
| `num_results` | 结果数量(1-10,默认 5) | `5` |
#### `google_books` — 图书搜索
| 参数 | 描述 | 示例 |
|------|------|------|
| `query` | 图书搜索查询(必填) | `"machine learning"` |
| `num_results` | 结果数量(1-10,默认 5) | `5` |
#### `google_images` — 图片搜索(聊天内联)
| 参数 | 描述 | 示例 |
|------|------|------|
| `query` | 图片搜索查询(必填) | `"sunset over ocean"` |
| `num_results` | 结果数量(1-10,默认 5) | `5` |


#### `google_trends` — 趋势
| 参数 | 描述 | 示例 |
|------|------|------|
| `query` | 主题(必填) | `"artificial intelligence"` |
---
### 视觉与 OCR 工具
#### `google_lens` — 反向图片搜索
识别物体、产品、品牌、地标和文字。支持 URL、本地文件和 base64 拖放。
| 参数 | 描述 | 示例 |
|------|------|------|
| `image_source` | 图片 URL、文件路径或 base64(必填) | `"https://example.com/photo.jpg"` 或 `"/home/user/image.jpg"` |

#### `google_lens_detect` — 物体检测与识别
检测所有物体(OpenCV),裁剪每个物体,通过 Lens 单独识别。
| 参数 | 描述 | 示例 |
|------|------|------|
| `image_source` | 本地文件路径或 base64(必填) | `"/home/user/photo.jpg"` |
#### `ocr_image` — 本地 OCR(离线)
使用 RapidOCR 从图像中提取文字。无需网络。
| 参数 | 描述 | 示例 |
|------|------|------|
| `image_source` | 本地文件路径或 base64(必填) | `"/home/user/screenshot.png"` |

#### `list_images` — 图片发现
| 参数 | 描述 | 示例 |
|------|------|------|
| `directory` | 要扫描的文件夹(默认 `~/lens/`) | `"/home/user/photos"` |
---
### 视频智能工具
#### `transcribe_video` — 视频转写
使用 faster-whisper 下载并转写任何 YouTube 视频(或视频 URL),带时间戳。
| 参数 | 描述 | 示例 |
|------|------|------|
| `url` | YouTube 或视频 URL(必填) | `"https://youtube.com/watch?v=..."` |
| `model_size` | Whisper 模型大小(默认:tiny) | `"tiny"`, `"base"`, `"small"`, `"medium"`, `"large"` |
| `language` | 语言代码(可选,自动检测) | `"en"` |
#### `search_transcript` — 转写搜索
| 参数 | 描述 | 示例 |
|------|------|------|
| `url` | 与 transcribe_video 使用的相同 URL(必填) | `"https://youtube.com/watch?v=..."` |
| `query` | 关键词或短语(必填) | `"memory bandwidth"` |
| `context_segments` | 上下文片段数(默认:2) | `3` |
#### `extract_video_clip` — 按主题提取剪辑
询问"提取关于X的部分",LLM 会从转写中找到时间戳并剪辑。
| 参数 | 描述 | 示例 |
|------|------|------|
| `url` | YouTube URL 或本地视频(必填) | `"https://youtube.com/watch?v=..."` |
| `start_seconds` | 开始时间(秒)(必填) | `150` |
| `end_seconds` | 结束时间(秒)(必填) | `315` |
| `buffer_seconds` | 前后额外秒数(默认:3) | `5.0` |
| `output_filename` | 自定义文件名(可选) | `"hardware_overview"` |
---
## 示例提示
### 订阅源订阅
| 你输入的内容 | 调用的工具 |
|--------------|-------------|
| *"订阅 BBC 新闻和 CNN"* | `subscribe` |
| *"关注 Reddit 上的 r/LocalLLaMA"* | `subscribe` |
| *"监控 Hacker News 头条故事"* | `subscribe` |
| *"关注 anthropics/claude-code 的新版本"* | `subscribe` |
| *"在 YouTube 上订阅 @3Blue1Brown"* | `subscribe` |
| *"在 Twitter 上关注 @elonmusk"* | `subscribe` |
| *"订阅 ML arXiv 类别"* | `subscribe` |
| *"检查我的订阅"* | `check_feeds` |
| *"我的订阅有什么新内容?"* | `check_feeds` |
| *"在我的订阅中搜索 transformer 架构"* | `search_feeds` |
| *"显示最新的 Reddit 帖子"* | `get_feed_items` |
| *"我的订阅有哪些?"* | `list_subscriptions` |
| *"取消订阅 BBC 新闻"* | `unsubscribe` |
### Web 搜索
| 你输入的内容 | 调用的工具 | 使用的参数 |
|--------------|-------------|-------------|
| *"搜索最好的 Python Web 框架"* | `google_search` | `query` |
| *"查找关于家庭实验室设置的 Reddit 讨论"* | `google_search` | `query` + `site="reddit.com"` |
| *"在 Stack Overflow 上搜索异步 Python 示例"* | `google_search` | `query` + `site="stackoverflow.com"` |
| *"本周 AI 有什么新进展?"* | `google_search` | `query` + `time_range="past_week"` |
| *"在 Hacker News 上搜索关于 Rust 的帖子"* | `google_search` | `query` + `site="news.ycombinator.com"` |
| *"获取 ML 教程结果的第 2 页"* | `google_search` | `query` + `page=2` |
| *"用日语搜索东京的餐厅"* | `google_search` | `query` + `language="ja"` + `region="jp"` |
### 购物与旅行
| 你输入的内容 | 调用的工具 |
|--------------|-------------|
| *"找到最便宜的 MacBook Air"* | `google_shopping` |
| *"查找从纽约到伦敦的航班"* | `google_flights` |
| *"查找巴黎下周末的酒店"* | `google_hotels` |
| *"将 'hello world' 翻译成日语"* | `google_translate` |
### 地图与导航
| 你输入的内容 | 调用的工具 |
|--------------|-------------|
| *"查找时代广场附近的意大利餐厅"* | `google_maps` |
| *"获取从柏林到慕尼黑的路线"* | `google_maps_directions` |
| *"从埃菲尔铁塔到卢浮宫的步行路线"* | `google_maps_directions` |
### 金融、天气与信息
| 你输入的内容 | 调用的工具 |
|--------------|-------------|
| *"苹果的股价是多少?"* | `google_finance` |
| *"迪拜的天气怎么样?"* | `google_weather` |
| *"今天的头条新闻有哪些?"* | `google_news` |
| *"查找关于 transformer 注意力机制的论文"* | `google_scholar` |
| *"查找关于机器学习的书籍"* | `google_books` |### 图像与视觉
| 你输入的内容 | 调用的工具 |
|--------------|-------------|
| *"展示一下北极光的图片"* | `google_images` |
| *"这是什么产品?/path/to/photo.jpg"* | `google_lens` |
| *"识别这张照片中的所有物体"* | `google_lens_detect` |
| *"读取这张截图中的文字"* | `ocr_image` |
| 将图片拖入聊天 + *"这是什么?"* | `google_lens` |
| 将图片拖入聊天 + *"读取文字"* | `ocr_image` |
> **提示:** 要启用 LM Studio 中仅文本模型的拖放图片功能,请在模型目录中添加一个 `model.yaml` 文件,内容包含 `metadataOverrides: { vision: true }`。图片将以 base64 形式发送,MCP 工具会自动处理。
### 视频智能与 AI 驱动的片段提取
| 你输入的内容 | 调用的工具 |
|--------------|-------------|
| *"转录此视频:https://youtube.com/watch?v=..."* | `transcribe_video` |
| *"他们在这个视频中讨论了什么?"* | `transcribe_video` |
| *"找到他们讨论内存带宽的地方"* | `search_transcript` |
| *"提取他们讨论定价的部分"* | `extract_video_clip` |
| *"截取硬件对比部分的片段"* | `extract_video_clip` |
| *"转录 ~/meeting.mp3"* | `transcribe_local` |
| *"将 video.mp4 转换为 mp3"* | `convert_media` |
| *"将此视频转换为 GIF"* | `convert_media` |
### 文档与电子邮件
| 你输入的内容 | 调用的工具 |
|--------------|-------------|
| *"读取此 PDF:~/report.pdf"* | `read_document` |
| *"从 ~/contract.docx 中提取文本"* | `read_document` |
| *"为我阅读这篇文章:https://..."* | `visit_page` |
| *"检查我的邮箱 [email protected],密码:xxxx"* | `fetch_emails` |
| *"从 Outlook 拉取我的最新 10 封邮件"* | `fetch_emails` |
### 网络工具与云服务
| 你输入的内容 | 调用的工具 |
|--------------|-------------|
| *"缩短此 URL:https://very-long-url..."* | `shorten_url` |
| *"为 https://mysite.com 生成二维码"* | `generate_qr` |
| *"为我的 Wi-Fi 网络生成二维码"* | `generate_qr` |
| *"将此代码发布到 pastebin"* | `paste_text` |
| *"归档此文章:https://news.example.com/story"* | `archive_webpage` |
| *"维基百科:量子计算"* | `wikipedia` |
| *"在德语版维基百科上查找阿波罗 11 号任务"* | `wikipedia` |
| *"将 report.pdf 上传到我的 MinIO 存储桶"* | `upload_to_s3` |
| *"将 backup.tar.gz 存储到 S3 存储桶 my-backups"* | `upload_to_s3` |
---
## 安装
### 快速安装(pipx - 推荐)```bash
pipx install noapi-google-search-mcp
playwright install chromium
python3 -m venv ~/.local/share/noapi-google-search-mcp ~/.local/share/noapi-google-search-mcp/bin/pip install noapi-google-search-mcp ~/.local/share/noapi-google-search-mcp/bin/playwright install chromium
### Python 3.13 / OCR
核心包可在所有支持的 Python 版本上安装,包括 3.13。OCR 是可选的,因为 `rapidocr-onnxruntime` 上游尚未提供 Python 3.13 的 wheel 包([RapidAI/RapidOCR#579](https://github.com/RapidAI/RapidOCR/issues/579))。除 OCR 工具(`ocr_image` 和 `read_document` 中的扫描 PDF 回退功能)外,其他所有功能无需 OCR 即可正常工作。
要启用 OCR,请在兼容的 Python(3.10–3.12)上添加 `[ocr]` 扩展:```bash
pipx install "noapi-google-search-mcp[ocr]"
如果您只安装了核心包,之后未安装额外依赖就调用 OCR 工具,工具会返回一条简短消息,提示您安装 "noapi-google-search-mcp[ocr]" 而不是崩溃。
添加到 ~/.lmstudio/mcp.json:
{
"mcpServers": {
"google-search": {
"command": "noapi-google-search-mcp",
"env": {
"PYTHONUNBUFFERED": "1"
}
}
}
}
```
如果安装在 venv 中,请使用完整路径:`~/.local/share/noapi-google-search-mcp/bin/noapi-google-search-mcp`
### Claude Desktop
在你的 Claude Desktop 配置中添加(`claude_desktop_config.json`):```json
{
"mcpServers": {
"google-search": {
"command": "noapi-google-search-mcp"
}
}
}
```
### OpenClaw
添加到您的代理配置:```yaml
mcp_servers:
google-search:
command: "noapi-google-search-mcp"
env:
PYTHONUNBUFFERED: "1"
```
这使你的 OpenClaw 代理能够访问所有 38 种工具 — 真实的 Google 搜索、实时信息流、视觉、OCR 和视频智能 — 而无需任何 API 密钥。
### 作为 CLI```bash
noapi-google-search-mcp
```
或者:```bash
python -m google_search_mcp
```
## 开发```bash
git clone https://github.com/VincentKaufmann/noapi-google-search-mcp.git
cd google-search-mcp
pip install -e .
playwright install chromium
```
## 许可证
MIT
| 新工具 | 功能 |
|---|
fetch_emails | 通过IMAP拉取邮件——Gmail、Outlook、Yahoo以及任何IMAP服务器 |
paste_text | 将文本发布到pastebin并获取可分享链接 |
shorten_url | 通过TinyURL缩短任意URL |
generate_qr | 为URL、Wi-Fi、联系人等任何数据生成二维码图像 |
archive_webpage | 将网页快照保存到Wayback Machine |
wikipedia | 查询任何语言、任何维基百科条目,支持摘要 |
upload_to_s3 | 上传文件到MinIO、AWS S3、DigitalOcean Spaces、Cloudflare R2 |
| "Transcribe this recording: ~/meeting.mp3" | |
| "Convert video.mp4 to mp3" | |
| "Read this PDF: ~/report.pdf" | |
| "Check my email: [email protected] password: xxxx" | |
| "Shorten this URL: https://very-long-url..." | |
| "Generate a QR code for https://mysite.com" | |
| "Archive this article: https://news.example.com/story" | |
| "Wikipedia: quantum computing" | |
| "Upload report.pdf to my MinIO bucket" |