MCPcopy Index your code
hub / github.com/Aas-ee/open-webSearch

github.com/Aas-ee/open-webSearch @v2.1.11

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.1.11 ↗ · + Follow
551 symbols 1,573 edges 86 files 15 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Open-WebSearch

ModelScope smithery badge Version License Issues

🇨🇳 中文 | 🇺🇸 English

open-websearch 现已同时提供 MCP server、CLI 和本地 daemon,也可以配合 skill 引导的 agent 工作流一起使用,用于联网搜索与内容抓取,无需 API 密钥。

点击展开查看简单示例效果(deepseek-v3)


🧩 示例开始

prompt:

使用websearch工具查询 《Open-WebSearch MCP》,用csdn引擎,查20条记录,告诉我工具返回的engine,以及相关信息,再通过url查询作者是Aasee的文章内容(如果有多篇顺序查询,不要同时查询)。规范输出


assistant:

我将使用MCP_search工具查询《Open-WebSearch MCP》并使用CSDN引擎获取20条记录。

查询结果分析

  1. 使用的搜索引擎: CSDN
  2. 总记录数: 20条

作者Aasee的文章列表

搜索结果显示有2篇作者是"Aasee."的文章:

  1. 文章标题: "开源 AI 联网搜索工具:Open-WebSearch MCP 全新升级,支持多引擎 + 流式响应!" URL: https://blog.csdn.net/weixin_45801664/article/details/149000138?ops_request_misc=%257B%2522request%255Fid%2522%253A%252203ceec270907178223ab139631d9a81f%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=03ceec270907178223ab139631d9a81f&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-149000138-null-null.142^v102^pc_search_result_base6&utm_term=Open-WebSearch%20MCP 简介: 该项目为AI插件开发提供免费、可控的联网搜索能力,支持Bing、百度、CSDN多引擎组合搜索...

  2. 文章标题: "Web Seach 搜索 MCP 启动!" URL: https://blog.csdn.net/weixin_45801664/article/details/148813614?ops_request_misc=%257B%2522request%255Fid%2522%253A%252203ceec270907178223ab139631d9a81f%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=03ceec270907178223ab139631d9a81f&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-4-148813614-null-null.142^v102^pc_search_result_base6&utm_term=Open-WebSearch%20MCP 简介: 开源Web搜索MCP服务器Open-WebSearch上线,解决AI模型无法获取最新网络信息的问题...

开始查询第一篇文章内容

我将先查询第一篇文章的全文内容:

搜索结果分析

工具返回的引擎信息

使用了CSDN搜索引擎进行查询,返回了20条相关记录。

作者Aasee的相关文章内容

文章1: "开源 AI 联网搜索工具:Open-WebSearch MCP 全新升级,支持多引擎 + 流式响应!"

🚀 开源 AI 联网搜索工具:Open-WebSearch MCP 全新升级,支持多引擎 + 流式响应!

💡「让你的 AI 插件真正能联网」—— 不需要 API Key,搜索结果可控、开箱即用!

项目亮点一览:
✅ 多引擎实时搜索:支持 Bing、百度、CSDN、DuckDuckGo、Exa、Brave
✅ 流式响应(MCP协议):兼容 Claude 插件(MCP)协议
✅ 文章正文抓取:支持提取 CSDN 博客文章全文
✅ 完全免费 & 无需 API Key
✅ Docker 一键部署

安装方法:
- Git克隆项目: git clone https://github.com/Aas-ee/open-webSearch
- 或使用Docker: docker run -d --name web-search -p 3000:3000 -e ENABLE_CORS=true -e CORS_ORIGIN=* ghcr.io/aas-ee/open-web-search:latest

MCP工具支持:
🔍 search:多引擎搜索工具
📄 fetchCsdnArticle:提取 CSDN 文章全文
🧪 fetchLinuxDoArticle:抓取 Linux.do 文章(开发中)

项目地址:
🧩 GitHub: https://github.com/Aas-ee/open-webSearch
📦 Docker: ghcr.io/aas-ee/open-web-search:latest

文章2: "Web Seach 搜索 MCP 启动!"

开源Web搜索MCP服务器Open-WebSearch上线,解决AI模型无法获取最新网络信息的问题。
该项目免费提供百度搜索结果API,支持结构化JSON返回格式,兼容Claude等AI工具的MCP协议。
用户仅需简单安装即可使用,无需API密钥...

需要查询其他Aasee作者的文章内容吗?我可以继续为您检索。

