Web Search MCP Server
多源网页搜索 MCP 服务器,支持自动故障转移。专为国内用户优化,无需 VPN 即可使用。
特性
- VPN 自动检测: 自动检测网络环境,开启 VPN 用国际源,未开启用国内源
- 多搜索源支持: 国内源(必应中国、百度、搜狗、360)+ 国际源(DuckDuckGo、Google News、Wikipedia)
- 自动故障转移: 如果一个源失败,自动尝试下一个
- 语言检测: 自动为中日韩文查询调整搜索参数
- 灵活输出: 文本(人类可读)或 JSON(结构化)格式
- 网页抓取: 从 URL 提取可读内容
- 无需 API Key: 所有搜索源均为免费
安装
# 从源码安装
pip install -e .
# 或使用 uv
uv pip install -e .
搜索源
| 源 | 描述 | 国内可用 |
|---|---|---|
bing_china |
必应中国 (cn.bing.com) | ✅ |
baidu |
百度搜索 | ✅ |
sogou |
搜狗搜索 | ✅ |
so360 |
360搜索 (so.com) | ✅ |
ddg_lite |
DuckDuckGo Lite | ❌ 需VPN |
google_news_rss |
Google News RSS | ❌ 需VPN |
wikipedia |
Wikipedia OpenSearch | ❌ 需VPN |
默认优先级
自动检测 VPN 状态:
- VPN 开启: DuckDuckGo → Google News → Wikipedia → 必应中国 → 百度 → 搜狗 → 360
- VPN 关闭: 必应中国 → 百度 → 搜狗 → 360
首次搜索时会自动检测网络环境(尝试访问 Google),结果会缓存避免重复检测。
使用
运行服务器
# 直接执行
mcpcn-web-search-mcp
# 或通过 Python
python -m web_search_mcp.server
Claude Desktop 配置
添加到 claude_desktop_config.json:
{
"mcpServers": {
"web-search": {
"command": "mcpcn-web-search-mcp"
}
}
}
或使用 uv:
{
"mcpServers": {
"web-search": {
"command": "uv",
"args": [
"--directory",
"/path/to/web-search-mcp",
"run",
"mcpcn-web-search-mcp"
]
}
}
}
工具
web_search
使用多个搜索源搜索互联网,支持自动故障转移。
参数:
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
query |
string | 必填 | 搜索查询词 |
max_results |
int | 10 | 最大结果数 (1-20) |
format |
string | "text" | 输出格式: "text" 或 "json" |
sources |
string | "" | 逗号分隔的源列表 |
示例:
# 文本格式(默认)
web_search(query="Python 教程", max_results=5)
# JSON 格式
web_search(query="最新AI新闻", format="json")
# 指定搜索源
web_search(query="机器学习", sources="baidu,bing_china")
# 仅使用国际源
web_search(query="machine learning", sources="ddg_lite,wikipedia")
fetch_webpage
从 URL 获取并提取可读内容。
参数:
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
url |
string | 必填 | 要获取的 URL |
max_length |
int | 8000 | 最大内容长度 |
示例:
fetch_webpage(url="https://example.com/article")
架构
┌─────────────────────────────────────────────────────────────┐
│ MCP Server (FastMCP) │
├─────────────────────────────────────────────────────────────┤
│ web_search() fetch_webpage() │
│ │ │ │
│ ▼ ▼ │
│ MultiSourceSearcher requests + BeautifulSoup │
│ │ │
│ ├──► BingChinaProvider (国内,免费) │
│ ├──► BaiduProvider (国内,免费) │
│ ├──► SogouProvider (国内,免费) │
│ ├──► So360Provider (国内,免费) │
│ ├──► DuckDuckGoLiteProvider (国际,免费) │
│ ├──► GoogleNewsRSSProvider (国际,新闻) │
│ └──► WikipediaProvider (国际,百科) │
└─────────────────────────────────────────────────────────────┘
开发
# 安装开发依赖
pip install -e ".[dev]"
# 运行测试
pytest
# 代码检查
ruff check .
License
MIT
Metadata
Release files for mcpcn-web-search-mcp 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mcpcn_web_search_mcp-0.1.5.tar.gz | 10.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcpcn_web_search_mcp-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.9 kB
Release files / mcpcn_web_search_mcp-0.1.5.tar.gz
| Download URL | mcpcn_web_search_mcp-0.1.5.tar.gz |
|---|---|
| Size | 10.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eccc8dbb7467e81c7c92d67b47e4a7b230d7d46b36be50db000b940600e28719
|
|
BLAKE2b-256 checksum How to use checksums |
84e5238a62e7bb442cbe53057fdce46f921e6858ac6072433f047412e0c48aff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / mcpcn_web_search_mcp-0.1.5-py3-none-any.whl
| Download URL | mcpcn_web_search_mcp-0.1.5-py3-none-any.whl |
|---|---|
| Size | 11.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5faab3d3898b79ef5f0067853b29fc7379a7b0ece73af3bdc6c040c9dccdb48a
|
|
BLAKE2b-256 checksum How to use checksums |
e1014bef4b4390eb3af1b6ccd166b93a55d25a4f705a6f537a1fc43c80f01604
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|