MCP RSS Server
A Model Context Protocol server that allows interaction with RSS feeds, enabling users to import subscriptions via OPML files, fetch and update articles automatically, and filter content by source and status.
README Documentation
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