✅ 示例结束


功能特性

  • 使用多引擎搜索结果进行网络检索
    • bing
    • baidu
    • ~~linux.do~~ 暂不支持
    • csdn
    • duckduckgo
    • exa
    • brave
    • juejin
    • startpage
    • sogou
  • 支持HTTP代理配置,轻松解决网络访问限制
  • 无需API密钥或身份验证
  • 返回带标题、URL和描述的结构化结果
  • 可配置每次搜索返回的结果数量
  • 可自定义默认搜索引擎
  • 支持获取单篇文章内容
    • csdn
    • github(README文件)
    • 通用 HTTP(S) 网页 / Markdown 内容

选择合适的入口

  • MCP
  • 适合接入 Claude Desktop、Cherry Studio、Cursor 或其他 MCP 客户端。
  • CLI
  • 适合一次性本地命令、shell 脚本和终端直用。
  • 本地 daemon
  • 适合需要复用的常驻本地 HTTP 服务,提供 statusGET /healthPOST /searchPOST /fetch-*。显式启动命令是 open-websearch serve,状态检查命令是 open-websearch status
  • skill
  • 适合作为 agent 的引导层,帮助 agent 发现、启用并使用最小可行路径;skill 不替代 MCP、CLI 或本地 daemon,通常推荐与 CLI 和/或本地 daemon 搭配使用。

配合 skill 使用

先给 agent 安装 open-websearch skill:

npx skills add https://github.com/Aas-ee/open-webSearch --skill open-websearch

首次使用时,skill 通常会先检测当前环境里是否已经有可用的 open-websearch path;如果没有,则先引导安装、启用和验证,确认 capability active 之后,再通过最小可行路径执行搜索或抓取。

如果当前环境里 agent 不能自动完成 setup 或 activation,你也可以明确让它先启动本地 daemon:

open-websearch serve
open-websearch status

请把安装代理和运行时代理分开理解:

  • 安装阶段代理 / 镜像
  • 用于 skill 或 agent 安装 open-websearchplaywright 等 npm 包时。
  • 在受限网络里,npm 自己的代理参数或 npm config 往往比通用 shell 代理变量更稳,例如:
npm --proxy http://127.0.0.1:7890 --https-proxy http://127.0.0.1:7890 install -g open-websearch
  • 运行时代理
  • 用于 daemon 已安装并准备执行联网 search / fetch 时。
  • 这影响的是 open-websearch serve 启动后的联网请求,例如:
USE_PROXY=true PROXY_URL=http://127.0.0.1:7890 open-websearch serve

如果安装阶段需要 npm 代理,而 daemon 启动后联网 search/fetch 也需要代理,那么这两步要分别处理,不要混成同一种代理设置。

CLI 与本地 daemon

CLI 用于一次性执行。本地 daemon 是常驻的本地 HTTP 服务,适合重复调用并减少冷启动摩擦。请用 open-websearch serve 显式启动 daemon,用 open-websearch status 显式检查状态。

searchfetch-web 这类 action commands 会在默认本地 daemon 可用时优先尝试走 daemon;如果显式传入 --daemon-url,则会固定走该 daemon 路径,并关闭静默回退到 direct execution 的行为。

先构建:

npm run build

启动本地 daemon:

npm run serve
# 全局安装后:open-websearch serve

查看状态:

npm run status -- --json
# 全局安装后:open-websearch status --json

执行一次性本地 CLI 搜索:

npm run search:cli -- "open web search" --json

说明: - 裸命令 open-websearch 走的是 MCP server 兼容入口,不是 agent 自动化里推荐的 daemon 启动方式。 - 做正文提取时,优先先搜索,再对更具体的结果页调用 fetch-web。部分首页或重 JS 页面本身就不一定能提取出可读正文。

本地 daemon HTTP API(servestatusGET /healthPOST /searchPOST /fetch-*)请参考 docs/http-api.md

TODO

  • 支持~~Bing~~(已支持),~~DuckDuckGo~~(已支持),~~Exa~~(已支持),~~Brave~~(已支持),~~Sogou~~(已支持),Google等搜索引擎
  • 支持更多博客论坛、社交软件
  • 优化文章内容提取功能,增加更多站点支持
  • ~~支持GitHub README获取~~(已支持)

安装指南

如果你是把 open-websearch 当作 MCP server 使用,请继续看下面的 MCP 安装方式。

NPX 快速启动(推荐)

最快的使用方式:

