Google Search

Un serveur MCP (Model Context Protocol) qui permet aux assistants IA de récupérer des actualités en temps réel, d'effectuer des recherches, des analyses en NLP, et de gérer des préférences d'actualités personnalisées — le tout accessible via le langage naturel.

Documentation

News Hub MCP

An MCP (Model Context Protocol) server that gives AI assistants real-time news fetching, search, NLP analysis, and personalized news preferences — all accessible through natural language.

Works with VS Code Copilot, Claude Desktop, Cursor, Windsurf, and any other MCP-compatible AI client.


What It Does

Ask your AI assistant things like:

  • "What's happening in the world today?" → fetches, scrapes, and summarizes top stories
  • "How are different outlets covering the Fed rate decision?" → side-by-side source comparison
  • "Search for Tesla news and analyze the sentiment" → tool chaining across search + NLP
  • "Set my preferences to technology news from India" → saved, applied to all future requests

Prerequisites

  • Node.js 18 or higher
  • A free RapidAPI account with the Real-Time News Data API subscribed
    • Sign up at rapidapi.com
    • Search for "Real-Time News Data" and subscribe to the free tier (150 req/month)
    • Copy your x-rapidapi-key from the Endpoints tab

Installation

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

npm run setup is an interactive wizard that:

  • Saves your RapidAPI key to .env and .vscode/mcp.json
  • Asks for your preferred topics, country, and language
  • Stores preferences at ~/.news-hub-mcp/preferences.json

MCP Client Configuration

VS Code Copilot

Add to .vscode/mcp.json in your workspace (created automatically by 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

Add to ~/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"
      }
    }
  }
}

Available Tools

ToolDescription
get_news_digestPrimary tool. Fetches, scrapes, and summarizes news in one call. Use for any general news question.
get_latest_newsReturns raw article metadata (titles, URLs, sources). Use when the user wants a list of links.
search_newsSearches articles by keyword or phrase. Use for specific names, events, or topics.
compare_news_sourcesFetches the same topic from 3 sources and returns a side-by-side summary of each.
analyze_sentimentScores text as positive, negative, or neutral using AFINN scoring.
extract_entitiesExtracts people, organizations, and topics from text.
get_my_preferencesReturns your currently saved news preferences.
set_my_preferencesUpdates your preferences (topics, country, language). Changes apply immediately.

Tool Chaining

The AI client can call tools in sequence. Example chains:

Sentiment analysis on news:

"Get me AI news and analyze the overall sentiment"

  1. get_latest_news (topic: AI) → returns article descriptions
  2. analyze_sentiment (text: combined descriptions) → returns score

Entity extraction from search:

"Search for Tesla news and extract key people and organizations"

  1. search_news (query: Tesla) → returns articles
  2. extract_entities (text: combined descriptions) → returns entities

User Preferences

Preferences are stored at ~/.news-hub-mcp/preferences.json and persist across sessions.

To set via wizard:

npm run setup

To set via AI:

"Set my news preferences to technology and science, country US, language English"

Preference fields:

FieldDescriptionExample
topicsPreferred topics, auto-applied when no topic given["technology", "science"]
countryISO 3166-1 alpha-2 country code"US", "GB", "IN"
languageISO 639-1 language code"en", "fr", "de"

Development

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

Architecture

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

License

MIT