🚀 Open-WebSearch MCP Server
Open-WebSearch MCP Server是一个基于多引擎搜索结果的模型上下文协议(MCP)服务器,支持无需API密钥的免费网络搜索,为用户提供便捷、高效的网络信息获取途径。
🚀 快速开始
你可以通过本地安装或者Docker部署两种方式启动Open-WebSearch MCP Server。
✨ 主要特性
- 多引擎网络搜索:支持使用多个搜索引擎进行网络搜索,包括bing、baidu、csdn、duckduckgo、exa、brave等,为你提供更全面的搜索结果。
- HTTP代理配置:支持配置HTTP代理,方便在特定区域访问受限资源。
- 免API密钥:无需API密钥或身份验证,即可使用搜索服务。
- 结构化结果返回:返回包含标题、URL和描述的结构化搜索结果,便于查看和使用。
- 结果数量可配置:支持自定义每次搜索返回的结果数量。
- 默认搜索引擎可定制:可以根据需求设置默认的搜索引擎。
- 文章内容获取:支持获取CSDN博客文章的完整内容。
📦 安装指南
本地安装
- 克隆或下载本仓库。
- 安装依赖:
npm install
- 构建服务器:
npm run build
- 将服务器添加到你的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"
}
}
}
VSCode (Claude Dev Extension):
{
"mcpServers": {
"web-search": {
"transport": {
"type": "streamableHttp",
"url": "http://localhost:3000/mcp"
}
},
"web-search-sse": {
"transport": {
"type": "sse",
"url": "http://localhost:3000/sse"
}
}
}
}
Claude Desktop:
{
"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快速部署:
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=true
CORS_ORIGIN=*
DEFAULT_SEARCH_ENGINE=duckduckgo
USE_PROXY=true
PROXY_URL=http://your-proxy-server:port
PORT=8080
然后在你的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
工具使用
{
"query": string,
"limit": number,
"engines": string[]
}
使用示例:
use_mcp_tool({
server_name: "web-search",
tool_name: "search",
arguments: {
query: "search content",
limit: 3,
engines: ["bing", "csdn", "duckduckgo", "exa", "brave"]
}
})
响应示例:
[
{
"title": "Example Search Result",
"url": "https://example.com",
"description": "Description text of the search result...",
"source": "Source",
"engine": "Engine used"
}
]
fetchCsdnArticle
工具使用
用于获取CSDN博客文章的完整内容。
{
"url": string
}
使用示例:
use_mcp_tool({
server_name: "web-search",
tool_name: "fetchCsdnArticle",
arguments: {
url: "https://blog.csdn.net/xxx/article/details/xxx"
}
})
响应示例:
[
{
"content": "Example search result"
}
]
fetchLinuxDoArticle
工具使用
用于获取Linux.do论坛文章的完整内容。
{
"url": string
}
使用示例:
use_mcp_tool({
server_name: "web-search",
tool_name: "fetchLinuxDoArticle",
arguments: {
url: "https://xxxx.json"
}
})
响应示例:
[
{
"content": "Example search result"
}
]
📚 详细文档
使用限制
由于本工具通过抓取多引擎搜索结果来工作,请注意以下重要限制:
- 速率限制:
- 短时间内进行过多搜索可能会导致所使用的搜索引擎暂时阻止请求。
- 建议:
- 保持合理的搜索频率。
- 谨慎使用
limit
参数。
- 必要时在搜索之间添加延迟。
- 结果准确性:
- 搜索结果的准确性取决于相应搜索引擎的HTML结构,当搜索引擎更新时可能会失败。
- 部分结果可能缺少描述等元数据。
- 复杂的搜索运算符可能无法按预期工作。
- 法律条款:
- 本工具仅供个人使用。
- 请遵守相应搜索引擎的服务条款。
- 根据实际使用情况实施适当的速率限制。
- 搜索引擎配置:
- 可以通过
DEFAULT_SEARCH_ENGINE
环境变量设置默认搜索引擎。
- 支持的搜索引擎:bing、duckduckgo、exa、brave。
- 搜索特定网站时使用默认搜索引擎。
- 代理配置:
- 当某些搜索引擎在特定区域不可用时,可以配置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
),它会自动执行以下操作:
- 触发条件:
- 推送到
main
分支。
- 推送版本标签(
v*
)。
- 手动触发工作流。
- 构建并推送到:
- GitHub Container Registry(ghcr.io) - 始终启用。
- 阿里云容器镜像服务 - 仅在配置了ACR密钥时启用。
- 镜像标签:
ghcr.io/your-username/open-web-search:latest
your-acr-address/your-image-name:latest
(如果配置了ACR)
分叉和发布步骤
- 分叉仓库:将本仓库分叉到你的GitHub账户。
- 配置密钥(如果你需要发布到ACR):
- 进入你分叉仓库的设置(Settings → Secrets and variables → Actions)。
- 添加上述与ACR相关的密钥。
- 推送更改:将更改推送到
main
分支或创建版本标签。
- 自动构建和推送:GitHub Actions将自动构建并推送你的Docker镜像。
- 使用镜像:更新Docker命令:
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历史
如果你觉得这个项目有帮助,请考虑给它一个 ⭐ Star!

项目状态徽章
语言切换
中文