Google Search

Un servidor MCP (Model Context Protocol) que proporciona a los asistentes de IA la capacidad de obtener noticias en tiempo real, realizar búsquedas, análisis de PLN y preferencias de noticias personalizadas, todo accesible mediante lenguaje natural.

Documentación

News Hub MCP

Un servidor MCP (Protocolo de Contexto del Modelo) que brinda a los asistentes de IA la obtención de noticias en tiempo real, búsqueda, análisis de PLN y preferencias de noticias personalizadas, todo accesible mediante lenguaje natural.

Funciona con VS Code Copilot, Claude Desktop, Cursor, Windsurf y cualquier otro cliente de IA compatible con MCP.


Qué Hace

Pregúntale a tu asistente de IA cosas como:

  • "¿Qué está pasando en el mundo hoy?" → obtiene, extrae y resume las noticias principales
  • "¿Cómo están cubriendo diferentes medios la decisión de la tasa de la Fed?" → comparación de fuentes lado a lado
  • "Busca noticias sobre Tesla y analiza el sentimiento" → encadenamiento de herramientas entre búsqueda + PLN
  • "Configura mis preferencias para noticias de tecnología de India" → se guardan y se aplican a todas las solicitudes futuras

Requisitos Previos

  • Node.js 18 o superior
  • Una cuenta gratuita de RapidAPI con la API de Datos de Noticias en Tiempo Real suscrita
    • Regístrate en rapidapi.com
    • Busca "Real-Time News Data" y suscríbete al plan gratuito (150 solicitudes/mes)
    • Copia tu x-rapidapi-key desde la pestaña de Endpoints

Instalación

git clone https://github.com/your-username/news-hub-mcp.git
cd news-hub-mcp
npm install
npm run setup

npm run setup es un asistente interactivo que:

  • Guarda tu clave de RapidAPI en .env y .vscode/mcp.json
  • Pregunta por tus temas, país e idioma preferidos
  • Almacena las preferencias en ~/.news-hub-mcp/preferences.json

Configuración del Cliente MCP

VS Code Copilot

Agrega a .vscode/mcp.json en tu espacio de trabajo (creado automáticamente por npm run setup):

{
  "servers": {
    "news-hub-mcp": {
      "type": "stdio",
      "command": "node",
      "args": ["server/index.js"],
      "cwd": "/absolute/path/to/news-hub-mcp",
      "env": {
        "RAPIDAPI_KEY": "your_key_here"
      }
    }
  }
}

Claude Desktop

Agrega a ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "news-hub-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/news-hub-mcp/server/index.js"],
      "env": {
        "RAPIDAPI_KEY": "your_key_here"
      }
    }
  }
}

Herramientas Disponibles

HerramientaDescripción
get_news_digestHerramienta principal. Obtiene, extrae y resume noticias en una sola llamada. Úsala para cualquier pregunta general de noticias.
get_latest_newsDevuelve metadatos de artículos sin procesar (títulos, URLs, fuentes). Úsala cuando el usuario quiera una lista de enlaces.
search_newsBusca artículos por palabra clave o frase. Úsala para nombres, eventos o temas específicos.
compare_news_sourcesObtiene el mismo tema de 3 fuentes y devuelve un resumen lado a lado de cada una.
analyze_sentimentPuntúa el texto como positivo, negativo o neutral usando la puntuación AFINN.
extract_entitiesExtrae personas, organizaciones y temas del texto.
get_my_preferencesDevuelve tus preferencias de noticias guardadas actualmente.
set_my_preferencesActualiza tus preferencias (temas, país, idioma). Los cambios se aplican de inmediato.

Encadenamiento de Herramientas

El cliente de IA puede llamar herramientas en secuencia. Ejemplos de cadenas:

Análisis de sentimiento en noticias:

"Dame noticias de IA y analiza el sentimiento general"

  1. get_latest_news (tema: IA) → devuelve descripciones de artículos
  2. analyze_sentiment (texto: descripciones combinadas) → devuelve la puntuación

Extracción de entidades desde la búsqueda:

"Busca noticias sobre Tesla y extrae personas y organizaciones clave"

  1. search_news (consulta: Tesla) → devuelve artículos
  2. extract_entities (texto: descripciones combinadas) → devuelve entidades

Preferencias del Usuario

Las preferencias se almacenan en ~/.news-hub-mcp/preferences.json y persisten entre sesiones.

Para configurar mediante el asistente:

npm run setup

Para configurar mediante IA:

"Configura mis preferencias de noticias a tecnología y ciencia, país EE. UU., idioma inglés"

Campos de preferencias:

CampoDescripciónEjemplo
topicsTemas preferidos, aplicados automáticamente cuando no se da un tema["technology", "science"]
countryCódigo de país ISO 3166-1 alfa-2"US", "GB", "IN"
languageCódigo de idioma ISO 639-1"en", "fr", "de"

Desarrollo

npm start        # Run the server
npm run dev      # Run with hot reload (nodemon)
npm run setup    # Re-run the setup wizard

Arquitectura

AI Client (Copilot / Claude Desktop / Cursor)
        │
        │  MCP Protocol over stdio
        ▼
server/index.js          ← Entry point: validates env, registers tools, routes requests
        │
        ├── server/tools/          ← One file per MCP tool
        │   ├── getNewsDigest.js       Primary: fetch + scrape + summarize
        │   ├── getLatestNews.js       Raw article list
        │   ├── searchNews.js          Keyword search
        │   ├── compareNewsSources.js  Multi-source comparison
        │   ├── analyzeSentiment.js    NLP sentiment
        │   ├── extractEntities.js     NLP entity extraction
        │   ├── getMyPreferences.js    Read preferences
        │   └── setMyPreferences.js    Write preferences
        │
        └── server/services/       ← Reusable modules (no MCP coupling)
            ├── newsService.js         RapidAPI HTTP calls + response normalization
            ├── nlpService.js          sentiment + compromise NLP libraries
            ├── scraper.js             axios + cheerio article scraping
            └── preferencesService.js  ~/.news-hub-mcp/preferences.json read/write

Licencia

MIT