# 基本使用
npx open-websearch@latest

# 带环境变量(Linux/macOS)
DEFAULT_SEARCH_ENGINE=duckduckgo ENABLE_CORS=true npx open-websearch@latest

# Windows PowerShell
$env:DEFAULT_SEARCH_ENGINE="duckduckgo"; $env:ENABLE_CORS="true"; npx open-websearch@latest

# Windows CMD
set MODE=stdio && set DEFAULT_SEARCH_ENGINE=duckduckgo && npx open-websearch@latest

# 跨平台(需要 cross-env,用于本地开发)
# 全局安装
npm install -g open-websearch
npx cross-env DEFAULT_SEARCH_ENGINE=duckduckgo ENABLE_CORS=true open-websearch

环境变量说明:

变量名 默认值 可选值 说明
ENABLE_CORS false true, false 启用CORS
CORS_ORIGIN * 任何有效来源 CORS来源配置
DEFAULT_SEARCH_ENGINE bing bing, duckduckgo, exa, brave, baidu, csdn, juejin, startpage, sogou 默认搜索引擎
USE_PROXY false true, false 启用HTTP代理
PROXY_URL http://127.0.0.1:7890 任何有效URL 代理服务器URL
FETCH_WEB_INSECURE_TLS false true, false 仅对 fetchWebContent 关闭 TLS 证书校验。只建议在目标站点证书链异常时临时使用
MODE both both, http, stdio 服务器模式:同时支持HTTP+STDIO、仅HTTP或仅STDIO
PORT 3000 1-65535 服务器端口
ALLOWED_SEARCH_ENGINES 空(全部可用) 逗号分隔的引擎名称 限制可使用的搜索引擎,如默认搜索引擎不在范围,则默认第一个为默认搜索引擎
SEARCH_MODE auto request, auto, playwright 搜索策略,当前仅对 Bing 生效:仅请求、请求失败后回退 Playwright、或强制 Playwright
PLAYWRIGHT_PACKAGE auto auto, playwright, playwright-core 启用浏览器模式时优先解析哪种 Playwright 客户端包
PLAYWRIGHT_MODULE_PATH 绝对路径或相对项目根目录路径 复用当前项目外部已经存在的 Playwright 客户端包
PLAYWRIGHT_EXECUTABLE_PATH 任意有效浏览器二进制路径 使用现有 Chromium/Chrome 可执行文件启动浏览器
PLAYWRIGHT_WS_ENDPOINT 有效的 Playwright ws:// / wss:// 地址 连接现有远端 Playwright 浏览器服务
PLAYWRIGHT_CDP_ENDPOINT 有效的 Chromium CDP 地址 通过 CDP 连接现有 Chromium 实例
PLAYWRIGHT_HEADLESS true true, false Playwright Chromium 是否以无头模式运行
PLAYWRIGHT_NAVIGATION_TIMEOUT_MS 20000 正整数 Playwright 页面导航和 Bing 结果等待超时时间
MCP_TOOL_SEARCH_NAME search 有效的MCP工具名称 搜索工具的自定义名称
MCP_TOOL_FETCH_LINUXDO_NAME fetchLinuxDoArticle 有效的MCP工具名称 Linux.do文章获取工具的自定义名称
MCP_TOOL_FETCH_CSDN_NAME fetchCsdnArticle 有效的MCP工具名称 CSDN文章获取工具的自定义名称
MCP_TOOL_FETCH_GITHUB_NAME fetchGithubReadme 有效的MCP工具名称 GitHub README获取工具的自定义名称
MCP_TOOL_FETCH_JUEJIN_NAME fetchJuejinArticle 有效的MCP工具名称 掘金文章获取工具的自定义名称
MCP_TOOL_FETCH_WEB_NAME fetchWebContent 有效的MCP工具名称 通用网页/Markdown抓取工具的自定义名称

常用配置示例:

# 启用代理(适用于网络受限地区)
USE_PROXY=true PROXY_URL=http://127.0.0.1:7890 npx open-websearch@latest

# 仅当目标网站证书链异常时使用
FETCH_WEB_INSECURE_TLS=true npx open-websearch@latest

# 先走请求,失败后再回退到 Playwright(如果已安装)
SEARCH_MODE=auto npx open-websearch@latest

# 强制仅使用请求模式
SEARCH_MODE=request npx open-websearch@latest

# 完整配置
DEFAULT_SEARCH_ENGINE=duckduckgo ENABLE_CORS=true USE_PROXY=true PROXY_URL=http://127.0.0.1:7890 PORT=8080 npx open-websearch@latest

