← 返回目录
O

Open WebSearch

社区
无需 API 密钥的多引擎网页搜索与内容抓取
分类
其他
Stars
★ 1.9k 非常热门
传输方式
stdio(本地进程) · Streamable HTTP
运行环境
Node.js · Docker
凭据
无需凭据
许可证
Apache-2.0
最近提交
工具数
6
51FMRS · D

open-websearch 是一个功能丰富的多引擎搜索 MCP 服务器,提供 CLI 和本地守护进程,无需 API 密钥。它支持多种搜索后端和内容抓取。但依赖爬虫,存在被封锁的风险,适合个人开发和小型项目,不适合高可靠性要求的场景。

最强项 · 文档质量 12/20 最弱项 · 可靠性 8/20

可靠性
8/20
安全与权限
11/20
维护活跃度
10/20
文档质量
12/20
安装易用性
10/20
查看各项评分依据
可靠性 8/20
源码显示服务器支持 stdio/HTTP/SSE 三种传输模式,并在构建脚本中生成统一的 build/index.js 入口;README 列出的 search 与五个 fetch 工具与源码实现(src/tools 下的 search、fetchLinuxDoArticle、fetchCsdnArticle、fetchGithubReadme、fetchJuejinArticle、fetchWebContent)一一对应,工具名称和参数(query/limit/engines/searchMode、url/maxChars)在实现中均有体现。仓库包含 GitHub Actions CI(.github/workflows/ci.yml)和覆盖 search 核心路径的测试套件(test/ 下有 search 相关测试),这是关键路径可复现性的直接证据。扣分原因:静态审查无法验证真实运行时的行为;多搜索引擎依赖目标网站 HTML 结构,天然脆弱;部分引擎(如 linux.do)在 README 中标注为暂时不支持、搜索工具仍有相关代码路径;playwright 回退在未安装浏览器时会产生额外的不确定性;错误处理和边界情况(如引擎限流、HTML 结构变化)只部分被测试覆盖。
安全与权限 11/20
未发现恶意代码、凭据窃取或隐蔽外传的迹象;项目设计为无 API key 的抓取型服务,凭据面很小。服务器默认绑定 localhost:3000(示例配置也使用 localhost),且内置 DNS 私有地址拦截(FAKE_IP_CIDRS 与私网 DNS 答案拦截)以减轻 SSRF 面;fetchWebContent 有明确的内部网络目标屏蔽逻辑。USE_PROXY/PROXY_URL 是显式代理配置,README 明确说明 Axios 不再自动读取环境代理,行为可控。扣分原因:工具设计上允许任意 URL 抓取且默认无鉴权,HTTP/SSE 模式在 localhost 之外监听时没有认证或确认机制;危险操作(公网内网探测、大规模批量搜索)没有确认环节;代理与 TLS 降级(FETCH_WEB_INSECURE_TLS)存在被滥用风险,README 只给出使用说明而没有安全加固指导;安装示例中的 Docker 命令带有 ENABLE_CORS=true/CORS_ORIGIN=*,会放大跨域暴露面。
维护活跃度 10/20
仓库有 Apache-2.0 许可证、版本标签、Docker 镜像自动构建工作流(.github/workflows/docker.yml)以及 CI 工作流;README 显示近期的发布与变更记录(例如 Playwright 改为可选、代理行为调整),问题响应和提交活动没有在静态数据中直接体现,但仓库未被归档、有 1685 stars 且保持更新。扣分原因:SCR 要求明确的维护治理、依赖更新策略和安全响应渠道,静态审查中这些证据不足;没有看到独立的 SECURITY.md 或安全响应说明;README 中 TODO 显示部分功能(Google 等)尚未完成。
文档质量 12/20
README 提供了分层文档:快速开始(npx/Docker/本地构建)、MCP 客户端配置示例(Cherry Studio、VSCode、Claude Desktop、Windows)、环境变量总表、六个工具的 TypeScript 参数与响应示例、代理/TLS/Playwright 说明、使用限制(限流、结果准确性、法律条款)以及 HTTP API 文档链接(docs/http-api.md)。配置说明覆盖了 Windows 与 Linux/macOS,也区分了安装期代理与运行期代理。扣分原因:README 本身是未经验证的材料,不能作为运行证据;成本(cost)信息未披露;故障排查分散,缺少统一的常见问题章节;部分工具的响应示例格式不一致(有的返回数组、有的返回对象)且 fetchLinuxDoArticle 示例 URL 是 .json,可能造成困惑;简体中文与英文 README 是否同步无法从静态审查确认。
安装易用性 10/20
安装路径清晰且多样:npx open-websearch@latest 一行启动,本地 npm install/build 流程明确,Docker 一行命令可运行;README 为多个主流客户端提供了可以直接粘贴的 MCP 配置片段(streamableHttp、SSE、stdio),并给出了 Windows 环境变量设置方式。构建脚本(package.json 中的 build)存在,产物入口为 build/index.js,与本地 stdio 配置示例一致。扣分原因:静态审查没有可执行的安装验证证据;Playwright 可选增强需要额外安装浏览器或配置远程端点,在受限网络下容易失败;HTTP 模式需要用户自行理解端口/MODE/传输类型(both/http/stdio)之间的关系,配置示例中 streamableHttp 与 SSE 依赖同一个 3000 端口,若 MODE 设置不当可能连接失败;README 中 npx 示例的环境变量写法在不同 shell 下并不完全等价。

