MCP HubMCP Hub
fengin

search-server

by: fengin

一个基于MCP协议的搜索服务实现,提供网络搜索和本地搜索功能,Cursor和Claude Desktop能与之无缝集成。

59created 11/02/2025
Visit
Search
Integration

📌Overview

Purpose: To provide a search service based on the MCP protocol, integrating multiple search engines seamlessly with Cursor and Claude Desktop.

Overview: The Search MCP Server is developed in Python, designed to handle asynchronous processing and high concurrent requests. It currently supports three search engines: Brave Search, Metaso Search, and Bocha Search.

Key Features:

  • Multi-Search Engine Support:
    • Integration of three search engines, enabling various search capabilities including web search, academic search, and location-specific search.
  • Seamless Integration:
    • Works smoothly with Claude Desktop and Cursor, enhancing content retrieval capabilities within these tools.
  • Modular Design:
    • Each search engine is encapsulated in an independent module, allowing for flexible use and easy customization.

Search MCP Server

一个基于MCP协议的搜索服务实现,提供多种搜索引擎支持,Cursor和Claude Desktop能与之无缝集成。

使用Python开发,支持异步处理和高并发请求,目前支持三种搜索引擎选择:

  • Brave Search :国外专业提供搜索接口服务产品
  • 秘塔(Metaso)搜索:秘塔AI搜索的逆向实现接口,非官方接口
  • 博查(bocha)搜索:国内Search API市场占有率最高的搜索API产品

更多MCP知识,见AI全书:一文看懂什么是MCP(大模型上下文)?用来干什么的?怎么用它?

作者:凌封(微信fengin)

网址https://aibook.ren(AI全书)

功能特点

  • 多搜索引擎支持
    • Brave Search: 提供网络搜索和位置搜索
    • Metaso搜索: 提供网络搜索和学术搜索,支持简洁和深入两种模式
    • 博查搜索: 提供网络搜索,支持时间范围过滤、详细摘要和图片搜索
  • 适用场景
    Claude Desktop或者Cursor无缝集成使用,大大扩展工具的内容获取能力
  • 模块化设计
    每个搜索引擎都是独立的模块,也可以单独拷出去其他地方使用

三种搜索的选择

运行时只能生效一种搜索引擎,以下为大致对比:

搜索引擎国内/外需魔法自带总结质量免费官方速度注册门槛
Brave国外是(限量)很高
Metaso国内慢(AI总结)
Bocha国内极快

安装和使用

1. 环境要求

  • Python 3.10+
  • uv 0.24.0+
  • node.js v20.15.0
  • cursor >=0.45.10(低于该版本mcp server配置老是连不上)
  • 科学上网(仅使用Brave Search需要)

1.1 安装浏览器驱动(仅Metaso需要)

pip install playwright>=1.35.0
playwright install chromium

2. 下载代码

git clone https://github.com/fengin/search-server.git

3. 启用你要的搜索引擎

打开项目根目录,修改server.py中以下代码选择启用类型:

SEARCH_ENGINE = os.getenv("SEARCH_ENGINE", "bocha")

支持的值有 bravemetasobocha,也可以通过环境变量SEARCH_ENGINE配置。

4. 配置对应的搜索模块

三个模块目录下各有一个config.py文件:

  • src/search/proxy/brave
  • src/search/proxy/metaso
  • src/search/proxy/bocha

根据选择修改对应的配置文件:

4.1 Brave Search配置

BRAVE_API_KEY = os.getenv("BRAVE_API_KEY")
if not BRAVE_API_KEY:
    BRAVE_API_KEY = "你申请的 brave_api_key"

API KEY申请地址: https://api-dashboard.search.brave.com/login

申请门槛较高,要求:

  • 魔法(使用时也需要)
  • 邮箱验证
  • 信用卡(可用虚拟卡)

4.2 秘塔(Metaso)配置

METASO_UID = os.getenv("METASO_UID")
METASO_SID = os.getenv("METASO_SID")
if not METASO_UID or not METASO_SID:
    METASO_UID = "你获取的 metaso_uid"
    METASO_SID = "你获取的 metaso_sid"

uid和sid获取方式:

登录秘塔AI搜索账号后,打开开发者工具,从Cookies中找到uidsid

多账号接入提示:

秘塔可能限制总搜索次数,建议使用多个账号的uid-sid并做IP轮换。

4.3 博查(Bocha)配置