浏览器增强 Bing 兜底现在是显式启用,不随发行包默认安装。你可以按下面几种方式手动启用:

  1. 本地完整安装 Playwright:
npm install playwright
npx playwright install chromium
SEARCH_MODE=auto npx open-websearch@latest
  1. 只安装精简客户端并复用现有浏览器:
npm install playwright-core
PLAYWRIGHT_PACKAGE=playwright-core PLAYWRIGHT_EXECUTABLE_PATH=/path/to/chromium SEARCH_MODE=auto npx open-websearch@latest
  1. 复用机器上其他位置已经安装好的 Playwright 包:
PLAYWRIGHT_MODULE_PATH=/absolute/path/to/node_modules/playwright SEARCH_MODE=playwright npx open-websearch@latest
  1. 连接现有远端浏览器:
npm install playwright-core
PLAYWRIGHT_PACKAGE=playwright-core PLAYWRIGHT_WS_ENDPOINT=ws://127.0.0.1:3000/ SEARCH_MODE=auto npx open-websearch@latest
  1. 通过 CDP 复用本地 Chrome/Chromium 会话:
npm install playwright-core

# 先启动带调试端口的 Chrome/Chromium
chrome --remote-debugging-port=9222 --user-data-dir=/tmp/open-websearch-chrome

# 再通过 CDP 连接
PLAYWRIGHT_PACKAGE=playwright-core PLAYWRIGHT_CDP_ENDPOINT=http://127.0.0.1:9222 SEARCH_MODE=auto npx open-websearch@latest

如果你想复用自己已经登录过或已经过验证的浏览器会话,这通常是最实用的接入方式。

Windows PowerShell 示例:

npm install playwright-core

& "$env:LOCALAPPDATA\Google\Chrome\Application\chrome.exe" `
  --remote-debugging-port=9222 `
  --user-data-dir="$env:TEMP\open-websearch-chrome"
$env:PLAYWRIGHT_PACKAGE="playwright-core"
$env:PLAYWRIGHT_CDP_ENDPOINT="http://127.0.0.1:9222"
$env:SEARCH_MODE="auto"
npx open-websearch@latest

模式说明: - request:只使用请求方式抓 Bing - auto:先走请求,只有请求失败且手动可访问的 Playwright 客户端和浏览器可用时才回退到 Playwright - playwright:强制使用 Playwright;如果配置的 Playwright 客户端或浏览器目标不可用,会直接报错

补充说明: - PLAYWRIGHT_MODULE_PATH 优先级高于 PLAYWRIGHT_PACKAGE - PLAYWRIGHT_WS_ENDPOINT 优先级高于 PLAYWRIGHT_CDP_ENDPOINT - 使用远端端点时,会忽略 PLAYWRIGHT_EXECUTABLE_PATH 和本地启动代理参数 - 当 Playwright 可用时,CSDN/知乎文章抓取以及通用网页抓取在遇到拦截页时也会尝试复用浏览器拿到的 cookie 进行重试 - 没有 Playwright 时,fetchWebContent 会停留在纯请求路径。公开页面通常仍可抓取,但依赖浏览器 cookie 或浏览器渲染 HTML 的页面可能失败。

Windows 用户注意事项: - 在 PowerShell 中使用 $env:VAR="value"; 语法 - 本地开发推荐使用 npx cross-env 实现跨平台兼容

本地安装

  1. 克隆或下载本仓库
  2. 安装依赖项:
npm install

这里只会安装核心 MCP 服务依赖,浏览器兜底能力仍然需要你手动安装或连接 Playwright 客户端。 3. 构建服务器:

npm run build
  1. 将服务器添加到您的MCP配置中:

Cherry Studio:

{
  "mcpServers": {
    "web-search": {
      "name": "Web Search MCP",
      "type": "streamableHttp",
      "description": "Multi-engine web search with article fetching",
      "isActive": true,
      "baseUrl": "http://localhost:3000/mcp"
    }
  }
}

Windows 下的 NPX 配置:

{
  "mcpServers": {
    "web-search": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "open-websearch@latest"
      ],
      "env": {
        "MODE": "stdio",
        "DEFAULT_SEARCH_ENGINE": "duckduckgo",
        "SYSTEMROOT": "C:/Windows"
      }
    }
  }
}

