网页搜索

ifzzh520/open-webSearch
0 Stars 438 次浏览 更新于 2026-08-23

一个基于多引擎搜索结果的模型上下文协议(MCP)服务器,支持无需API密钥的免费网络搜索。它支持多个搜索引擎,并提供搜索和获取文章的工具。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

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

服务介绍

Open-WebSearch MCP 服务器

中文

基于多引擎搜索结果的模型上下文协议(MCP)服务器,支持无需 API 密钥的免费网络搜索。

特性

  • 使用多引擎结果进行网络搜索
    • bing
    • baidu
    • ~~linux.do~~ 暂不支持
    • csdn
    • duckduckgo
    • exa
    • brave
  • 支持 HTTP 代理配置以访问受限资源
  • 不需要 API 密钥或身份验证
  • 返回带有标题、URL 和描述的结构化结果
  • 可配置每次搜索的结果数量
  • 可自定义默认搜索引擎
  • 支持获取单篇文章内容
    • csdn

待办事项

  • 支持 ~~Bing~~ (已支持), ~~DuckDuckGo~~ (已支持), ~~Exa~~ (已支持), ~~Brave~~ (已支持), Google 和其他搜索引擎
  • 支持更多博客、论坛和社交平台
  • 优化文章内容提取,增加对更多网站的支持

安装指南

本地安装

  1. 克隆或下载此仓库

  2. 安装依赖项:
    bash
    npm install

  3. 构建服务器:
    bash
    npm run build

  4. 将服务器添加到您的 MCP 配置中:

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

VSCode (Claude Dev Extension):
json
{
"mcpServers": {
"web-search": {
"transport": {
"type": "streamableHttp",
"url": "http://localhost:3000/mcp"
}
},
"web-search-sse": {
"transport": {
"type": "sse",
"url": "http://localhost:3000/sse"
}
}
}
}

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

Docker 部署

使用 Docker Compose 快速部署:

bash
docker-compose up -d

或者直接使用 Docker:
bash
docker run -d --name web-search -p 3000:3000 -e ENABLE_CORS=true -e CORS_ORIGIN=* ghcr.io/aas-ee/open-web-search:latest

环境变量配置:

bash

启用 CORS (默认: false)

ENABLE_CORS=true

CORS 起源配置 (默认: *)

CORS_ORIGIN=*

默认搜索引擎 (选项: bing, duckduckgo, exa, brave, 默认: bing)

DEFAULT_SEARCH_ENGINE=duckduckgo

启用 HTTP 代理 (默认: false)

USE_PROXY=true

代理服务器 URL (默认: http://127.0.0.1:10809)

PROXY_URL=http://your-proxy-server:port

然后在您的 MCP 客户端中进行配置:
json
{
"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"
}
}
}
}

使用指南

服务器提供了三个工具:searchfetchLinuxDoArticlefetchCsdnArticle

search 工具使用方法

typescript
{
"query": string, // 搜索查询
"limit": number, // 可选:返回的结果数量 (默认: 10)
"engines": string[] // 可选:使用的搜索引擎 (bing,baidu,linuxdo,csdn,duckduckgo,exa,brave) 默认为 bing
}

使用示例:
typescript
use_mcp_tool({
server_name: "web-search",
tool_name: "search",
arguments: {
query: "搜索内容",
limit: 3, // 可选参数
engines: ["bing", "csdn", "duckduckgo", "exa", "brave"] // 可选参数,支持多引擎组合搜索
}
})响应示例:
json
[
{
"title": "示例搜索结果",
"url": "https://example.com",
"description": "搜索结果的描述文本...",
"source": "来源",
"engine": "使用的搜索引擎"
}
]

fetchCsdnArticle 工具使用

用于获取CSDN博客文章的完整内容。

typescript
{
"url": string // 使用搜索工具从CSDN搜索结果中获取的URL
}

使用示例:
typescript
use_mcp_tool({
server_name: "web-search",
tool_name: "fetchCsdnArticle",
arguments: {
url: "https://blog.csdn.net/xxx/article/details/xxx"
}
})

响应示例:
json
[
{
"content": "示例搜索结果"
}
]

fetchLinuxDoArticle 工具使用

用于获取Linux.do论坛文章的完整内容。

typescript
{
"url": string // 使用搜索工具从linuxdo搜索结果中获取的URL
}

使用示例:
typescript
use_mcp_tool({
server_name: "web-search",
tool_name: "fetchLinuxDoArticle",
arguments: {
url: "https://xxxx.json"
}
})

响应示例:
json
[
{
"content": "示例搜索结果"
}
]

使用限制

由于此工具通过抓取多引擎搜索结果来工作,请注意以下重要限制:

  1. 速率限制

    • 短时间内过多的搜索可能会导致所用引擎暂时阻止请求
    • 建议:
      • 保持合理的搜索频率
      • 慎重使用限制参数
      • 必要时在搜索之间添加延迟
  2. 结果准确性

    • 取决于相应引擎的HTML结构,当引擎更新时可能会失败
    • 某些结果可能缺少如描述等元数据
    • 复杂的搜索操作符可能无法按预期工作
  3. 法律条款

    • 此工具仅供个人使用
    • 请遵守相应引擎的服务条款
    • 根据您的实际使用情况实施适当的速率限制
  4. 搜索引擎配置

    • 可以通过DEFAULT_SEARCH_ENGINE环境变量设置默认搜索引擎
    • 支持的引擎:bing, duckduckgo, exa, brave
    • 在搜索特定网站时使用默认引擎
  5. 代理配置

    • 当某些搜索引擎在特定地区不可用时,可以配置HTTP代理
    • 通过环境变量USE_PROXY=true启用代理
    • 通过PROXY_URL配置代理服务器地址

贡献

欢迎提交问题报告和功能改进建议!

贡献者指南

如果您想分叉此仓库并发布自己的Docker镜像,则需要进行以下配置:

GitHub Secrets 配置

为了启用自动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),它会自动执行以下操作:

  1. 触发条件

    • 推送到main分支
    • 推送版本标签(v*
    • 手动触发工作流
  2. 构建并推送到

    • GitHub Container Registry (ghcr.io) - 总是启用
    • 阿里云容器注册表 - 仅当配置了ACR密钥时启用
  3. 镜像标签

    • ghcr.io/你的用户名/open-web-search:latest
    • 你的ACR地址/你的镜像名称:latest(如果配置了ACR)

分叉并发布步骤:

  1. 将仓库分叉到您的GitHub账户2. 配置密钥(如果你需要ACR发布):
    • 进入设置 → 密钥和变量 → 操作,在你fork的仓库中
    • 添加上述列出的与ACR相关的密钥
  2. 推送更改main分支或创建版本标签
  3. GitHub Actions将自动构建并推送你的Docker镜像
  4. 使用你的镜像,更新Docker命令:
    bash
    docker run -d --name web-search -p 3000:3000 -e ENABLE_CORS=true -e CORS_ORIGIN=* ghcr.io/your-username/open-web-search:latest

注意事项:

  • 如果你不配置ACR密钥,工作流将只发布到GitHub Container Registry
  • 确保你的GitHub仓库已启用Actions
  • 工作流将使用你的GitHub用户名(转换为小写)作为GHCR镜像名称

Star History

如果你觉得这个项目对你有帮助,请考虑给它一个⭐ Star!

Star History Chart

相关 MCP 服务