多搜索引擎支持服务

基于模型上下文协议(MCP)的网页搜索服务器,支持多搜索引擎自动回退功能,适用于需要稳定搜索结果的开发场景。

  • by k-l-lambda
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 k-l-lambda/search-mcp

使用说明

搜索MCP服务器

一种基于模型上下文协议(MCP)的网络搜索服务器,支持具有自动回退功能的多个搜索引擎。

✨ 特性

  • 🔍 多搜索引擎支持
    • SerpAPI(推荐-需要API密钥)
    • 百度
    • 谷歌
    • 鸭鸭搜
    • SearXNG
  • 🔄 自动回退机制
  • 🌐 代理支持(自动使用 http://localhost:1081)
  • 📦 与MCP协议完全兼容
  • 🎯 结构化搜索结果(标题、链接、片段)

📦 安装

npm install
npm run build

🚀 用法

选项1:使用SerpAPI(推荐)

为什么选择SerpAPI?

  • ✅ 稳定可靠,无防刮擦问题
  • ✅ 免费等级:每月100次搜索
  • ✅ 支持多个搜索引擎(谷歌、必应、百度等)
  • ✅ API官方,快速响应

获取API密钥:

  1. 访问https://serpapi.com/
  2. 注册一个免费账户
  3. 获取API密钥

配置:

# Method 1: Use .env.local file (recommended)
cp .env.example .env.local
# Edit .env.local, add your API Key
# SERPAPI_KEY=your_api_key_here

# Method 2: Use environment variable
export SERPAPI_KEY="your_api_key_here"

测试搜索:

# Build the project
npm run build

# Run test (automatically reads .env.local)
npm run dev
# or
npx tsx src/test.ts

选项2:使用开源引擎(可能会遇到反刮擦)

直接使用代码中实现的scraper引擎,但可能会遇到:

  • 503错误
  • 验证码阻止
  • 超时问题

🔧 Claude代码配置

配置后 .env.local,将MCP服务器添加到Claude Code配置中:

推荐配置(使用.env.local):

{
  "mcpServers": {
    "search": {
      "command": "node",
      "args": ["/home/ubuntu/work/search-mcp/dist/index.js"]
    }
  }
}

或者在配置中指定环境变量:

{
  "mcpServers": {
    "search": {
      "command": "node",
      "args": ["/home/ubuntu/work/search-mcp/dist/index.js"],
      "env": {
        "SERPAPI_KEY": "your_serpapi_key_here"
      }
    }
  }
}

提示: 使用 .env.local 密钥管理文件更安全、更方便。

🛠️ 发展

# Development mode
npm run dev

# Build
npm run build

# Run built version
npm start

📖 搜索工具API

MCP服务器提供 web_search 工具具有以下参数:

  • query (必填):搜索查询字符串
  • engine (可选):要使用的搜索引擎
    • auto (默认):自动尝试所有具有回退功能的引擎
    • serpapi:使用SerpAPI(需要SerpAPI_KEY)
    • baidu:仅使用百度
    • google:仅使用谷歌
    • duckduckgo:仅使用DuckDuckGo
    • searxng:仅使用SearXNG
  • max_results (可选):最大结果数(1-50,默认值:10)
  • language (可选):语言首选项(默认值:“en”)

💡 使用示例

呼叫克劳德代码:

web_search({
  query: "gold price today",
  engine: "auto",
  max_results: 5
})

🌍 环境变量

  • https_proxy / HTTPS_PROXY:代理服务器URL(默认值:http://localhost:1081)
  • SERPAPI_KEY:SerpAPI密钥(可选,但强烈推荐)

📂 项目结构

search-mcp/
├── src/
│   ├── index.ts              # MCP server entry point
│   ├── search/
│   │   ├── base.ts           # Search engine base class
│   │   ├── serpapi.ts        # SerpAPI implementation (recommended)
│   │   ├── baidu.ts          # Baidu search
│   │   ├── google.ts         # Google search
│   │   ├── duckduckgo.ts     # DuckDuckGo search
│   │   ├── searxng.ts        # SearXNG search
│   │   └── manager.ts        # Search manager (fallback logic)
│   └── utils/
│       └── http.ts           # HTTP client (proxy support)
├── package.json
├── tsconfig.json
├── PLAN.md                    # Development plan
├── SOLUTION.md                # Problem solutions
└── README.md                  # This file

⚠️ 防刮擦问题

由于各大搜索引擎(谷歌、百度、DuckDuckGo)采取了严格的反抓取措施,直接抓取可能会遇到:

  • 503服务不可用
  • 验证码阻止
  • IP禁令
  • 请求超时

强烈建议使用SerpAPI,提供了官方API访问,而无需考虑防刮问题。

看 SOLUTION.md 寻找替代解决方案。

📝 许可证

国际学生委员会