npm package: @iflow-mcp/rss-reader-server
Description: Simple RSS reader server
Latest version: 0.1.0

# RSS Reader MCP Server

A TypeScript-based MCP server that provides RSS feed reading capabilities for fetching and parsing RSS/Atom feeds from URLs.

## Overview

This MCP server implements RSS feed reading functionality by providing tools to fetch, parse, and extract structured data from RSS and Atom feeds. It uses the `rss-parser` library for robust feed parsing and `axios` for HTTP requests with proper error handling and timeouts.

## Features

### Tools
- **`get_items`** - Fetch RSS feed items from a given URL
  - **Input**: RSS feed URL (required)
  - **Output**: Structured JSON containing feed metadata and items
  - **Capabilities**:
    - Fetches RSS/Atom feeds with 10-second timeout
    - Parses standard RSS fields (title, link, description, pubDate, author, etc.)
    - Extracts custom fields (media content, thumbnails, encoded content)
    - Handles categories and enclosures
    - Provides comprehensive error handling for network and parsing issues

### Supported Feed Formats
- RSS 2.0
- RSS 1.0 (RDF)
- Atom feeds
- Custom fields including:
  - Media content and thumbnails
  - Dublin Core creator fields
  - Content-encoded fields

### Error Handling
- URL validation
- Network timeout handling (10 seconds)
- HTTP error status handling
- RSS parsing error handling
- Comprehensive error messages for debugging

## Development

Install dependencies:
```bash
npm install
```

Build the server:
```bash
npm run build
```

For development with auto-rebuild:
```bash
npm run watch
```

## Installation

To use with Claude Desktop, add the server config:

On MacOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
On Windows: `%APPDATA%/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "rss-reader-server": {
      "command": "node",
      "args": ["/path/to/rss-reader-server/build/index.js"]
    }
  }
}
```

## Usage Example

Once connected, you can use the `get_items` tool to fetch RSS feed items:

```
Tool: get_items
Input: { "url": "https://example.com/feed.xml" }
```

The server will return a structured JSON response containing:
- Feed URL
- Total item count
- Array of feed items with:
  - Title, link, description
  - Publication date and author
  - Categories (if available)
  - Enclosure information (for podcasts/media)

## Dependencies

- **@modelcontextprotocol/sdk**: MCP protocol implementation
- **rss-parser**: RSS/Atom feed parsing
- **axios**: HTTP client for fetching feeds
- **zod**: Runtime type validation

## Debugging

Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector), which is available as a package script:

```bash
npm run inspector
```

The Inspector will provide a URL to access debugging tools in your browser.

## Error Responses

The server provides detailed error messages for common issues:
- Invalid URL format
- Network connectivity problems
- HTTP errors (404, 500, etc.)
- Request timeouts
- RSS parsing failures

All errors are returned in a structured format with descriptive messages to help with troubleshooting.