多源搜索引擎

一个免费的MCP多源搜索引擎,提供10个独立搜索源,覆盖7个信息域,无需API密钥即可使用。

  • by MichaelWolf-Baige
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Michael-art-cmd/search-mcp

使用说明

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 步:

  1. 创建 engines/<category>/newengine.py,继承 BaseEngine,加 @register_engine
  2. 在 engines/__init__.py 中 import
  3. 完成 — 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