Search MCP Server

Un servidor de búsqueda versátil que admite múltiples motores de búsqueda, incluyendo Brave, Metaso y Bocha.

Documentación

Search MCP Server

image

Una implementación de servicio de búsqueda basada en el protocolo MCP, que ofrece soporte para múltiples motores de búsqueda y se integra sin problemas con Cursor y Claude Desktop.

Desarrollado en Python, con soporte para procesamiento asíncrono y solicitudes de alta concurrencia. Actualmente admite tres motores de búsqueda:

  • Brave Search: un producto de servicio de interfaz de búsqueda profesional del extranjero

  • Búsqueda de Metaso: una implementación inversa de la interfaz de Metaso AI Search, no es una interfaz oficial

  • Búsqueda de Bocha: el producto de API de búsqueda con mayor participación en el mercado nacional de Search API

Para más conocimientos sobre MCP, consulta AI全书 ( 一文看懂什么是MCP(大模型上下文)?用来干什么的?怎么用它?)

Autor: 凌封 (WeChat: fengin)

Sitio web: https://aibook.ren (AI全书)

Ejemplo de uso

image

Características

  • Soporte para múltiples motores de búsqueda:
    • Brave Search: proporciona búsqueda web y búsqueda de ubicaciones
    • Búsqueda de Metaso: proporciona búsqueda web y búsqueda académica, con modos conciso y profundo
    • Búsqueda de Bocha: proporciona búsqueda web, con filtro por rango de tiempo, resúmenes detallados y búsqueda de imágenes
  • Escenarios de uso: integración perfecta con Claude Desktop o Cursor, ampliando enormemente la capacidad de obtención de contenido de las herramientas
  • Diseño modular: cada motor de búsqueda es un módulo independiente, que también puede copiarse por separado para usarse en otros lugares

Elección entre los tres motores de búsqueda

Solo un motor de búsqueda puede estar activo en tiempo de ejecución. Para facilitar la elección de cuál configurar, he elaborado una comparación aproximada:

Motor de búsquedaNacional/InternacionalRequiere VPNResumen integradoCalidadGratuitoOficialVelocidadBarrera de registro
BraveInternacionalNoAltaSí (limitado)MediaMuy alta
MetasoNacionalNoMediaNoLenta (resumen IA)Baja
BochaNacionalNoNoAltaNoMuy rápidaBaja

Instalación y uso

1. Requisitos del entorno

  • Python 3.10+
  • uv 0.24.0+
  • node.js v20.15.0
  • cursor >=0.45.10 (por debajo de esta versión, la configuración del servidor MCP no conecta correctamente)
  • Acceso a Internet internacional (solo necesario si usas Brave Search)

1.1 Instalar el controlador del navegador (solo necesario para Metaso)

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

2. Descargar el código

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

3. Activar el motor de búsqueda que desees

Abre el directorio raíz del proyecto y modifica el siguiente código en server.py para seleccionar el tipo a activar:

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

Los valores corresponden a brave, metaso y bocha respectivamente. También puedes configurarlo mediante la variable de entorno SEARCH_ENGIN.

4. Configurar el módulo de búsqueda correspondiente

Cada uno de los siguientes tres directorios de módulos contiene un archivo config.py:

  • src\search\proxy\brave

  • src\search\proxy\metaso

  • src\search\proxy\bocha

Según tu elección, modifica el archivo config.py correspondiente.

4.1 Configuración de Brave Search

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

Si lo usas en Claude Desktop, también puedes configurarlo pasando este parámetro mediante variables de entorno en Claude Desktop, pero Cursor actualmente no admite variables de entorno, por lo que solo puedes modificarlo en este archivo.

Dirección para solicitar la API KEY: Brave Search - API

