NewsPulse MCP
Provides access to AWS news blogs and AI-powered article summarization using Amazon Bedrock Nova models.
Integrates DEV Community RSS feed to provide Python and developer articles.
Fetches and searches articles from the GitHub Blog feed for technology updates.
Includes InfoQ RSS feed as a source for DevOps and software engineering news.
Aggregates latest articles from the Kubernetes Blog feed.
Retrieves news from the Python Insider (Python.org) blog feed.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@NewsPulse MCP summarize the latest AWS news"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
⚡ NewsPulse MCP — AI Tech News Aggregator
Built by DD 🚀
A custom MCP (Model Context Protocol) server built from scratch using the AWS Labs FastMCP SDK. Connects to live RSS feeds and exposes them as MCP tools that Kiro, Claude Desktop, or any MCP client can discover and use. Powered by Amazon Bedrock (Nova) for article summarization.
Table of Contents
Related MCP server: NewsIQ MCP
The Problem
Developers spend time visiting multiple websites to stay updated with AWS, AI, DevOps, Python, Kubernetes, and GitHub news. This MCP server solves that by giving your AI assistant direct access to live tech news feeds.
What This Does
🔌 Custom MCP Server — 8 tools discoverable by any MCP client
📡 Live RSS Feeds — Real-time articles from 8 tech news sources
🤖 AI Summarization — Amazon Bedrock Nova summarizes articles in 3-5 sentences
🔍 Smart Search — Keyword search with relevance ranking
🔥 Trending Analysis — Identifies most-discussed technologies
🔖 Bookmarks — Save articles to local SQLite database
📋 Daily Digest — Last 24 hours grouped by category
🖥️ Web Dashboard — Visual interface at localhost:8000
Architecture
System Architecture

Process Flow — How Data Moves

