Labsco
Vaishnavi-2506 logo

Eloa - AI Content Curator

from Vaishnavi-2506

All your RSS feeds aggregated in one place. Eloa highlights what's new, shows the source, and how long ago it was published. Filter by read and unread.

๐Ÿ”ฅ๐Ÿ”ฅFreeQuick setup

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

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