La barrera de solicitud es bastante alta, se requiere:

  • VPN (también necesaria para su uso)

  • Verificación de correo electrónico

  • Tarjeta de crédito (puede ser virtual: https://cardgenerator.org/)

4.2 Configuración de 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"

De igual manera, en Claude Desktop puedes configurarlo mediante variables de entorno en la configuración de MCP Servers.

Cómo obtener uid y sid:

Entra en Metaso AI Search, inicia sesión con tu cuenta (se recomienda iniciar sesión, de lo contrario podrías encontrar restricciones extrañas), luego abre las herramientas de desarrollador con F12 y busca los valores de uid y sid en Application > Cookies.

获取uid-sid

Integración de múltiples cuentas

Nota: actualmente se sospecha que Metaso limita el número total de búsquedas por dirección IP, se recomienda añadir rotación de IP

Puedes proporcionar múltiples pares uid-sid y usar , para modificar el código de uso correspondiente; cada solicitud al servicio seleccionará uno de ellos. Consideraré esto más adelante.

4.3 Configuración de Bocha

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

Dirección de registro y solicitud: https://open.bochaai.com/

El cobro es por número de llamadas y no es barato, pero la calidad de búsqueda es realmente buena. Tengo algunos códigos de prueba gratuitos en cantidad limitada; si los necesitas, contáctame por WeChat.

5. Configuración de herramientas de IA

5.1 Configuración en Cursor

Cursor配置

  • name: search

  • type: cmd

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

Donde "D:\code\search-server" es el directorio donde descargaste el código fuente.

5.2 Configuración en Claude Desktop

Busca el archivo de configuración.

Método uno

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

Método dos

Abre la aplicación Claude Desktop y navega a: Claude Desktop—>Menú—>Settings—>Developer—>Edit Config

Edita y añade el siguiente MCP Server:

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

Las variables de entorno dependen de tus necesidades; si modificaste el código, no es necesario configurarlas.

Cursor mostrará una ventana negra; no la cierres, no la cierres, es el proceso del servidor MCP que se inicia. Actualmente no hay forma de evitar que aparezca.

Después de configurar Claude Desktop, asegúrate de reiniciar la aplicación para que los cambios surtan efecto.

5.4 Solución de problemas

Después de configurar Cursor, muchos usuarios encuentran que en MCP Servers, aunque la configuración esté completa, el estado sigue mostrando un punto rojo, aparece "Tools Not Found" y no se invoca al usarlo. Esto se debe a que la configuración no se realizó correctamente.

Los casos más comunes son:

  1. El entorno no está preparado, incluidos los requisitos de software y versiones; consulta la sección de entorno.

  2. El entorno preparado no es el correcto. Por ejemplo, en Windows existen el terminal cmd, el terminal powershell y posiblemente gitbash. Abre el terminal cmd (Cursor generalmente usa este) y verifica el entorno ejecutando directamente: uv --directory D:\code\search-server run search

  3. La ruta/comando de configuración es incorrecta. Puedes abrir el terminal y ejecutar el comando para verificar: uv --directory D:\code\search-server run search

  4. Cerraste la ventana negra; para volver a abrirla necesitas reiniciar Cursor.

  5. La versión de Cursor es demasiado antigua.

  6. Si al ejecutar aparece el siguiente error, la causa es que no se instaló chromium; la solución está en la sección 1.1 de preparación del entorno.

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

6. Uso

En tu Claude Desktop o Cursor, simplemente trabaja con normalidad; cuando sea necesario, invocará automáticamente la interfaz de búsqueda para obtener contenido. Por ejemplo, si pides que organice las tendencias de desarrollo tecnológico en la red para 2025 como contenido de software, invocará la herramienta de búsqueda para obtener información de la red:

  • Una vez configurada la herramienta, su información indicará que esta herramienta está disponible.

  • Según tu solicitud, analizará automáticamente si necesita usar la herramienta de búsqueda.

  • Según la necesidad, extraerá palabras clave e invocará la herramienta de búsqueda.

  • Según el contenido devuelto por la búsqueda, organizará el resultado que deseas.

Un punto a tener en cuenta: en Cursor, debes activar el modo agent de composer para que funcione; al invocar la herramienta, también debes hacer clic en ejecutar.

Detalles técnicos

Estructura del proyecto

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工具实现

Parámetros de la interfaz

Motor de búsqueda Brave Search

  • search

    • Realiza búsqueda web, con soporte de paginación y filtros
    • Parámetros de entrada:
      • query (string): palabra clave de búsqueda
      • count (number, opcional): número de resultados por página (máximo 20)
      • offset (number, opcional): desplazamiento de paginación (máximo 9)
  • location_search

    • Busca información relacionada con ubicaciones geográficas (comercios, restaurantes, etc.)
    • Parámetros de entrada:
      • query (string): palabra clave de búsqueda de ubicación
      • count (number, opcional): número de resultados (máximo 20)
    • Si no hay resultados relevantes, cambia automáticamente a búsqueda web

Motor de búsqueda Metaso

  • search

    • Realiza búsqueda web, con soporte de múltiples modos
    • Parámetros de entrada:
      • query (string): palabra clave de búsqueda
      • mode (string, opcional): modo de búsqueda
        • concise: modo conciso, respuestas breves y precisas
        • detail: modo profundo, respuestas detalladas y completas (predeterminado)
        • research: modo investigación, respuestas con análisis profundo (actualmente no compatible, la ingeniería inversa no tuvo éxito)
  • scholar_search

    • Realiza búsqueda académica, especializada en encontrar recursos académicos
    • Parámetros de entrada:
      • query (string): palabra clave de búsqueda académica
      • mode (string, opcional): modo de búsqueda, igual que el anterior

Motor de búsqueda Bocha

  • search
    • Realiza búsqueda web, con soporte de filtro por rango de tiempo y resúmenes detallados
    • Parámetros de entrada:
      • query (string): palabra clave de búsqueda
      • count (number, opcional): número de resultados (1-10, predeterminado 10)
      • page (number, opcional): número de página, comenzando desde 1
      • freshness (string, opcional): rango de tiempo
        • noLimit: sin límite de tiempo (predeterminado)
        • oneDay: dentro de un día
        • oneWeek: dentro de una semana
        • oneMonth: dentro de un mes
        • oneYear: dentro de un año
      • summary (boolean, opcional): si mostrar resumen detallado, predeterminado false
    • Contenido devuelto:
      • Estadísticas de búsqueda (número total de resultados, página actual/total, resultados en esta página)
      • Resultados de búsqueda web (título, URL, fuente, resumen, fecha de publicación)
      • Información de imágenes relacionadas (dimensiones, fuente, URL)