静态评测 · 未实际运行收录于 2026-08-07

查看 FMRS 评分方法 →

选型与风险

能访问什么访问网络控制浏览器

适合谁

  • 需要无密钥多引擎搜索的开发者。
  • 集成到 MCP 客户端(如 Claude Desktop、Cursor)的 Agent 工作流。
  • 需要本地守护进程提供 HTTP API 的服务场景。

不适合谁

  • 需要高可靠性和合规性的生产级搜索服务(因爬虫限制)。
  • 对搜索引擎服务条款敏感的应用。
  • 需要实时搜索结果的场景,可能因爬虫限制而失败。

所需权限

  • 网络访问:执行搜索和抓取内容需要出站 HTTP 请求。
  • 本地端口:以 HTTP 模式运行时占用 3000 端口(可通过 PORT 环境变量修改)。
  • 无需 API 密钥或认证。
  • 可选:Playwright 浏览器自动化(需要安装 Chromium 或连接远程浏览器)。

风险与副作用

  • 搜索引擎可能封锁频繁请求,导致暂时不可用。
  • 结果依赖搜索引擎 HTML 结构,可能因引擎更新而失败。
  • 某些页面可能无法提取可读内容(如 JS 密集页面)。
  • 使用代理或伪造 IP CIDR 时需注意网络合规性。

安装接入

准备工作

运行环境:Node.js · Docker

