Skip to main content
Glama
HasData

Google Trends MCP Server

Servidor MCP de Google Trends

Un servidor alojado del Model Context Protocol (MCP) que ofrece a Claude, Cursor, Windsurf y a cualquier otro cliente MCP una herramienta de Google Trends. Consulta el interés a lo largo del tiempo, el interés por región y las consultas y temas relacionados más populares o en ascenso para cualquier término, todo como JSON estructurado, sin librerías de scraping que mantener y sin cuenta de Google.

https://mcp.hasdata.com/api/mcp?apis=google_trends

Glama score tool contract MCP Tools License

Contenidos

Lo que necesitas

Un cliente MCP y una clave de API de HasData desde el panel de control, gratis de crear sin tarjeta, y la prueba cubre unas 200 llamadas a la tarifa de 5 créditos. Este es un servidor remoto, así que la vía más sencilla es una URL y una cabecera x-api-key, sin contenedor que ejecutar y sin cuenta de Google en ningún paso del proceso. Un cliente que solo hable stdio llega a él a través de un lanzador ligero, publicado como @hasdata/google-trends-mcp en npm y como hasdata-google-trends-mcp en PyPI, como se muestra a continuación.

Inicio rápido

La URL del servidor es la misma para todos los clientes. Lo hemos probado directamente con Claude Code y Claude Desktop. Los demás bloques siguen el formato documentado de cada cliente para un servidor remoto.

Campo

Valor

URL

https://mcp.hasdata.com/api/mcp?apis=google_trends

Transporte

HTTP, transmisible (streamable)

Cabecera de autenticación

x-api-key: HASDATA_API_KEY

Los clientes con soporte OAuth pueden añadir la misma URL como conector e iniciar sesión sin tener que poner una clave en un archivo de configuración.

claude mcp add --transport http google-trends "https://mcp.hasdata.com/api/mcp?apis=google_trends" \
  --header "x-api-key: HASDATA_API_KEY"

Ajustes, luego Conectores, luego Añadir conector personalizado, y pega https://mcp.hasdata.com/api/mcp?apis=google_trends e inicia sesión.

Para la vía del archivo de configuración, Claude Desktop solo carga servidores locales (stdio), así que alcanza un servidor remoto a través de un lanzador stdio. El paquete @hasdata/google-trends-mcp es ese lanzador y lee la clave del entorno. Añade esto a claude_desktop_config.json:

