返回市场
搜索服务器

搜索服务器

作者:fengin74 星标更新:2025-02-18

项目介绍

搜索MCP服务器

image

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

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

  • Brave Search:专业的海外搜索接口服务提供商

  • Metaso Search:Metaso AI搜索的反向实现接口,非官方接口

  • Bocha Search:国内市场份额最高的搜索API产品

更多关于MCP的知识,请参考AI百科全书(一篇文章了解什么是MCP(大型模型上下文)?它有什么用途?如何使用?

作者:凌风(微信:fengin)

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

使用示例

image

特点

  • 支持多种搜索引擎
    • Brave Search:提供网页搜索和地理位置搜索
    • Metaso Search:提供在线和学术搜索,支持简洁模式和深入模式
    • Bocha Search:提供在线搜索,支持时间范围过滤、详细摘要和图片搜索
  • 适用场景:与Claude Desktop或Cursor的无缝集成极大地扩展了工具的内容检索能力
  • 模块化设计:每个搜索引擎都是一个独立的模块,也可以单独复制到其他地方使用

三种搜索选项

<mark>运行时只能有一个搜索引擎生效</mark>为了方便大家选择在线配置,我进行了如下粗略对比:

搜索引擎国内/国际是否需要魔法是否自带摘要质量免费官方速度注册门槛
Brave国际是(有限制)中等很高
Metaso国内中等较慢(AI摘要)
Bocha国内极快

安装和使用

1. 环境要求

  • Python 3.10+
  • uv 0.24.0+
  • node.js v20.15.0
  • Cursor>=0.45.10(低于此版本MCP服务器配置总是无法连接)
  • 科学互联网(仅Brave Search所需)

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

# 安装Playwright框架
pip install playwright>=1.35.0
# 安装浏览器驱动,仅安装chromium
playwright install chromium

2. 下载代码

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

3. 启用您想要的搜索引擎

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

# 搜索引擎配置
SEARCH_ENGINE = os.getenv("SEARCH_ENGINE", "bocha")

值对应于brave、meta so、bocha,也可以通过环境变量SEARCH-ENGINE进行配置

4. 配置相应的搜索模块

以下三个模块目录中都有对应的config.py文件:

  • src\search\proxy\brave

  • src\search\proxy\metaso

  • src\search\proxy\bocha

根据您的选择,修改相应的config.py文件配置

4.1 Brave Search 配置

# 检查API密钥
BRAVE_API_KEY = os.getenv("BRAVE_API_KEY")
if not BRAVE_API_KEY:
    BRAVE_API_KEY = "你申请的 brave_api_key"

如果在Claude Desktop中使用,可以通过配置环境变量传递参数,但cursor目前不支持环境变量,只能在此文件中修改

API KEY申请地址:Brave Search - API

<mark>申请门槛相对较高</mark>要求:

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"

同样,可以在MCP Servers中通过配置环境变量在Claude Desktop中使用;

UID和SID的获取方法:

进入Secret Tower AI搜索并登录账户(<mark>建议登录账户,否则可能会遇到奇怪的限制</mark>),然后F12打开开发者工具,前往Application>Cookies找到uidsid的值。

获取uid-sid

多账号访问

<mark>注意:目前怀疑Secret Tower对IP地址的总搜索次数有限制,建议添加IP轮换</mark>

您可以提供多个账号的UID ID,并用逗号分隔,修改相关使用代码,我会从每次服务请求中选择一个,以后再考虑。

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中的配置

Cursor配置

  • 名称:search
  • 类型:cmd
  • 命令:uv --directory D:\code\search-server run search

其中,“D: \ code \ search server”指的是您拉取下来的源代码目录

5.2 Claude Desktop 配置

查找配置文件

方法1

# widnows
C:\Users\{用户}\AppData\Roaming\Claude\claude_desktop_config.json
# mac/linux 应该在用户家目录下找

方法2

打开Claude Desktop应用查看: Claude Desktop—> 菜单—> 设置—> 开发者—> 编辑配置

编辑并添加以下MCP服务器:

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

环境变量取决于您的需求。如果代码有变动,则无需配置它们

<mark>cursor会弹出一个黑窗口,不要关闭,不要关闭</mark>这是已经启动的MCP Server进程,目前无法解决不弹出的问题。

配置Claude Desktop后,需要重启应用程序才能生效。

5.4 问题排查

配置cursor后,很多人遇到配置MCP Servers后状态仍显示红点,工具未找到的情况,使用时不会调用是因为配置不正确。

最常见的场景是:

  1. 环境未准备好,包括所需的软件和版本要求,请参阅环境部分以获取详细信息

  2. 准备的环境不正确。例如,Windows有cmd终端、PowerShell终端,甚至可能安装了Gitbash终端。您可以打开cmd终端(cursor通常是这个)检查环境并直接运行UV --directory D: \ code \ search server run search

  3. 配置路径/命令不正确。您可以打开终端并运行命令查看:UV --directory D: \ code \ search server run search

  4. 关闭黑窗口并重新启动cursor以重新打开

  5. cursor版本过旧

  6. 运行时出现以下错误,原因是Chromium未安装。解决方案见环境准备第1.1章

    错误:搜索执行错误:BrowserType.launch persistent context:Executable doesn't exist atC:\Users\fengi\AppDatalLocal\ms-playwright\chromium headless shell-1155\chrome-winlheadless shell.exe
    

6. 使用

<mark>只需在您的Claude Desktop或cursor中正常工作,当需要时它会自动调用搜索接口来检索内容</mark>例如,如果您在网上组织2025年的技术发展方向作为软件内容,它会调用搜索工具来获取网络信息:

  • 配置工具后,其信息会表明存在此工具
  • 根据您的请求,它会自动分析并确定需要使用搜索工具
  • 根据需求提取关键词并调用搜索工具
  • 根据返回的搜索结果组织您想要的结果

需要注意的是,在cursor中必须开启composer的代理模式才能有效工作;调用工具时也需要点击执行;

COM

项目结构

search/
├── __init__.py
├── server.py              # MCP服务器实现
└── proxy/                 # 搜索引擎代理
    ├── brave/             # Brave搜索模块
    │   ├── __init__.py
    │   ├── client.py      # 核心客户端实现
    │   ├── config.py      # 配置和速率限制
    │   └── exceptions.py  # 异常定义
    ├── metaso/            # Metaso搜索模块
    │   ├── __init__.
    │   ├── 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

    • 执行网络搜索,支持分页和过滤
    • 输入参数:
      • query (字符串):搜索关键词
      • count (数字,可选):每页结果数量(最大20)
      • offset (数字,可选):页偏移量(最大9)
  • location_search

    • 搜索与地理位置相关的信息(商户、餐厅等)
    • 输入参数:
      • query (字符串):位置搜索关键词
      • count (数字,可选):结果数量(最大20)
    • 当没有相关结果时,自动切换到网络搜索

Metaso搜索引擎

  • search

    • 执行网络搜索并支持多种模式
    • 输入参数:
      • query (字符串):搜索关键词
      • mode (字符串,可选):搜索模式
        • concise简洁模式,简明扼要地回答
        • detail深入模式,提供详细全面的回答(默认)
        • research研究模式,深入分析回答(<mark>当前不支持,反向工程尚未成功</mark>
  • scholar_search

    • 专门用于查找学术资源的学术搜索
    • 输入参数:
      • query (字符串):学术搜索关键词
      • mode (字符串,可选):搜索模式,如上所述

Bocha搜索引擎

  • search
    • 执行网络搜索,支持时间范围过滤和详细摘要
    • 输入参数:
      • query (字符串):搜索关键词
      • count (数字,可选):结果数量(1-10,默认10)
      • page (数字,可选):页数,从1开始
      • freshness (字符串,可选):时间范围
        • noLimit不限时间(默认)
        • oneDay一天内
        • oneWeek一周内
        • oneMonth一个月内
        • oneYear一年内
      • summary (布尔值,可选):显示详细摘要,默认false
    • 返回内容:
      • 搜索统计信息(摘要结果数量,当前/总页数,本页结果数量)
      • 网络搜索结果(标题、URL、来源、摘要、发布时间)
      • 相关图片信息(大小、来源、URL)