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.
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
- Clona el repositorio:
git clone https://github.com/yourusername/serpapi-mcp-server.git
cd serpapi-mcp-server
- 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
- Crea un archivo
.enven la raíz del proyecto basado en el.env.exampleproporcionado:
cp .env.example .env
- Edita el archivo
.envy agrega tu clave de API de SerpAPI:
SERPAPI_API_KEY=your_api_key_here
Inicio rápido
-
Guarda el código del servidor: Coloca el código del servidor en un archivo, por ejemplo, server.py.
-
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
- Ejecuta el servidor: Inicia el servidor con:
python src/serpapi_google_search.py # Or any other server file
- Integra con un cliente MCP: Conecta el servidor a un cliente o host MCP (por ejemplo, Claude for Desktop).
Uso con Claude for Desktop
- 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"
}
}
}
}
-
Asegúrate de que tu clave de SerpAPI esté configurada en el archivo
.enven el directorio raíz del proyecto. -
Reinicia Claude for Desktop para cargar la nueva configuración.
-
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úsquedanum: Número de resultados (1-100)start: Desplazamiento de resultados para paginación (indexación basada en 1)location: Ubicación desde la que buscargl: 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 exactamenteinclude_domains: Lista de dominios para incluir en los resultados de búsquedaexclude_domains: Lista de dominios para excluir de los resultados de búsquedaraw_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úsquedagl: 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íficatopic_token: Buscar dentro de un tema específicostory_token: Obtener cobertura completa de una historia específicasection_token: Buscar dentro de una sección específicaso: 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úsquedahl: 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ónnum: Número de resultados (1-20)cites: ID para búsquedas de citasas_ylo: Año de inicio para el rango de tiempoas_yhi: Año de fin para el rango de tiemposcisbd: Ordenar por fecha (0 para relevancia, 1 para resúmenes, 2 para todo)cluster: ID para búsquedas de todas las versionesas_sdt: Tipo de búsqueda o filtrosafe: 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 minutosdata_type: Tipo de búsqueda (por ejemplo, 'TIMESERIES', 'GEO_MAP')cat: ID de categoríagprop: 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 futuroshl: 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úsquedatype: Tipo de búsqueda ('search' o 'place')place_id: Referencia única a un lugar en Google Mapsdata: Filtrar resultados de búsqueda o buscar un lugar específicoll: 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úsquedalocation: Ubicación desde la que buscaruule: 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 sugeridatbs: Parámetros de búsqueda avanzadaimgar: 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úsquedagl: 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 YouTubegl: 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 respuestasraw_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 YouTubewith_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 edadproxy: Proxy HTTPS para usar en la solicitudraw_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