NewsPulse MCP
A custom MCP server that aggregates live tech news from RSS feeds, providing tools for searching, summarizing, bookmarking, and generating daily digests, with optional AI summarization via Amazon Bedrock.
README
⚡ 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
- The Problem
- What This Does
- Architecture
- Quick Start (5 Minutes)
- Step-by-Step Setup
- Connect to Kiro IDE
- Connect to Claude Desktop
- Web Dashboard
- MCP Tools Reference
- RSS Feed Sources
- Amazon Bedrock Setup (Summarization)
- Docker Deployment
- Demo Flow
- Project Structure
- Environment Variables
- Running Tests
- Troubleshooting
- Future Improvements
- Author
- License
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:8000
Note: 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-mcp
Step 3: Install Dependencies
pip install -r requirements.txt
This 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 .env
Step 5: Configure AWS (Optional — for summarization only)
aws configure
Enter your:
- AWS Access Key ID
- AWS Secret Access Key
- Default region:
us-east-1 - Output 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 --help
Expected output:
usage: newspulse-mcp [-h] [{serve,dashboard}]
NewsPulse MCP Server — Technology news aggregation via MCP protocol
Step 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_mcp
Connect 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" | latest_news |
| "Search for Amazon Bedrock articles" | search_news |
| "Summarize this article: https://..." | summarize_article |
| "What's trending in tech?" | trending_topics |
| "Compare AWS Blog vs GitHub Blog on AI" | compare_sources |
| "Bookmark that article" | bookmark_article |
| "Show my saved articles" | saved_articles |
| "Give me today's tech digest" | daily_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 dashboard
Open 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: json
Step 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=512
No 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-mcp
Docker Compose
docker-compose up -d
Dashboard at http://localhost:8000. SQLite data persisted in ./data/.
Demo Flow
python -m newspulse_mcp dashboard— Start the dashboard- Open
http://localhost:8000— See the home page - Click 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 file
Environment Variables
| Variable | Description | Default |
|---|---|---|
AWS_REGION |
AWS region for Bedrock | us-east-1 |
BEDROCK_MODEL_ID |
Nova model for summarization | amazon.nova-lite-v1:0 |
BEDROCK_TEMPERATURE |
LLM temperature (0.0–1.0) | 0.3 |
BEDROCK_MAX_TOKENS |
Max summary tokens | 512 |
BEDROCK_TOP_P |
Nucleus sampling | 0.9 |
SUMMARIZATION_ENABLED |
Enable/disable summarization | true |
DATABASE_PATH |
SQLite file path | ./newspulse.db |
LOG_LEVEL |
Logging level | INFO |
Running Tests
# Run all tests
python -m pytest tests/ --tb=short
# Run with coverage
python -m pytest tests/ --cov=newspulse_mcp --cov-report=term-missing
Troubleshooting
| Issue | Solution |
|---|---|
ModuleNotFoundError |
Run pip install -r requirements.txt |
RuntimeError: Already running asyncio |
Make sure you're using the latest main.py (fixed) |
Summarization disabled |
Run aws configure and enable Nova in Bedrock console |
| Dashboard shows raw HTML | Restart the server (Ctrl+C then re-run) |
Can't access http://0.0.0.0:8000 |
Use http://localhost:8000 instead |
404 /favicon.ico |
Harmless — already fixed with inline SVG favicon |
| Kiro doesn't see tools | Check mcp.json path and restart Kiro |
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.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。