使用说明
Search MCP v2
100% 免费 的 MCP (Model Context Protocol) 多源搜索引擎。零 API 密钥即可使用全部 10 个独立搜索源,覆盖 7 个信息域,0% 结果重叠。
架构
┌──────────────────────────────────────────────────┐
│ MCP 客户端 │
│ (Claude Code / Claude Desktop) │
└──────────────┬───────────────────────────────────┘
│ stdio ┌──────────────┐
┌──────────────▼───────│ server.py │──────────────┐
│ ┌───────│ (瘦入口) │───────┐ │
│ │ └──────────────┘ │ │
│ ┌──────▼──────┐ ┌───────▼──────┐│
│ │ Registry │ │ Dispatcher ││
│ │ (引擎注册中心) │◄────────────►│ (工具调度器) ││
│ └──────┬──────┘ └──────────────┘│
│ │ │
│ ┌──────────┼────────────────────────────┐ │
│ ▼ ▼ ▼ ▼ ▼ │
│ [Web] [Academic] [Social] [CN] [Reference] │
│ DDG arXiv HN Zhihu Wikipedia │
│ SemScholar GitHub CSDN │
│ StackOverflow CNBlogs │
└──────────────────────────────────────────────────┘
解耦设计
| 层 | 职责 | 修改一个引擎 |
|---|---|---|
| Engine | 搜索实现 | 创建 engines/<category>/newengine.py |
| Registry | 引擎注册与发现 | 在 engines/__init__.py 加一行 import |
| Dispatcher | 工具路由 + 缓存 | 不需要改 |
| Server | MCP 协议适配 | 不需要改 |
| Core | 共享基础设施 | 不需要改 |
添加新搜索引擎只需要 3 步:
- 创建
engines/<category>/newengine.py,继承BaseEngine,加@register_engine - 在
engines/__init__.py中 import - 完成 — server 自动发现新引擎
搜索引擎 (10个)
| 引擎 | 工具名 | 类型 | 需要 API Key |
|---|---|---|---|
| DuckDuckGo | search_duckduckgo |
Web | ❌ |
| arXiv | search_arxiv |
学术 | ❌ |
| Semantic Scholar | search_semantic_scholar |
学术 (2亿+论文) | ❌ |
| HackerNews | search_hackernews |
技术社区 | ❌ |
| GitHub | search_github |
代码仓库 | ❌ |
| Stack Overflow | search_stackoverflow |
编程问答 | ❌ |
| 知乎 | search_zhihu |
中文问答 | ❌ |
| CSDN | search_csdn |
中文技术博客 | ❌ |
| 博客园 | search_cnblogs |
中文技术博客 | ❌ |
| Wikipedia | search_wikipedia |
百科 | ❌ |
系统工具 (8个)
| 工具 | 功能 |
|---|---|
fetch_content |
网页正文提取 |
get_latest_news |
RSS 最新新闻 |
check_health |
搜索源健康检测 |
cache_stats |
缓存统计 |
clear_cache |
清空缓存 |
deep_research |
AI 深度研究 (需 ANTHROPIC_API_KEY) |
suggest_keywords |
关键词扩展建议 |
list_engines |
列出所有引擎 |
安装
方式 1: pip 安装
git clone https://github.com/MichaelWolf-Baige/search-mcp.git
cd search-mcp
pip install -e .
方式 2: Docker
docker build -t search-mcp .
方式 3: 开发安装 (含测试工具)
pip install -e ".[dev]"
配置
Claude Code
在 ~/.claude/.mcp.json 中添加:
{
"mcpServers": {
"search-mcp": {
"command": "python",
"args": ["-m", "search_mcp.server"],
"env": {
"PYTHONIOENCODING": "utf-8"
}
}
}
}
使用虚拟环境:
{
"mcpServers": {
"search-mcp": {
"command": "<path-to-venv>/Scripts/python.exe",
"args": ["-m", "search_mcp.server"],
"env": {
"PYTHONIOENCODING": "utf-8"
}
}
}
}
Docker 方式:
{
"mcpServers": {
"search-mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "search-mcp"]
}
}
}
环境变量 (可选)
# 代理 (部分网络环境需要)
export HTTPS_PROXY="http://127.0.0.1:7890"
# 深度研究 (需要 AI 分析时)
export ANTHROPIC_API_KEY="sk-ant-..."
项目结构
search-mcp/
├── src/search_mcp/
│ ├── server.py # MCP 入口 (30行,超薄)
│ ├── config.py # 统一配置
│ ├── registry.py # 引擎注册中心
│ ├── dispatcher.py # 工具调度器
│ │
│ ├── engines/ # 搜索引擎 (每个引擎一个文件)
│ │ ├── base.py # BaseEngine, SearchResult
│ │ ├── web/ # duckduckgo
│ │ ├── academic/ # arxiv, semantic_scholar
│ │ ├── social/ # hackernews, github, stackoverflow
│ │ ├── cn/ # zhihu, csdn, cnblogs
│ │ ├── news/ # rss
│ │ └── reference/ # wikipedia
│ │
│ ├── core/ # 共享基础设施
│ │ ├── cache.py # 缓存 (TTL, stats)
│ │ ├── health.py # 健康检测
│ │ ├── fetcher.py # 网页抓取
│ │ ├── formatter.py # 格式化
│ │ └── keywords.py # 关键词扩展
│ │
│ ├── research/ # 深度研究
│ │ └── deep_research.py
│ │
│ └── cli/ # 命令行工具
│ └── main.py
│
├── Dockerfile
├── .env.example
├── pyproject.toml
└── README.md
对比 v1
| v1 | v2 | |
|---|---|---|
| 引擎数量 | 6 (含3个伪引擎) | 10 (全部独立真实) |
| 架构 | server.py 400行巨型 if-elif | 每层解耦,server.py 30行 |
| 添加新引擎 | 修改 5+ 文件 | 创建新文件 + 1行 import |
| 代码重复 | search_tool + src 两套 | 统一 src/search_mcp |
| 搜索结果独立性 | 3个引擎走同一后端 | 0% URL重叠,7个信息域 |
| 安装 | requirements.txt + pyproject.toml 不一致 | 统一 pyproject.toml |
| 搜索覆盖 | 网页+新闻+学术+中文 | +代码+百科+问答 |
| Docker | 无 | ✓ |
License
MIT