{
  "mcpServers": {
    "google-trends": {
      "command": "npx",
      "args": ["-y", "@hasdata/google-trends-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Para Python en lugar de Node, cambia el lanzador por el paquete de PyPI, que uvx ejecuta sin instalación manual:

{
  "mcpServers": {
    "google-trends": {
      "command": "uvx",
      "args": ["hasdata-google-trends-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

~/.cursor/mcp.json para todos los proyectos, o .cursor/mcp.json para uno solo:

{
  "mcpServers": {
    "google-trends": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_trends",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

~/.codeium/windsurf/mcp_config.json. Windsurf llama al campo serverUrl, no url:

{
  "mcpServers": {
    "google-trends": {
      "serverUrl": "https://mcp.hasdata.com/api/mcp?apis=google_trends",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

.vscode/mcp.json dentro del área de trabajo:

{
  "servers": {
    "google-trends": {
      "type": "http",
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_trends",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Ejemplos de prompts

Prompts, no código. Pega uno y el agente elige la herramienta por sí mismo. Cada uno viene anotado con las llamadas que requiere porque cada llamada correcta cuesta 5 créditos.

Haz un gráfico del interés por "cold brew coffee" en EE. UU. durante los últimos 12 meses y dime en qué semanas alcanzó su máximo.

Una llamada, 5 créditos. La serie semanal llega en una sola petición.

Para "cold brew coffee" en EE. UU., dame las consultas relacionadas en ascenso y señala las marcadas como Breakout.

Una llamada, 5 créditos.

Compara el interés por "cold brew" con el de "iced coffee" en todo el mundo durante cinco años y di cuál está creciendo.

Una llamada, 5 créditos. La herramienta admite varios términos en una única petición de serie temporal.

Muéstrame el interés por "sunscreen" por estado de EE. UU. en los últimos 90 días para poder ver dónde hay más demanda.

Una llamada, 5 créditos. Es la vista de interés por región a nivel de estado.

Una comparación entre términos cabe en una sola llamada de timeseries. Los desgloses por región, las consultas relacionadas y los temas relacionados son cada uno un dataType propio, así que un prompt que quiera un gráfico más sus consultas en ascenso supone dos llamadas.

Herramientas

Una herramienta, de solo lectura. La muestra siguiente está recortada de una llamada real, y los números cambian a medida que cambia la tendencia. L puedes leer como una forma. El nombre de la herramienta enlaza con la referencia de su endpoint, que incluye la lista de parámetros completa.

La muestra es la carga útil, no la respuesta completa. Un resultado de tools/call lleva un bloque de texto, y ese texto es a su vez JSON que contiene url, status, text y json, con los datos extraídos en json. Desde una respuesta JSON-RPC en bruto, la ruta es result.content[0].text, parseada y luego .json. Un cliente de chat hace el desenvuelto por ti; el código que habla directamente con el endpoint no lo hace.

hasdata_google_trends_search_getTrendsData

Interés a lo largo del tiempo, por región, o las consultas y temas em relacionados para un término.

Parámetro

Tipo

Obligatorio

Notas

q

string

El término de búsqueda. timeseries y geoMap aceptan hasta 5 términos separados por comas, y un sexto se rechaza con un 400.

dataType

string

no

timeseries por defecto, además de geoMap, relatedTopics y relatedQueries. Los dos tipos relacionados solo acceptan un solo término.

date

string

no

Una ventana como now 7-d, today 12-m, today 5-y o all, o un rango personalizado aaaa-mm-dd aaaa-mm-dd

geo

string

no

Un código de ubicación como US o US-CA. Mundial cuando está vacío.

region

string

no

Granularidad solo parageoMap: country, region (subregión), dma (área metropolitana) o city. El valor por defecto depende de geo, country en todo el mundo y más detallado una vez que se fija un geo

cat

string

no

Identificador de categoría para acotar el término. 0 es todas las categorías.

gprop

string

no

Propiedad de Google: images, news, froogle (shopping) o youtube. Búsqueda en la web cuando está vacío.

tz

number

no

Desfase de zona horaria en minutos, por defecto 420 (PDT). Cambia cómo se agrupan los rangos por horas.

La clave de respuesta depende de dataType. timeseries devuelve interestOverTime.timelineData, geoMap devuelve el interés por región, y los tipos relacionados devuelven relatedQueries o relatedTopics, cada uno dividido en rising y top. Lee la clave que coincida con el tipo que pediste.

timeseries (el valor por defecto) devuelve un valor de 0 a 100 para cada punto, tanto en array de string y preprocesado en listlineData.extractedValue. El punto más reciente suele llevar un isPartial: true cuando la semana aún se está completando. Descártalo antes de calcular una tendencia, o la última barra se leerá como una caída que no es real.

{
  "interestOverTime": {
    "timelineData": [
      { "date": "Apr 12 – 18, 2026", "timestamp": "1775952000", "isPartial": false,
        "values": [{ "query": "cold brew coffee", "value": "100", "extractedValue": 100, "hasData": true }] },
      { "date": "Aug 23 – 29, 2026", "timestamp": "1787443200", "isPartial": true,
        "values": [{ "query": "cold brew coffee", "value": "44", "extractedValue": 44, "hasData": true }] }
    ]
  }
}

relatedQueries se divide en rising y top. Una entrada rising se lee como un porcentaje tipo +300%, o como Breakout para un salto demasiado grande como para puntuarlo. extractedValue da el número subyacente. Un Breakout viene con un extractedValue marcador muy por encima de cualquier porcentaje previo, así que ordena por la etiqueta del string, no por el número bruto.

{
  "relatedQueries": {
    "rising": [
      { "query": "organic cold brew coffee", "value": "+300%", "extractedValue": 300, "link": "https://trends.google.com/trends/explore?q=organic+cold+brew+coffee&date=today+12-m&geo=US" }
    ],
    "top": [
      { "query": "how to cold brew coffee", "value": "100", "extractedValue": 100, "link": "https://trends.google.com/trends/explore?q=how+to+cold+brew+coffee&date=today+12-m&geo=US" }
    ]
  }
}

La referencia del endpoint lista cada geo, cat y formato de fecha aceptado por la herramienta.

Errores y vías de fallo

Tu cliente redirección. Casi nunca verás un código de error HTTP en una llamada de herramienta. La capa MCP responde con 200 y pone el error dentro del resultado, con isError establecido a true y la razón como texto. El agente lee un mensaje donde esperabas una línea de estado.

Una clave incorrecta aparece como salida de herramienta, no como conexión fallida. tools/list acepta cualquier clave no vacía y devuelve la herramienta, así que el cliente completa el apretón y muestra todo en verde. La primera llamada a la herramienta vuelve con isError: true y el texto HasData API error: 401 Unauthorized. Atento a ese string, porque nada antes en el flujo informa del problema.

Una clave que falta es el único error HTTP real. La autorización se ejecuta antes que cualquier herramienta y la conexión en sí falla con 401. Las cabeceras CORS están presentes y un cliente de navegador leerá el estado y no un fallo de red opaco.

Un argumento que rompe el esquema de la herramienta se rechaza antes de llegar a ser un scraping. El servidor responde con isError: true y el texto MCP error -32602: Input validation error, nombrando el campo infractor. No se busca un resultado en la red y no se cobra nada.

Una búsqueda con muy poco volumen devuelve un resultado correcto con los array de datos vacíos, no un error. Google Trends no tiene nada que mostrar para un término raro, y requestMetadata.status sigue diciendo ok. Comprueba que hay puntos antes de graficarlos.

Un identificador que la plataforma rechaza devuelve 400 con requestMetadata.status puesto a error. Un valor de geo o cat desconocido es la forma típica de verlo.

Los resultados que contienen datos también contienen un requestMetadata.id que conviene citar en el soporte.

Precios, límites y límites

Cada llamada a Google Trends cuesta 5 créditos por llamada correcta. El tamaño de la respuesta no cambia el precio. Una serie semanal de cinco años cuesta lo mismo que una sola semana.

La prueba gratuita es de 1.000 créditos durante 30 días sin tarjeta, lo que equivale a 200 llamadas a Google Trends. Después, una cuenta activa sigue recibiendo 100 créditos de recarga cada día cuando su saldo baja de 100, así que un agente de bajo volumen funciona de forma indefinida con el nivel gratuito.

Los planes de pago empiezan en 49 dólares al mes por 200.000 créditos, es decir, 40.000 llamadas. El precio unitario baja con el volumen, desde $1.00 por cada 1.000 llamadas en el plan de entrada hasta $0.50 en Business, $0.42 en Growth y $0.37 en los planes de gran volumen.

Tu plan LL fija también la concurrencia. La prueba gratuita permite una petición a la vez; Startup, 15; Business, 30; Growth y los planes de alto volumen van de 200 a 1.500. Trata el desbordamiento de forma defensiva en cualquier proceso desatendido.

Una petición que vuelve con un estado distinto de 200 no se registra. Una llamada correcta que no encuentra datos sigue siendo una llamada.

Herramientas de selección de herramientas

El parámetro de consulta de apis decide qué herramientas ve tu agente. Menos herramientas significa menos contexto dedicado a las definiciones de herramientas y menos ocasiones de que el modelo elija la equivocada.

?apis=google_trends              the one tool in this repo
?apis=google_trends,google_serp  add Google search
?apis=google_trends,youtube      trends plus YouTube

El parámetro acepta nombres de proveedores como google_trends y nombres de API individuales. Los nombres mal escritos se ignoran. Si todos los nombres son incorrectos, la solicitid falla with 400, y el cuerpo de la respuista list casi tanto lo que no reconoció como todos los valores válidos. Si omitas el parámetro, el mismo endpoint expone las 57 herramientas de HasData.

Cómo se compara

Google no publica una API pública de Trends. Las dos rutas comunes son la librería no oficial pytrends, que aplica ingeniería inversa a los mismos endpoints internos y se rompe cando Google los cambia o aplica límites de tasas a quien la usa, y crear tu propio scraper. Este servidor hace ese trabajo detrás de un esquema estable.

pytrends / mulino hágaslo tú mismo

Este servidor

Soporte oficial

Ninguno, Google no envía ningún API de Trends

Esquema mantenido sobre los mismos datos

Límites de tasa y 429

Frequentos y tu responsabilidad

Gestionados detrás del endpoint

Output

Pandas frames o respuestas sin procesar to re-formate

JSON estructurado, valores preprocesados

Setup

Un entorno de Python y mantenerlo cuando se rompe

Una clave y una URL

Coste

Gratis, cuando funciona

De pago pasada la prueba, 5 créditos por llamada

Si ya usas pytrends con un volumen bajo y no te importa arreglarlo cuando se rompe, esa sigue siendo la opción gratuita. Este servidor es para agentes y pipelines que necesitan que los datos lleguen siempre con la misma forma.

FAQ

No. Google nunca ha lanzado una API pública de Trends. Cada opción lee los mismos endpoints internos que utiliza el sitio trends.google.com. Esta está mantenida por HasData y devuelve el resultado como JSON estructurado.

Un servidor que expone Google Trends como una herramienta a la que un cliente de IA puede llamar. El cliente envía una llamada de herramienta a través del Model Context Protocol, el servidor recupera los datos y devuelve JSON estructurado, y el modelo trabaja con el resultado. Este servidor expone una sola herramienta y se ejecuta de forma remota, por lo que el cliente se conecta a una URL y no inicia ningún proceso local.

¿Los números representan un volumen de búsqueda absoluto?

No, y tampoco el propio Google Trends. Los valores son interés relativo en una escala de 0 a 100 dentro de la consulta, la ventana y la región que pediste. Úsalo para ver la forma y comparar, no como un recuento de búsquedas.

¿Por qué el último dato es más bajo que los demás?

El bloque más reciente normalmente todavía se está completando y vuelve con isPartial: true. Ejecutelo antes de calcular una tendencia.

¿Puedo comparar varios terminos at once?

Sí, en timeseries y geoMap. Pasa los terminos separados by comas en q. Los tipos related-query y related-topic admoman un único termino.

¿Puedo usar esto junto con otras APIs de HasData?

Sí. El parámetro apis acepta una lista, y ?apis=google_trends,googles_serp le da a tu agente Trends mías la búsqueda de Google. Omite el parámetro y obtendrás todo.

Cumplimiento y datos personales

HasData solo accesses a datos certificate públicamente. The términos of a platform may restrict automatized access, and you are responsible for your own compliance.

Enlaces de HasData

Página del producto and generador de solicitadas

Google Trends API

Documentación del servidor

Documentación del servidor MCP

Las 57 herramientas en un solo servidor

HasData/hasdata-mcp

Guías para clientos

Clientes MCP e intagraciones

Todo lo demás que extraemos

Google Trends API y otras 54 más

Planes y costes de créditos

Planos y costos de créditos

Claves y accesso

Ppanel de HasData

Desarrollo

Este repositorio es configur comercialmente documentación for un servidor remoto. No hit build step nor nothing to containerize.

Las pruebas en test/ verifican el contrato de la herramienta—the part that can break without a commit here. Check that ?apis=google_trends returns exactly one tool, that it still declares its required parameter, that the name has not changed, and that the key in use is actually accepted. That last check calls the tool for real and costs 5 credits, which is the price of a canary that can fail for the right reason.

# macOS and Linux
HASDATA_API_KEY=your_key_here npm test

# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test

The same suite runs in CI on every push and once a week on a schedule, because the upstream tool list can change without anyone touching this repository. A failure means the tool list moved, the key stopped working, or the endpoint was unreachable, and the assertion message says which.

Las correcciones a la tabla de parameters y a la muestra de la resuesta son la útile contribuión, porque these son the parts that fall apart. Include the llamada that canvarias and the respuesta obtenida. The pull requests from forks run the suite without a key, and the live checks skip instead of going red.

Licencia

MIT. See LICENSE.

Install Server
-
license - not tested
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Related MCP Connectors

  • Trend data from Google, TikTok, Amazon, Reddit, YouTube, Steam, npm and more as JSON

  • Trend data from Google Trends, YouTube, TikTok, Reddit, Amazon, Wikipedia, npm, Steam and more

  • Cross-platform social media intelligence. Trend volume and growth signals. Free key at trendsmcp.ai

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HasData/google-trends-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server