BOCHA_API_KEY = os.getenv("BOCHA_API_KEY", "")
if not BOCHA_API_KEY:
    BOCHA_API_KEY = "你申请的 bocha_api_key"

注册申请地址:https://open.bochaai.com/

调用按次数收费,质量较好,作者提供少量免费试用码,需联系微信。

5. AI工具配置

5.1 Cursor配置

  • name: search
  • type: cmd
  • command: uv --directory D:\code\search-server run search

其中“D:\code\search-server”是你下载代码的目录。

5.2 Claude Desktop配置

编辑Claude Desktop配置文件,增加以下内容:

{
  "mcpServers": {
    "search": {
            "command": "uv",
            "args": [
                "--directory",
                "D:\\code\\search-server",
                "run",
                "search"
            ],
            "env": {
                "BRAVE_API_KEY": "你申请的API KEY"
            }
        }
  }
}

环境变量根据需要配置,修改代码后可不配置。

注意: Cursor会弹出黑窗口,请勿关闭,此为MCP Server进程。

Claude Desktop配置后需重启应用才能生效。

5.4 问题排查

如果Cursor中MCP Servers配置后显示红点或工具不可用:

  1. 确认环境准备正确,满足版本要求。
  2. 在正确的命令行环境(通常是Windows cmd)运行命令验证:
    uv --directory D:\code\search-server run search
    
  3. 确认路径和命令配置正确。
  4. 不要关闭弹出的黑窗口,需要重启Cursor。
  5. 确保Cursor版本不太旧。
  6. 如果运行时报错找不到chromium,请安装Playwright浏览器驱动(见1.1)。

6. 使用说明

在Claude Desktop或者Cursor中正常工作即可,必要时会自动调用搜索接口获取内容。

  • 配置好工具后,Claude Desktop/ Cursor工具列表中会识别到该工具。
  • 请求时会自动调用搜索引擎获取内容。
  • 在Cursor必须启用composer的agent模式且执行工具调用。

技术内幕

项目结构

search/
├── __init__.py
├── server.py              # MCP服务器实现
└── proxy/                 # 搜索引擎代理
    ├── brave/             # Brave搜索模块
    │   ├── __init__.py
    │   ├── client.py      # 核心客户端实现
    │   ├── config.py      # 配置和速率限制
    │   └── exceptions.py  # 异常定义
    ├── metaso/            # Metaso搜索模块
    │   ├── __init__.py
    │   ├── client.py      # 核心客户端实现
    │   ├── config.py      # 配置和速率限制
    │   └── exceptions.py  # 异常定义
    ├── bocha/             # 博查搜索模块
    │   ├── __init__.py
    │   ├── client.py      # 核心客户端实现
    │   ├── config.py      # 配置和速率限制
    │   └── exceptions.py  # 异常定义
    ├── brave_search.py    # Brave MCP工具实现
    ├── metaso_search.py   # Metaso MCP工具实现
    └── bocha_search.py    # 博查搜索MCP工具实现

接口参数

Brave Search引擎

  • search
    执行网络搜索,支持分页和过滤
    输入参数:

    • query (string): 搜索关键词
    • count (number, 可选): 每页结果数量(最大20)
    • offset (number, 可选): 分页偏移量(最大9)
  • location_search
    搜索地理位置相关信息(商家、餐厅等)
    输入参数:

    • query (string): 位置搜索关键词
    • count (number, 可选): 结果数量(最大20)
      无相关结果时自动切换网络搜索

Metaso搜索引擎

  • search
    执行网络搜索,支持多种模式
    输入参数:

    • query (string): 搜索关键词
    • mode (string, 可选): 搜索模式
      • concise: 简洁模式,回答简短精炼
      • detail: 深入模式,回答详细全面(默认)
      • research: 研究模式,回答深度分析(暂不支持)
  • scholar_search
    执行学术搜索,专门用于查找学术资源
    输入参数同search。

博查搜索引擎

  • search
    执行网络搜索,支持时间范围过滤和详细摘要
    输入参数:
    • query (string): 搜索关键词
    • count (number, 可选): 结果数量(1-10,默认10)
    • page (number, 可选): 页码,从1开始
    • freshness (string, 可选): 时间范围
      • noLimit: 不限时间(默认)
      • oneDay: 一天内
      • oneWeek: 一周内
      • oneMonth: 一月内
      • oneYear: 一年内
    • summary (boolean, 可选): 是否显示详细摘要,默认false

返回内容包括搜索统计信息、网页搜索结果及相关图片信息。