如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
🇨🇳 中文 | 🇺🇸 English
open-websearch 提供 MCP 服务器、CLI 和本地守护进程,还可与技能引导的智能体工作流配合使用,实现无需 API 密钥的实时网络搜索和内容检索。
| 变量 | 默认值 | 选项 | 描述 |
|---|---|---|---|
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 |
FAKE_IP_CIDRS | 空 | 逗号分隔的CIDR列表 | 将这些CIDR中的DNS应答视为合成假IP结果,不将其作为私有网络DNS应答阻止。文字形式的私有/本地目标和其他私有网络DNS应答仍会被阻止 |
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
# 强制仅使用请求方式的Bing搜索
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回退需手动启用。已发布的包不再捆绑Playwright。可通过以下任一设置手动启用:
npm install playwright
npx playwright install chromium
SEARCH_MODE=auto npx open-websearch@latest
npm install playwright-core
PLAYWRIGHT_PACKAGE=playwright-core PLAYWRIGHT_EXECUTABLE_PATH=/path/to/chromium SEARCH_MODE=auto npx open-websearch@latest
PLAYWRIGHT_MODULE_PATH=/absolute/path/to/node_modules/playwright SEARCH_MODE=playwright npx open-websearch@latest
npm install playwright-core
PLAYWRIGHT_PACKAGE=playwright-core PLAYWRIGHT_WS_ENDPOINT=ws://127.0.0.1:3000/ SEARCH_MODE=auto npx open-websearch@latest
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客户端+浏览器可用时才回退到Playwrightplaywright:强制使用Playwright,若配置的Playwright客户端或浏览器目标不可用则报错注意事项:
PLAYWRIGHT_MODULE_PATH 优先级高于 PLAYWRIGHT_PACKAGEPLAYWRIGHT_WS_ENDPOINT 优先级高于 PLAYWRIGHT_CDP_ENDPOINTPLAYWRIGHT_EXECUTABLE_PATH 和本地代理启动标志fetchWebContent 仅使用请求方式。公共页面仍可正常工作,但需要浏览器Cookie或浏览器渲染HTML的页面可能失败npm install
这仅安装核心MCP服务器。浏览器回退仍是可选功能,需自行安装或连接Playwright客户端后启用。 3. 构建服务器:
npm run build
使用 Docker Compose 快速部署:
docker-compose up -d
或直接使用 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
环境变量配置:
| 变量 | 默认值 | 选项 | 描述 |
|---|---|---|---|
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 |
FAKE_IP_CIDRS | 空 | 逗号分隔的 CIDR 列表 | 将这些 CIDR 中的 DNS 应答视为合成假 IP 结果,不将其作为私有网络 DNS 应答阻止。文字形式的私有/本地目标和其他私有网络 DNS 应答仍会被阻止 |
PORT | 3000 | 1-65535 | 服务器端口 |
然后在您的 MCP 客户端中进行配置:
{
"mcpServers": {
"web-search": {
"name": "Web Search MCP",
"type": "streamableHttp",
"description": "Multi-engine web search with article fetching",
"isActive": true,
"baseUrl": "http://localhost:3000/mcp"
},
"web-search-sse": {
"transport": {
"name": "Web Search MCP",
"type": "sse",
"description": "Multi-engine web search with article fetching",
"isActive": true,
"url": "http://localhost:3000/sse"
}
}
}
}
服务器提供六种工具:search、fetchLinuxDoArticle、fetchCsdnArticle、fetchGithubReadme、fetchJuejinArticle 和 fetchWebContent。
关于本地守护进程 HTTP API(serve、status、GET /health、POST /search、POST /fetch-*),请参见 docs/http-api.md。
{
"query": string, // 搜索查询
"limit": number, // 可选:返回结果数量(默认:10)
"engines": string[], // 可选:使用的搜索引擎(bing,baidu,linuxdo,csdn,duckduckgo,exa,brave,juejin,startpage,sogou),默认使用运行时配置的引擎
"searchMode": string // 可选:request、auto 或 playwright(目前仅影响 Bing)
}
使用示例:
use_mcp_tool({
server_name: "web-search",
tool_name: "search",
arguments: {
query: "search content",
limit: 3, // 可选参数
engines: ["bing", "csdn", "duckduckgo", "exa", "brave", "juejin", "sogou"] // 可选参数,支持多引擎组合搜索
}
})
响应示例:
[
{
"title": "Example Search Result",
"url": "https://example.com",
"description": "Description text of the search result...",
"source": "Source",
"engine": "Engine used"
}
]
用于获取 CSDN 博客文章的完整内容。
{
"url": string // 使用 search 工具从 CSDN 搜索结果中获取的 URL
}
使用示例:
use_mcp_tool({
server_name: "web-search",
tool_name: "fetchCsdnArticle",
arguments: {
url: "https://blog.csdn.net/xxx/article/details/xxx"
}
})
响应示例:
[
{
"content": "Example search result"
}
]
用于获取 Linux.do 论坛文章的完整内容。
{
"url": string // 使用 search 工具从 linuxdo 搜索结果中获取的 URL
}
使用示例:
use_mcp_tool({
server_name: "web-search",
tool_name: "fetchLinuxDoArticle",
arguments: {
url: "https://xxxx.json"
}
})
响应示例:
[
{
"content": "Example search result"
}
]
用于从 GitHub 仓库获取 README 内容。
{
"url": string // GitHub 仓库 URL(支持 HTTPS、SSH 格式)
}
使用示例:
use_mcp_tool({
server_name: "web-search",
tool_name: "fetchGithubReadme",
arguments: {
url: "https://github.com/Aas-ee/open-webSearch"
}
})
支持的 URL 格式:
https://github.com/owner/repohttps://github.com/owner/repo.gitgit@github.com:owner/repo.githttps://github.com/owner/repo?tab=readme响应示例:
[
{
"content": " \n\n# Open-WebSearch MCP Server..."
}
]
直接从公开的 HTTP(S) 链接获取内容,包括 Markdown 文件(.md)和普通网页。
用于获取掘金文章的完整内容。
{
"url": string // 搜索结果中的掘金文章 URL
}
使用示例:
use_mcp_tool({
server_name: "web-search",
tool_name: "fetchJuejinArticle",
arguments: {
url: "https://juejin.cn/post/7520959840199360563"
}
})
支持的 URL 格式:
https://juejin.cn/post/{article_id}响应示例:
[
{
"content": "🚀 开源 AI 联网搜索工具:Open-WebSearch MCP 全新升级,支持多引擎 + 流式响应..."
}
]
由于本工具通过抓取多引擎搜索结果工作,请注意以下重要限制:
DEFAULT_SEARCH_ENGINE 环境变量设置USE_PROXY=true 启用代理PROXY_URL 配置代理服务器地址FAKE_IP_CIDRS 配置合成 DNS 范围(例如 198.18.0.0/15)欢迎提交问题报告和功能改进建议!
如果您想 Fork 本仓库并发布自己的 Docker 镜像,需要进行以下配置:
GitHub 密钥配置
要启用 Docker 镜像的自动构建和发布,请在 GitHub 仓库设置(Settings → Secrets and variables → Actions)中添加以下密钥:
必填密钥:
GITHUB_TOKEN:由 GitHub 自动提供(无需设置)可选密钥(适用于阿里云 ACR):
ACR_REGISTRY:您的阿里云容器镜像服务 URL(例如 registry.cn-hangzhou.aliyuncs.com)ACR_USERNAME:您的阿里云 ACR 用户名ACR_PASSWORD:您的阿里云 ACR 密码ACR_IMAGE_NAME:您在 ACR 中的镜像名称(例如 your-namespace/open-web-search)CI/CD 工作流
仓库包含一个 GitHub Actions 工作流(.github/workflows/docker.yml),可自动执行以下操作:
main 分支v*)ghcr.io/your-username/open-web-search:latestyour-acr-address/your-image-name:latest(如果配置了 ACR)Fork 和发布步骤:
main 分支或创建版本标签docker run -d --name web-search -p 3000:3000 -e ENABLE_CORS=true -e CORS_ORIGIN=* ghcr.io/your-username/open-web-search:latest
注意事项:
如果您觉得本项目有帮助,请考虑给它一个 ⭐ 星标!
来自真实用户的反馈,见证轩辕镜像的优质服务