其他可选配置项(24 个)
ENABLE_CORS 可选 是否开启 HTTP API 的 CORS,默认 false;仅 HTTP 模式相关,无需外部凭据。
CORS_ORIGIN 可选 CORS 允许的来源,默认 *;任意合法 origin。
DEFAULT_SEARCH_ENGINE 可选 默认搜索引擎,默认 bing,可选 duckduckgo、exa、brave、baidu 等;无需申请。
USE_PROXY 可选 是否启用 HTTP 代理,默认 false;配合受限网络使用。
PROXY_URL 可选 代理服务器地址,默认 http://127.0.0.1:7890;用你本地代理客户端的地址。
FAKE_IP_CIDRS 可选 逗号分隔的 CIDR 列表,用于 Clash fake-ip/TUN 场景(如 198.18.0.0/15)。
FETCH_WEB_INSECURE_TLS 可选 仅对 fetchWebContent 关闭 TLS 校验,默认 false,仅在目标站点证书损坏时使用。
MODE 可选 服务器模式:both、http 或 stdio,默认 both。
PORT 可选 HTTP 服务端口,默认 3000。
ALLOWED_SEARCH_ENGINES 可选 逗号分隔的允许引擎列表,留空表示全部可用。
SEARCH_MODE 可选 搜索策略 request/auto/playwright,目前仅影响 Bing。
PLAYWRIGHT_PACKAGE 可选 浏览器模式使用的 Playwright 客户端包,可选 playwright 或 playwright-core。
PLAYWRIGHT_MODULE_PATH 可选 复用本机已有 Playwright 包的路径。
PLAYWRIGHT_EXECUTABLE_PATH 可选 已有 Chromium/Chrome 可执行文件路径,免去安装内置浏览器。
PLAYWRIGHT_WS_ENDPOINT 可选 远程 Playwright 浏览器的 ws:// 端点。
PLAYWRIGHT_CDP_ENDPOINT 可选 已有 Chromium 实例的 CDP 端点(如 http://127.0.0.1:9222)。
PLAYWRIGHT_HEADLESS 可选 Playwright 浏览器是否无头运行,默认 true。
PLAYWRIGHT_NAVIGATION_TIMEOUT_MS 可选 Playwright 导航超时毫秒数,默认 20000。
MCP_TOOL_SEARCH_NAME 可选 自定义 search 工具的 MCP 工具名。
MCP_TOOL_FETCH_LINUXDO_NAME 可选 自定义 fetchLinuxDoArticle 工具名。
MCP_TOOL_FETCH_CSDN_NAME 可选 自定义 fetchCsdnArticle 工具名。
MCP_TOOL_FETCH_GITHUB_NAME 可选 自定义 fetchGithubReadme 工具名。
MCP_TOOL_FETCH_JUEJIN_NAME 可选 自定义 fetchJuejinArticle 工具名。
MCP_TOOL_FETCH_WEB_NAME 可选 自定义 fetchWebContent 工具名。
  1. 使用 npx 快速开始:npx open-websearch@latest,或设置环境变量(如 DEFAULT_SEARCH_ENGINE=duckduckgo)。
  2. 对于本地安装:克隆仓库,运行 npm install 和 npm run build。
  3. 配置 MCP 客户端(如 Claude Desktop、Cherry Studio、Cursor)使用 stdio 或 streamable-http 传输。
  4. 可选:配置代理(USE_PROXY=true、PROXY_URL)和 Playwright(用于浏览器回退)。
claude_desktop_config.json
{
  "mcpServers": {
    "web-search": {
      "command": "npx",
      "args": [
        "open-websearch@latest"
      ],
      "env": {
        "MODE": "stdio",
        "DEFAULT_SEARCH_ENGINE": "duckduckgo",
        "ALLOWED_SEARCH_ENGINES": "duckduckgo,bing,exa"
      }
    }
  }
}

以 Claude Desktop 为例。其他客户端的配置文件位置或字段可能不同(如 VS Code 使用 servers 字段),可用下方配置生成器转换。

.vscode/mcp.json
{
  "servers": {
    "web-search": {
      "command": "npx",
      "args": [
        "open-websearch@latest"
      ],
      "env": {
        "MODE": "stdio",
        "DEFAULT_SEARCH_ENGINE": "duckduckgo",
        "ALLOWED_SEARCH_ENGINES": "duckduckgo,bing,exa"
      }
    }
  }
}

写入项目的 .vscode/mcp.json(VS Code 使用 servers 字段)。

Terminal
claude mcp add web-search -e MODE=stdio -e DEFAULT_SEARCH_ENGINE=duckduckgo -e ALLOWED_SEARCH_ENGINES=duckduckgo,bing,exa -- npx open-websearch@latest

在终端运行;先把 <…> 占位符换成你自己的值。

验证是否装好

启动后客户端工具列表中应出现 search、fetchGithubReadme、fetchWebContent 等六个工具;用 search 搜一个简单关键词,若能返回带标题和 URL 的结构化结果即说明安装成功。

常见排障

  1. 检查环境变量(如 `DEFAULT_SEARCH_ENGINE`、`USE_PROXY`、`PORT`)是否正确设置。
  2. 对于支持 streamable-http 的客户端,确保 `baseUrl` 指向 `http://localhost:3000/mcp`。
  3. 如果遇到网络限制,设置 `USE_PROXY=true` 和 `PROXY_URL`。
  4. 如果抓取某些网站失败,尝试使用 Playwright 模式(`SEARCH_MODE=auto`)。

试试这样问

连接成功后,可以直接对 AI 助手这样说:

  • 用 duckduckgo 搜索 open-websearch MCP,返回前3条结果
  • 同时用 bing、csdn、exa 三个引擎搜索“Node.js 性能优化”
  • 抓取 https://github.com/Aas-ee/open-webSearch 的 README 内容
  • 获取 https://juejin.cn/post/7520959840199360563 这篇文章的正文

工具能力 6

search 只读
在多引擎中搜索网页,返回结构化结果。
fetchLinuxDoArticle 只读
抓取 Linux.do 论坛文章的完整内容。
fetchCsdnArticle 只读
抓取 CSDN 博客文章的完整内容。
fetchGithubReadme 只读
抓取 GitHub 仓库的 README 内容。
fetchJuejinArticle 只读
抓取掘金文章的完整内容。
fetchWebContent 只读
抓取公开 HTTP(S) 页面或 Markdown 文件的内容。

使用场景

在多个搜索引擎中执行网页搜索,无需 API 密钥。
抓取特定平台文章(如 CSDN、掘金、GitHub README)用于深入分析。
通过 CLI 或守护进程集成到自动化脚本中。

支持客户端

Claude Desktop
Cherry Studio
Cursor
VS Code

依据项目文档列出,未经本站实测。

详细介绍

open-websearch 是一个 MCP 服务器,同时提供 CLI 和本地守护进程,支持多引擎(必应、百度、DuckDuckGo、Exa、Brave、CSDN、掘金、Startpage、搜狗)的网页搜索和内容抓取,无需 API 密钥。它支持 HTTP 代理配置以访问受限资源,并提供结构化结果(标题、URL、描述)。此外,它还支持抓取特定平台的文章内容(如 CSDN、掘金、GitHub README)以及通用网页/Markdown 内容。该项目采用 Apache-2.0 许可证。

同类可选方案

用Telethon驱动的Telegram MCP服务器,让MCP客户端读取聊天、管理群组、发送/修改消息、媒体、联系人及设置。

★ 1.8k · 工具数 76 与当前对比 →

源版本 fb11fd94df73 数据同步于 2026-10-11 查看 FMRS 评分方法