The MCP server and FastAPI dashboard share a common service layer. Both consume the same RSS, search, summarization, bookmark, and digest services keeping behavior consistent regardless of interface.
Quick Start (5 Minutes)
# 1. Clone
git clone https://github.com/DD-GITH-UB/newspulse-mcp.git
cd newspulse-mcp
# 2. Install
pip install -r requirements.txt
# 3. Configure
copy .env.example .env
# 4. Run MCP Server
python -m newspulse_mcp serve
# 5. Or run the Web Dashboard
python -m newspulse_mcp dashboard
# Open http://localhost:8000Note: Summarization requires AWS credentials. All other tools (news, search, trending, bookmarks) work without any API keys.
Step-by-Step Setup
Step 1: Prerequisites
Requirement | Purpose | Required? |
Python 3.11+ | Runtime | ✅ Yes |
pip | Package manager | ✅ Yes |
AWS CLI | Bedrock credentials | ⚠️ Only for summarization |
Git | Clone repo | ✅ Yes |
Step 2: Clone the Repository
git clone https://github.com/DD-GITH-UB/newspulse-mcp.git
cd newspulse-mcpStep 3: Install Dependencies
pip install -r requirements.txtThis installs: fastmcp, fastapi, httpx, feedparser, beautifulsoup4, aiosqlite, boto3, structlog, and more.
Step 4: Create Environment File
# Windows
copy .env.example .env
# Mac/Linux
cp .env.example .envStep 5: Configure AWS (Optional — for summarization only)
aws configureEnter your:
AWS Access Key ID
AWS Secret Access Key
Default region:
us-east-1Output format:
json
Then enable the model in Amazon Bedrock Console → Request access to Amazon Nova Lite.
Step 6: Verify Everything Works
python -m newspulse_mcp --helpExpected output:
usage: newspulse-mcp [-h] [{serve,dashboard}]
NewsPulse MCP Server — Technology news aggregation via MCP protocolStep 7: Run
# MCP Server (for Kiro/Claude)
python -m newspulse_mcp serve
# Web Dashboard (for browser)
python -m newspulse_mcp dashboard
# Both simultaneously
python -m newspulse_mcpConnect to Kiro IDE
Option A: Workspace-level config
Create .kiro/settings/mcp.json in your workspace:
{
"mcpServers": {
"newspulse": {
"command": "python",
"args": ["-m", "newspulse_mcp", "serve"],
"cwd": "/path/to/newspulse-mcp"
}
}
}Option B: User-level config (global)
Edit ~/.kiro/settings/mcp.json and add newspulse to the existing mcpServers:
{
"mcpServers": {
"newspulse": {
"command": "python",
"args": ["-m", "newspulse_mcp", "serve"],
"cwd": "C:\\path\\to\\newspulse-mcp"
}
}
}Usage in Kiro
Once connected, just ask naturally:
What you say | Tool invoked |
"Show me today's AWS news" |
|
"Search for Amazon Bedrock articles" |
|
"Summarize this article: https://..." |
|
"What's trending in tech?" |
|
"Compare AWS Blog vs GitHub Blog on AI" |
|
"Bookmark that article" |
|
"Show my saved articles" |
|
"Give me today's tech digest" |
|
Connect to Claude Desktop
Edit your Claude Desktop config file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"newspulse": {
"command": "python",
"args": ["-m", "newspulse_mcp", "serve"],
"cwd": "C:\\path\\to\\newspulse-mcp"
}
}
}Restart Claude Desktop. The 8 tools will appear in the tools menu.
Web Dashboard
python -m newspulse_mcp dashboardOpen http://localhost:8000 in your browser.
Pages
Page | Description |
🏠 Home | Feature overview with quick links |
📰 Latest News | Live articles with category filter (AWS, AI, Python, etc.) |
🔍 Search | Keyword search across all feeds |
🔥 Trending | Most discussed technologies with frequency |
📋 Daily Digest | Last 24 hours grouped by category |
🔖 Bookmarks | Your saved articles |
⚙️ Settings | Server config, feeds, Bedrock status |
MCP Tools Reference
latest_news
Retrieve latest articles filtered by category.
Input: category (AWS, AI, Python, DevOps, Kubernetes, GitHub)
Output: Articles with title, source, date, summary, URL
search_news
Search all feeds for keyword matches.
Input: keyword (e.g., "Amazon Bedrock", "Lambda", "MCP")
Output: Ranked articles by relevance
summarize_article
Download and summarize an article using Amazon Bedrock Nova.
Input: url (full article URL)
Output: Title, 3-5 sentence summary, reading time, source
Requires: AWS credentials with Bedrock access
trending_topics
Analyze all recent articles for frequently mentioned technologies.
Input: None Output: Topics with frequency counts, sorted descending
compare_sources
Compare how two news sources cover the same topic.
Input: source_a, source_b, topic
Output: Similarities and differences in coverage
bookmark_article
Save article metadata to local SQLite database.
Input: title, url, source_name, published_date
Output: Success/already bookmarked message
saved_articles
Retrieve all bookmarked articles.
Input: None Output: All bookmarks ordered by save date (newest first)
daily_digest
Generate a digest of articles from last 24 hours.
Input: None Output: Articles grouped by category
RSS Feed Sources
Source | Category | URL |
AWS News Blog | AWS | aws.amazon.com/blogs/aws/feed/ |
AWS Machine Learning Blog | AI | aws.amazon.com/blogs/machine-learning/feed/ |
Python Insider | Python | blog.python.org/feeds/posts/default |
Kubernetes Blog | Kubernetes | kubernetes.io/feed.xml |
GitHub Blog | GitHub | github.blog/feed/ |
Hacker News | DevOps | hnrss.org/frontpage |
InfoQ | DevOps | feed.infoq.com/ |
DEV Community | Python | dev.to/feed |
Add your own feeds by editing newspulse_mcp/feeds_config.yaml — no code changes needed.
Amazon Bedrock Setup (Summarization)
The summarize_article tool uses Amazon Bedrock's Converse API with Amazon Nova.
Step 1: Configure AWS CLI
aws configure
# AWS Access Key ID: your-key
# AWS Secret Access Key: your-secret
# Default region: us-east-1
# Default output: jsonStep 2: Enable Model Access
Go to Amazon Bedrock Console
Click "Manage model access"
Enable
Amazon Nova Lite(or Nova Micro/Pro)Wait for access to be granted (~1 minute)
Step 3: Configure Model (Optional)
Edit .env to change the model:
# Available models:
# amazon.nova-micro-v1:0 — Fastest, cheapest (text-only)
# amazon.nova-lite-v1:0 — Good balance (default)
# amazon.nova-pro-v1:0 — Highest quality
BEDROCK_MODEL_ID=amazon.nova-lite-v1:0
BEDROCK_TEMPERATURE=0.3
BEDROCK_MAX_TOKENS=512No AWS Account?
All other tools work without Bedrock you'll just see a "summarization disabled" message for that one tool. News, search, trending, bookmarks, and digest all use live RSS feeds directly.
Docker Deployment
Build and Run
docker build -t newspulse-mcp .
docker run -p 8000:8000 --env-file .env newspulse-mcpDocker Compose
docker-compose up -dDashboard at http://localhost:8000. SQLite data persisted in ./data/.
Demo Flow
python -m newspulse_mcp dashboard— Start the dashboardOpen
http://localhost:8000— See the home pageClick Latest News — Live articles from all RSS feeds
Filter by "AWS" category — Only AWS articles shown
Click Search → type "Bedrock" → see matching articles
Click Trending — See most discussed technologies
Click Bookmark on any article — Saved to your library
Click Bookmarks — See your saved articles
Click Daily Digest — Last 24 hours grouped by category
Connect Kiro → Ask "Show today's AI news" → MCP tools invoked automatically
Project Structure
newspulse-mcp/
├── newspulse_mcp/
│ ├── main.py # Entry point (serve/dashboard/both)
│ ├── feeds_config.yaml # RSS feed configuration
│ ├── config/ # Settings, feed loader, logging
│ ├── models/ # Article, Bookmark, Error dataclasses
│ ├── services/ # RSS, Search, Trending, Summarizer, etc.
│ ├── parser/ # BeautifulSoup article extraction
│ ├── database/ # SQLite connection + bookmark repository
│ ├── mcp_tools/ # FastMCP tool definitions (8 tools)
│ └── dashboard/ # FastAPI app, routes, templates, CSS
├── tests/ # Unit + integration tests (100+ tests)
├── .env.example # Environment variable template
├── .kiro/specs/ # Kiro spec files (requirements, design, tasks)
├── Dockerfile # Container image
├── docker-compose.yml # Local orchestration
├── requirements.txt # Python dependencies
├── pyproject.toml # Project metadata
├── LICENSE # MIT License
└── README.md # This fileEnvironment Variables
Variable | Description | Default |
| AWS region for Bedrock |
|
| Nova model for summarization |
|
| LLM temperature (0.0–1.0) |
|
| Max summary tokens |
|
| Nucleus sampling |
|
| Enable/disable summarization |
|
| SQLite file path |
|
| Logging level |
|
Running Tests
# Run all tests
python -m pytest tests/ --tb=short
# Run with coverage
python -m pytest tests/ --cov=newspulse_mcp --cov-report=term-missingTroubleshooting
Issue | Solution |
| Run |
| Make sure you're using the latest |
| Run |
Dashboard shows raw HTML | Restart the server ( |
Can't access | Use |
| Harmless — already fixed with inline SVG favicon |
Kiro doesn't see tools | Check |
Future Improvements
Article caching layer to reduce redundant feed fetches
Full-text search with SQLite FTS5
WebSocket live feed updates
User-configurable feed lists via dashboard
Export bookmarks to Markdown/JSON
Multi-user authentication
Scheduled digest via email/Slack
More RSS sources (TechCrunch, The Verge, etc.)
Author
Built by DD with Kiro IDE and Amazon Bedrock.
License
This project is licensed under the MIT License. See LICENSE for details.
Available Tools
8 toolsbookmark_articleA
Bookmark an article for later reference.
Inputs: url (required), title (required), source_name (required), published_date (required). Returns: object
compare_sourcesC
Compare how two sources cover the same topic.
Inputs: topic (required), source_a (required), source_b (required). Returns: object
daily_digestA
Generate a digest of articles from the last 24 hours grouped by category.
Returns: dict with keys: - categories: list of {category, articles} groupings - message: descriptive message if no recent articles
Inputs: no named parameters. Returns: object
latest_newsA
Retrieve the latest news articles filtered by category.
Inputs: category (required). Returns: object
saved_articlesA
Retrieve all bookmarked articles ordered by bookmark timestamp descending.
Returns: dict with keys: - articles: list of bookmarked article dicts with id, title, url, source_name, published_date, bookmarked_at - count: number of bookmarks
Inputs: no named parameters. Returns: object
search_newsB
Search all feeds for articles matching a keyword.
Inputs: keyword (required). Returns: object
summarize_articleB
Download, parse, and summarize an article using LLM.
Inputs: url (required). Returns: object
trending_topicsA
Identify most frequently discussed technologies across recent articles.
Returns: dict with keys: - topics: list of {name, frequency} ordered by frequency descending - message: descriptive message if no data available
Inputs: no named parameters. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Each tool serves a unique purpose: category-based news, keyword search, summarization, trending topics, source comparison, bookmarking (add/list), and daily digest. No functional overlap.
All tool names follow a clear snake_case pattern with descriptive verbs and nouns (e.g., latest_news, search_news, bookmark_article). Consistent convention throughout.
8 tools is well-scoped for a news aggregation server, covering essential features without unnecessary bloat or deficiency.
Core news workflows are covered: retrieval, search, summarization, trends, comparison, bookmarking, and daily digest. Minor gaps exist (e.g., no update/delete for bookmarks), but the surface is largely complete.
Maintenance
Related MCP Connectors
Dive into the latest and greatest from the tech world with our Hacker News MCP server.
RSS & Atom feed manager with full-text search, AI curation, and remote MCP endpoint.
Managed cloud RSS and Atom feed reader with a remote Model Context Protocol (MCP) endpoint. Zero server setup required — enables AI agents like Claude to instantly subscribe to feeds, search full-text articles, extract readable content, and access curated AI editions ("Your Newspaper") over secure streamable HTTP.
One MCP server for all web data. Scrape, search, crawl, and AI research in one install.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that fetches RSS feeds and shares them with LLMs, allowing AI assistants to access and present the latest news and articles from configured feeds.19-
- FlicenseNot gradedqualityDmaintenanceAn AI-powered news aggregator MCP server that fetches live news from multiple sources, provides AI summaries via Claude, and performs sentiment analysis and trending topic detection.-
- AlicenseNot gradedqualityDmaintenanceMCP server that fetches and filters AI-related news from 20+ RSS feeds with scheduled notifications and email digests.1MIT
- FlicenseNot gradedqualityBmaintenanceAn MCP server providing real-time access to tech news from Hacker News, GitHub trending repositories, ArXiv papers, and dev.to articles, with capabilities for deep dives and cross-source comparisons.-