MCP RSS logo

MCP RSS

by buhe

MCP RSS is a Model Context Protocol (MCP) server designed for interacting with RSS feeds. It allows users to manage and access RSS content through an MCP API.

View on GitHub

Last updated: N/A

MCP RSS

MCP RSS is a Model Context Protocol (MCP) server for interacting with RSS feeds.

Features

  • Parse OPML files to import RSS feed subscriptions
  • Automatically fetch and update articles from RSS feeds
  • Expose RSS content through MCP API
  • Mark articles as favorites
  • Filter articles by source and status

Installation

Prerequisites

  • Node.js (v14 or higher)
  • MySQL database

Setup MySQL

$ docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

Install MCP

This MCP uses stdio for communication. Fill in npx mcp_rss in the command, fill in the configuration that needs to be customized in the environment variable, and at least use your own opml file.

Use in claude desktop

{
  "key": "rss",
  "command": "npx",
  "args": [
    "mcp_rss"
  ],
  "env": {
    "OPML_FILE_PATH": "/Users/guyanhua/feeds.opml"
  }
}

Configuration

Set the following environment variables to configure MCP RSS:

Configuration Options

| Option | Description | Default Value | |--------|-------------|--------------| | DB_HOST | Database host | localhost | | DB_PORT | Database port | 3306 | | DB_USERNAME | Database username | root | | DB_PASSWORD | Database password | 123456 | | DB_DATABASE | Database name | mcp_rss | | OPML_FILE_PATH | Path to your OPML file with RSS feeds | "./feeds.opml" | | RSS_UPDATE_INTERVAL | Interval to fetch RSS updates (in minutes) | 1 |

MCP API Reference

The MCP RSS server exposes the following API methods:

get_content

Get articles from subscribed RSS feeds.

Parameters:

| Parameter | Type | Description | Required | |-----------|------|-------------|---------| | status | string | Filter by article status ("normal" or "favorite") | No | | source | string | Filter by source (feed title) | No | | limit | number | Maximum number of articles to return | No (default: 10) |

Response:

{
  "articles": [
    {
      "id": 1,
      "title": "Article Title",
      "content": "Article content...",
      "link": "https://example.com/article",
      "pubDate": "2023-01-01T12:00:00Z",
      "fetchDate": "2023-01-01T12:30:00Z",
      "status": "normal",
      "feedTitle": "Example Feed",
      "feedCategory": "Technology"
    }
  ],
  "success": true
}

get_sources

Get all available RSS feed sources.

Parameters: None

Response:

{
  "sources": [
    {
      "id": 1,
      "title": "Example Feed",
      "category": "Technology"
    }
  ],
  "success": true
}

set_tag

Set the status of an article (normal or favorite).

Parameters:

| Parameter | Type | Description | Required | |-----------|------|-------------|---------| | status | string | Article status ("normal" or "favorite") | Yes | | articleId | number | ID of the article to update | Yes |

Response:

{
  "success": true,
  "message": "Article 1 status has been updated to favorite"
}

License

MIT