rss-mcp-server

akgoparaju/rss-mcp-server

3.3

If you are the rightful owner of rss-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The RSS MCP Server is a modular server designed to track, filter, and surface PNT/GNSS news from custom RSS feeds using a natural language interface via Claude Desktop.

Tools
  1. update_rss_feeds

    Fetch latest articles from all feeds

  2. get_unread_articles

    Get unread articles

  3. mark_articles_read

    Mark articles as read

  4. search_articles

    Search articles by keywords

๐Ÿ“ก RSS MCP Server

Status Python MCP

A modular Model Context Protocol (MCP) server for tracking, filtering, and surfacing PNT/GNSS news from custom RSS feeds with natural language interface via Claude Desktop.

โœจ Features

  • ๐Ÿ”— Native MCP Integration - Direct integration with Claude Desktop
  • ๐Ÿ“ฐ RSS Feed Processing - Fetches and parses multiple RSS feeds
  • ๐Ÿท๏ธ Tag-based Filtering - Content filtering using configurable tags
  • ๐Ÿ’ฌ Natural Language Interface - AI-powered RSS management
  • ๐Ÿ“Š State Management - Persistent read/unread article tracking
  • ๐Ÿ” Search Capabilities - Keyword and tag-based article search
  • ๐Ÿ›ก๏ธ Error Handling - Graceful fallbacks and error recovery

๐Ÿš€ Quick Start

Prerequisites

  • Python 3.10+
  • Claude Desktop
  • Virtual environment (recommended)

Installation

# Clone the repository
cd rss-mcp-server

# Create and activate virtual environment
python3 -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies
pip install mcp feedparser pyyaml httpx

Configuration

  1. Create feeds.yaml (if not exists):
- url: https://insidegnss.com/feed/
  tags: [C-band, TrustPoint, GPSIA, LEO, PNT]
- url: https://spacenews.com/feed/
  tags: [LEO, spoofing, spectrum]
- url: https://www.gpsworld.com/feed/
  tags: [GNSS, spoof, jamming, M-code]
  1. Configure Claude Desktop:

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "rss-mcp-server": {
      "command": "/path/to/your/project/.venv/bin/python",
      "args": ["/path/to/your/project/main.py"],
      "cwd": "/path/to/your/project"
    }
  }
}

โš ๏ธ Replace paths with your actual project location

  1. Restart Claude Desktop completely (quit and reopen)

Testing

# Test server locally
python main.py
# Should output: "RSS MCP Server initialized successfully"

๐Ÿค– Usage

Once integrated with Claude Desktop, use natural language commands:

"Update my RSS feeds"
"Show me articles about GPS jamming"
"Search for LEO satellite articles"
"Mark the first 5 articles as read"
"Find articles about spoofing"
"Show me 10 recent unread articles"

๐Ÿ“ก MCP Tools

ToolDescriptionParameters
update_rss_feedsFetch latest articles from all feedsNone
get_unread_articlesGet unread articleslimit (optional)
mark_articles_readMark articles as readarticle_ids (optional)
search_articlesSearch articles by keywordsquery, tags (optional)

๐Ÿ“Š MCP Resources

Resource URIDescription
rss://feeds/unreadAll unread articles (JSON)
rss://feeds/allAll articles (JSON)

๐Ÿ“ Project Structure

rss-mcp-server/
โ”œโ”€โ”€ main.py              # MCP server implementation
โ”œโ”€โ”€ processor.py         # RSS feed processing logic
โ”œโ”€โ”€ state.py            # State management for read/unread tracking
โ”œโ”€โ”€ feeds.yaml          # Feed configuration (direct list format)
โ”œโ”€โ”€ state.json          # Runtime state (auto-created)
โ”œโ”€โ”€ requirements.txt    # Python dependencies
โ”œโ”€โ”€ README.md          # This file
โ””โ”€โ”€ .venv/             # Virtual environment

โš™๏ธ Configuration Details

feeds.yaml Format

โœ… Correct format (direct list):

- url: https://example.com/feed/
  tags: [tag1, tag2, tag3]
- url: https://another.com/rss/
  tags: [tag4, tag5]

โŒ Incorrect format (with wrapper):

feeds:  # Don't use this wrapper
  - url: https://example.com/feed/

Tags

Tags are used for:

  • Content filtering during search
  • Categorizing articles by topic
  • Enhancing search relevance

Example tags for PNT/GNSS content:

  • GPS, GNSS, PNT
  • jamming, spoofing, interference
  • LEO, MEO, satellites
  • military, defense, civilian
  • M-code, anti-jam, resilient

๐Ÿ”ง Troubleshooting

Common Issues

Server not appearing in Claude Desktop:

  • Verify claude_desktop_config.json syntax and paths
  • Ensure all paths are absolute
  • Restart Claude Desktop completely

Import errors:

pip install mcp feedparser pyyaml httpx

feeds.yaml format errors:

  • Use direct list format (start with -)
  • No feeds: wrapper needed
  • Ensure proper YAML syntax

File permission errors:

  • Ensure write permissions for state.json
  • Check directory permissions

Debug Steps

  1. Test locally: python main.py
  2. Check dependencies: pip list | grep -E "(mcp|feedparser|pyyaml|httpx)"
  3. Validate config: Check Claude Desktop logs
  4. Verify feeds: Test feed URLs in browser

๐Ÿงช Development

Running Tests

# Test RSS feed processing
python -c "from processor import RSSProcessor; import asyncio; asyncio.run(RSSProcessor().initialize())"

# Test state management
python -c "from state import StateManager; sm = StateManager(); print('State manager working')"

Adding New Feeds

  1. Add feed URL to feeds.yaml
  2. Configure appropriate tags
  3. Restart the MCP server
  4. Update feeds: "Update my RSS feeds"

Debugging

Enable debug output by modifying main.py:

import sys
print("Debug info", file=sys.stderr)

๐Ÿ“ˆ Performance

  • Feed Updates: ~2-5 seconds for 3-5 feeds
  • Article Search: <1 second for typical queries
  • State Persistence: Automatic on read/unread changes
  • Memory Usage: ~10-20MB typical operation

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make changes with tests
  4. Submit a pull request

๐Ÿ“„ License

MIT License - see LICENSE file for details

๐Ÿ†˜ Support

  • Issues: Create GitHub issue with logs
  • Questions: Tag @anil.goparaju
  • Documentation: See Google Drive docs

๐ŸŽฏ Use Cases

Daily News Briefing:

"Update feeds and show me unread articles about GPS jamming and spoofing"

Research Assistance:

"Search for articles about LEO PNT systems published this week"

Competitive Intelligence:

"Find articles mentioning TrustPoint or military navigation systems"

Content Curation:

"Show me all unread articles, then mark the first 10 as read"

๐Ÿ“Š Sample Output

When you search for "GPS jamming", you get structured results:

{
  "count": 3,
  "articles": [
    {
      "id": "251bc714...",
      "title": "U.S. Army Taking a Layered Approach to PNT",
      "link": "https://insidegnss.com/...",
      "published": "2025-06-03T16:58:20",
      "author": "Renee Knight",
      "feed_tags": ["C-band", "TrustPoint", "GPSIA", "LEO", "PNT"],
      "content": "...anti-jamming capabilities..."
    }
  ]
}

Last Updated: June 5, 2025
Status: โœ… Production Ready