代理与 TLS 说明: - open-websearch 现在会在内部显式关闭 Axios 对环境变量代理的自动读取,只走 USE_PROXY + PROXY_URL 这条显式代理路径。 - 当 USE_PROXY=true 时,所有基于 Axios 的网络请求都会统一走配置的 PROXY_URL 路径,不再出现一部分请求直连、一部分请求读取环境变量代理的混合行为。 - 如果 PROXY_URL 指向的是本地规则代理客户端,该客户端仍然可以自行决定哪些目标走 DIRECT、哪些目标走代理。 - 如果 PROXY_URL 指向固定上游代理或固定出口,百度、CSDN、掘金、Linux.do、GitHub 这类对地区较敏感的站点表现可能会和之前不同。 - 如果系统里已经设置了 HTTP_PROXYHTTPS_PROXY,它们不再覆盖服务器内部请求行为。 - Windows 上如果站点缺少中间证书,优先建议配置 NODE_EXTRA_CA_CERTS。 - FETCH_WEB_INSECURE_TLS=true 只建议作为 fetchWebContent 的兜底方案使用,因为它会降低 TLS 校验强度。

VSCode版(Claude开发扩展):

{
  "mcpServers": {
    "web-search": {
      "transport": {
        "type": "streamableHttp",
        "url": "http://localhost:3000/mcp"
      }
    },
    "web-search-sse": {
      "transport": {
        "type": "sse",
        "url": "http://localhost:3000/sse"
      }
    }
  }
}

Claude桌面版:

{
  "mcpServers": {
    "web-search": {
      "type": "http",
      "url": "http://localhost:3000/mcp"
    },
    "web-search-sse": {
      "type": "sse",
      "url": "http://localhost:3000/sse"
    }
  }
}

NPX命令行配置示例:

{
  "mcpServers": {
    "web-search": {
      "args": [
        "open-websearch@latest"
      ],
      "command": "npx",
      "env": {
        "MODE": "stdio",
        "DEFAULT_SEARCH_ENGINE": "duckduckgo",
        "ALLOWED_SEARCH_ENGINES": "duckduckgo,bing,exa"
      }
    }
  }
}

Cherry Studio 本地 STDIO 配置 (Windows): ```json { "mcpServers": { "open-websearch-local": { "command": "node", "args": ["C:/你的项目路径/build/index.js"], "env": { "MODE": "stdio", "DEFAULT_SEARCH_ENGINE": "duckduckgo", "ALLOWED_SEARCH_ENGINES": "duckduckgo,bi

Extension points exported contracts — how you extend this code

TestCase (Interface)
* Test suite for GitHub README fetcher
src/test/test-github.ts
AppConfig (Interface)
(no doc)
src/config.ts
SearchResult (Interface)
(no doc)
src/types.ts
IKoffiCType (Interface)
(no doc)
src/types/koffi.d.ts
WinLockBindings (Interface)
(no doc)
src/utils/nativeInterop.ts
JuejinSearchResponse (Interface)
(no doc)
src/engines/juejin/juejin.ts
IKoffiFunction (Interface)
(no doc)
src/types/koffi.d.ts
WinDesktopBindings (Interface)
(no doc)
src/utils/nativeInterop.ts

Core symbols most depended-on inside this repo

assertEqual
called by 113
src/test/test-cli-search.ts
assertEqual
called by 57
src/test/test-local-daemon.ts
assert
called by 36
src/test/test-web-content.ts
runCli
called by 29
src/cli/runCli.ts
assert
called by 27
src/test/test-cli-search.ts
assert
called by 26
src/test/test-bing-parser.ts
assertEqual
called by 26
src/test/test-mcp-adapter.ts
createStubRuntime
called by 26
src/test/test-cli-search.ts

Shape

Function 528
Interface 13
Class 8
Method 2

Languages

TypeScript100%

Modules by API surface

src/utils/playwrightClient.ts98 symbols
src/cli/runCli.ts40 symbols
src/engines/bing/bing.ts37 symbols
src/test/test-bing-playwright-cross-restart-concurrency.ts35 symbols
src/test/test-cli-search.ts32 symbols
src/utils/nativeInterop.ts29 symbols
src/engines/web/fetchWebContent.ts21 symbols
src/test/test-mcp-adapter.ts14 symbols
src/utils/browserCookies.ts13 symbols
src/test/test-local-daemon.ts12 symbols
src/engines/sogou/sogou.ts12 symbols
src/test/test-core-search.ts11 symbols

For agents

$ claude mcp add open-webSearch \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact