Skip to main content
Glama
README.md
# RSS MCP

An MCP server that provides RSS feed tools for Claude Desktop. Fetches and parses RSS feeds, returning structured article data.

## Requirements

- Python 3.13+
- [uv](https://docs.astral.sh/uv/) - Install with:
  ```bash
  curl -LsSf https://astral.sh/uv/install.sh | sh
  ```

## Installation

```bash
git clone https://github.com/YOUR_USERNAME/rss-mcp.git
cd rss-mcp
uv sync
```

## Claude Desktop Configuration

Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "rss-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/rss-mcp", "python", "main.py"]
    }
  }
}
```

Replace `/path/to/rss-mcp` with the actual path to your cloned repository.

## Configuration

Edit `feeds.json` to customize feeds and filtering:

```json
{
  "feeds": {
    "tech": {
      "url": "https://hnrss.org/newest",
      "description": "Tech news from Hacker News",
      "limit": 20
    },
    "news": {
      "url": "https://www.wyff4.com/topstories-rss",
      "description": "Local and national news"
    }
  },
  "blocklist": ["crypto", "nft", "sponsored"]
}
```

- **feeds**: Named feeds that become tools (e.g., `get_tech_feed`, `get_news_feed`)
  - `url`: RSS feed URL (required)
  - `description`: Tool description shown in Claude (optional)
  - `limit`: Max entries to return (optional)
- **blocklist**: Topics to filter out - passed to Claude for semantic filtering (e.g., "animals" filters out dog/cat/wildlife stories)

**Note:** Restart Claude Desktop after editing `feeds.json` for changes to take effect.

## Available Tools

- **fetch_rss(url, limit)** - Fetch any RSS feed by URL
- **get_{name}_feed** - One tool per configured feed in `feeds.json`

## Development

```bash
# Run the server directly
uv run python main.py

# Debug with MCP inspector
uv run mcp dev main.py

# Lint
uv run ruff check .

# Type check
uv run ty check
```

## License

MIT

TDQS

B3/5.0

Scored across 6 tools

Disambiguation3/5

There is overlap between tech feeds (get_tech_feed, get_arstechnica_feed) and science feeds (get_science_feed, get_physics_feed), which could cause misselection. fetch_rss is distinct as a generic fetcher, but the specific feeds have blurred boundaries.

Naming Consistency4/5

Most tools use a get_<descriptor>_feed pattern, but fetch_rss deviates with a different verb and no '_feed' suffix. This is a minor inconsistency in an otherwise predictable naming scheme.

Tool Count5/5

Six tools is well-scoped for an RSS server. The generic fetch_rss plus specific curated feeds provides a balanced set without unnecessary bloat.

Completeness5/5

fetch_rss can retrieve any RSS feed, providing full coverage. The specific feed tools are convenience wrappers, so there are no obvious gaps in the server's functionality.

Maintenance

ActivityInactive
ResponsivenessNo issues