SerpApi

Proporciona capacidades de búsqueda y recuperación de datos desde SerpAPI y YouTube para asistentes de IA.

Documentación

Servidor MCP de SerpApi - Python

Una colección de servidores del Protocolo de Contexto de Modelo (MCP) que se integran con SerpAPI y YouTube para proporcionar capacidades de búsqueda y recuperación de datos para asistentes de IA.

License: MIT

Descripción general

Este proyecto proporciona varios servidores MCP que permiten a asistentes de IA como Claude realizar diversas operaciones de búsqueda y recuperar datos de:

  • Google Search
  • Google News
  • Google Scholar
  • Google Trends
  • Google Finance
  • Google Maps
  • Google Images
  • YouTube Search
  • YouTube Transcripts

Cada servidor está diseñado para funcionar con el Protocolo de Contexto de Modelo (MCP), lo que facilita la integración con asistentes de IA que admiten este protocolo, como Claude for Desktop o Grok.

Características

  • Google Search (serpapi_google_search.py)
  • Google News (serpapi_google_news.py)
  • Google Scholar (serpapi_google_scholar.py)
  • Google Trends (serpapi_google_trend.py)
  • Google Finance (serpapi_google_finance.py)
  • Google Maps (serpapi_google_maps.py)
  • Google Images (serpapi_google_images.py)
  • YouTube Search (serpapi_youtube_search.py)
  • YouTube Transcript (youtube_transcript.py)

Instalación

Requisitos previos

  • Python 3.8 o superior
  • Una clave de API de SerpAPI (obtén una en serpapi.com)

Configuración

  1. Clona el repositorio:
git clone https://github.com/yourusername/serpapi-mcp-server.git
cd serpapi-mcp-server
  1. Crea un entorno virtual e instala las dependencias:
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
pip install -r requirements.txt
  1. Crea un archivo .env en la raíz del proyecto basado en el .env.example proporcionado:
cp .env.example .env
  1. Edita el archivo .env y agrega tu clave de API de SerpAPI:
SERPAPI_API_KEY=your_api_key_here

Inicio rápido

  1. Guarda el código del servidor: Coloca el código del servidor en un archivo, por ejemplo, server.py.

  2. Configura la clave de API: Crea un archivo .env en el mismo directorio con tu clave de API de SerpApi:

SERPAPI_API_KEY=your_api_key_here
  1. Ejecuta el servidor: Inicia el servidor con:
python src/serpapi_google_search.py  # Or any other server file
  1. Integra con un cliente MCP: Conecta el servidor a un cliente o host MCP (por ejemplo, Claude for Desktop).

Uso con Claude for Desktop

  1. Configura Claude for Desktop para usar estos servidores MCP agregándolos a tu archivo claude_desktop_config.json:
{
  "mcpServers": {
    "serpapi-google-search": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_google_search.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "serpapi-youtube-search": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_youtube_search.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "serpapi-google-news": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_google_news.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "serpapi-google-trend": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_google_trend.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "serpapi-google-scholar": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_google_scholar.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "serpapi-google-finance": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_google_finance.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "serpapi-google-maps": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_google_maps.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "serpapi-google-images": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/serpapi_google_images.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    },
    "youtube-transcript": {
      "type": "stdio",
      "command": "path/to/python",
      "args": [
        "path/to/serpapi-mcp-server/src/youtube_transcript.py"
      ],
      "env": {
        "PYTHONPATH": "path/to/site-packages"
      }
    }
  }
}
  1. Asegúrate de que tu clave de SerpAPI esté configurada en el archivo .env en el directorio raíz del proyecto.

  2. Reinicia Claude for Desktop para cargar la nueva configuración.

  3. Ahora puedes usar estas capacidades de búsqueda directamente en tus conversaciones con Claude.

Consultas de ejemplo

Aquí hay algunos ejemplos de cómo usar estos servidores con Claude Desktop:

Google Search

Please search for "climate change solutions" and summarize the top results.

Google News

Find the latest news about artificial intelligence.

Google Scholar

Find recent academic papers on quantum computing.

Google Trends

What are the trending topics in technology right now?

Google Finance

Look up the current stock price and financial information for Apple (AAPL).

Google Maps

Find coffee shops near Central Park, New York.

Google Images

Search for images of "northern lights" and describe what you see.

YouTube Search

Search for tutorial videos on Python programming.

YouTube Transcript

Get the transcript of this YouTube video: https://www.youtube.com/watch?v=dQw4w9WgXcQ

Parámetros de la API

Cada servidor admite varios parámetros para ajustar tus búsquedas. Aquí están todos los parámetros para cada uno:

Google Search

  • q: Consulta de búsqueda
  • num: Número de resultados (1-100)
  • start: Desplazamiento de resultados para paginación (indexación basada en 1)
  • location: Ubicación desde la que buscar
  • gl: Código de país para la búsqueda de Google (por ejemplo, 'us', 'uk')
  • hl: Código de idioma (por ejemplo, 'en', 'es')
  • device: Tipo de dispositivo ('desktop', 'mobile', 'tablet')
  • safe: Configuración de búsqueda segura ('active', 'off')
  • filter: Filtrar contenido duplicado ('0' para desactivado, '1' para activado)
  • time_period: Filtrar por actualidad (por ejemplo, 'd' para el último día)
  • exactTerms: Palabras o frases que deben aparecer exactamente
  • include_domains: Lista de dominios para incluir en los resultados de búsqueda
  • exclude_domains: Lista de dominios para excluir de los resultados de búsqueda
  • raw_json: Devolver respuesta JSON cruda completa (booleano)
  • readable_json: Devolver resultados en texto con formato markdown (booleano)

Documentación completa de parámetros de la API de Google Search

Google News

  • q: Consulta de búsqueda
  • gl: Código de país (por ejemplo, 'us', 'uk')
  • hl: Código de idioma (por ejemplo, 'en', 'es')
  • publication_token: Buscar dentro de una publicación específica
  • topic_token: Buscar dentro de un tema específico
  • story_token: Obtener cobertura completa de una historia específica
  • section_token: Buscar dentro de una sección específica
  • so: Método de ordenación ('0' para relevancia, '1' para fecha)
  • raw_json: Devolver respuesta JSON cruda completa (booleano)
  • readable_json: Devolver resultados en texto con formato markdown (booleano)

Documentación completa de parámetros de la API de Google News

Google Scholar

  • q: Consulta de búsqueda
  • hl: Código de idioma (por ejemplo, 'en', 'es')
  • lr: Restricción de idioma (por ejemplo, 'lang_fr|lang_de')
  • start: Desplazamiento de resultados para paginación
  • num: Número de resultados (1-20)
  • cites: ID para búsquedas de citas
  • as_ylo: Año de inicio para el rango de tiempo
  • as_yhi: Año de fin para el rango de tiempo
  • scisbd: Ordenar por fecha (0 para relevancia, 1 para resúmenes, 2 para todo)
  • cluster: ID para búsquedas de todas las versiones
  • as_sdt: Tipo de búsqueda o filtro
  • safe: Configuración de búsqueda segura ('active', 'off')
  • filter: Filtro para resultados similares/omitidos ('0' para desactivado, '1' para activado)
  • as_vis: Incluir citas ('0' para incluir, '1' para excluir)
  • as_rr: Mostrar solo artículos de revisión ('0' para todos, '1' solo revisiones)
  • raw_json: Devolver respuesta JSON cruda completa (booleano)
  • readable_json: Devolver resultados en texto con formato markdown (booleano)

Documentación completa de parámetros de la API de Google Scholar

Google Trends

  • q: Consulta de búsqueda (pueden ser múltiples consultas separadas por comas)
  • geo: Ubicación geográfica (por ejemplo, 'US', 'GB')
  • date: Rango de tiempo (por ejemplo, 'now 1-d', 'now 7-d', 'today 12-m')
  • tz: Desplazamiento de zona horaria en minutos
  • data_type: Tipo de búsqueda (por ejemplo, 'TIMESERIES', 'GEO_MAP')
  • cat: ID de categoría
  • gprop: Filtro de propiedad (por ejemplo, 'web', 'news', 'images')
  • raw_json: Devolver respuesta JSON cruda completa (booleano)
  • readable_json: Devolver resultados en texto con formato markdown (booleano)

Documentación completa de parámetros de la API de Google Trends

Google Finance

  • q: Consulta de búsqueda para una acción, índice, fondo mutuo, moneda o futuros
  • hl: Código de idioma (por ejemplo, 'en', 'es')
  • window: Rango de tiempo para el gráfico (por ejemplo, '1D', '5D', '1M', '6M', 'YTD', '1Y', '5Y', 'MAX')
  • raw_json: Devolver respuesta JSON cruda completa (booleano)
  • readable_json: Devolver resultados en texto con formato markdown (booleano)

Documentación completa de parámetros de la API de Google Finance

Google Maps

  • q: Consulta de búsqueda
  • type: Tipo de búsqueda ('search' o 'place')
  • place_id: Referencia única a un lugar en Google Maps
  • data: Filtrar resultados de búsqueda o buscar un lugar específico
  • ll: Coordenadas GPS en formato '@latitud,longitud,zoom'
  • google_domain: Dominio de Google a usar (por defecto google.com)
  • hl: Código de idioma (por ejemplo, 'en', 'es')
  • gl: Código de país (por ejemplo, 'us', 'uk')
  • start: Desplazamiento de resultados para paginación (entero)
  • raw_json: Devolver respuesta JSON cruda completa (booleano)
  • readable_json: Devolver resultados en texto con formato markdown (booleano)

Documentación completa de parámetros de la API de Google Maps

Google Images

  • q: Consulta de búsqueda
  • location: Ubicación desde la que buscar
  • uule: Ubicación codificada de Google (no se puede usar con ubicación)
  • google_domain: Dominio de Google a usar (por defecto google.com)
  • hl: Código de idioma (por ejemplo, 'en', 'es')
  • gl: Código de país (por ejemplo, 'us', 'uk')
  • cr: Restricción de país (por ejemplo, 'countryUS')
  • device: Tipo de dispositivo ('desktop', 'tablet', 'mobile')
  • ijn: Número de página (índice basado en cero)
  • chips: Cadena de filtro proporcionada por Google como búsqueda sugerida
  • tbs: Parámetros de búsqueda avanzada
  • imgar: Relación de aspecto de las imágenes ('s' - Cuadrada, 't' - Alta, 'w' - Ancha, 'xw' - Panorámica)
  • imgsz: Tamaño de las imágenes ('l' - Grande, 'm' - Mediana, 'i' - Icono, etc.)
  • image_color: Color de las imágenes ('red', 'blue', 'green', 'black', 'white', etc.)
  • image_type: Tipo de imágenes ('face', 'photo', 'clipart', 'lineart', 'animated')
  • licenses: Alcance de licencias ('f' - Uso gratuito, 'fc' - Uso comercial gratuito, etc.)
  • safe: Configuración de búsqueda segura ('active', 'off')
  • nfpr: Excluir resultados autocorregidos ('1' para excluir, '0' para incluir)
  • filter: Habilitar/deshabilitar filtros de 'Resultados similares' y 'Resultados omitidos'
  • time_period: Filtrar por actualidad (por ejemplo, 'd' para el último día)
  • raw_json: Devolver respuesta JSON cruda completa (booleano)
  • readable_json: Devolver resultados en texto con formato markdown (booleano)

Documentación completa de parámetros de la API de Google Images

YouTube Search

  • search_query: Consulta de búsqueda
  • gl: Código de país (por ejemplo, 'us', 'uk')
  • hl: Código de idioma (por ejemplo, 'en', 'es')
  • sp: Parámetros de filtro (por ejemplo, 'CAISAhAB' para videos subidos hoy)
  • raw_json: Devolver respuesta JSON cruda completa (booleano)
  • readable_json: Devolver resultados en texto con formato markdown (booleano)

Documentación completa de parámetros de la API de YouTube Search

YouTube Video

  • v: ID del video de YouTube
  • gl: Código de país (por ejemplo, 'us', 'uk')
  • hl: Código de idioma (por ejemplo, 'en', 'es')
  • next_page_token: Token para recuperar la siguiente página de videos relacionados, comentarios o respuestas
  • raw_json: Devolver respuesta JSON cruda completa (booleano)
  • readable_json: Devolver resultados en texto con formato markdown (booleano)

YouTube Transcript

  • video_url: URL o ID del video de YouTube
  • with_timestamps: Incluir marcas de tiempo en la transcripción (booleano)
  • language: Código de idioma para la transcripción (por defecto: 'en')
  • preserve_formatting: Conservar elementos de formato HTML (booleano)
  • cookies_path: Ruta al archivo cookies.txt para videos con restricción de edad
  • proxy: Proxy HTTPS para usar en la solicitud
  • raw_json: Devolver respuesta JSON cruda completa (booleano)
  • readable_json: Devolver texto formateado legible (booleano)
  • text_transcript: Devolver la transcripción como una sola cadena de texto (booleano)

Documentación de la API de YouTube Transcript

Solución de problemas

Clave de API no válida

  • Verifica la configuración de la clave de API en el archivo .env
  • Confirma que la clave de API esté activa en el panel de SerpAPI
  • Verifica si hay comillas o espacios en blanco en la clave de API

Fallos en las solicitudes

  • Verifica la conectividad de red
  • Confirma que la cuota de llamadas a la API no se haya excedido
  • Valida el formato de los parámetros de la solicitud
  • Verifica problemas de limitación de velocidad

Licencia

Este proyecto está licenciado bajo la Licencia MIT: consulta el archivo LICENSE para más detalles.

Agradecimientos

  • SerpApi por proporcionar la API de búsqueda
  • YouTube Transcript API por la recuperación de transcripciones
  • El protocolo MCP por permitir la integración con asistentes de IA

Recursos