Skip to main content

A stdio MCP server to manage and read RSS feeds directly from AI clients.

Project description

FeedFlow Logo

FeedFlow MCP Server

GitHub release (latest by date) Supported Python Versions uv PyPi package Pytest Coverage Tests


FeedFlow is a stdio-based FastMCP server designed for managing and fetching articles from RSS feeds. It allows you to add, list, and read from multiple RSS feed sources directly through MCP tool calls, using a persistent SQLite database.


Features

  • Add & Manage RSS Feeds: Persistently add new RSS feeds to the database.
  • Categorize Feeds: Assign a category and language to each feed for better organization.
  • List Feeds: Retrieve a list of all stored feeds, or filter them by category.
  • Fetch Articles: Get the latest articles from any given RSS feed URL, with summaries.
  • SQLite: All feed data is stored in a local SQLite database (windows: %LOCALAPPDATA%).
  • Language Detection: Automatically detects the language of a feed's content if not specified.
  • Asynchronous: Built with asyncio, aiosqlite, and httpx for non-blocking I/O.

Prerequisites

  • Python 3.13+
  • uv (for installing dependencies from uv.lock)

📦 Installation & 📋 Usage

FeedFlow is designed to run as an MCP server. You don't need to install it manually; uv handles everything.

🛠️ Developer Setup

  1. Clone the repository:

    git clone https://github.com/geckod22/FeedFlow
    cd FeedFlow
    
  2. Install in editable mode: This project uses uv. To set up a virtual environment and install all dependencies (including test tools):

    uv sync
    uv pip install -e .
    

⚙️ MCP Client configuration

🚀 Quick Start (without cloning the repository)

you can run FeedFlow directly from PyPi

"feedflow": {
  "command": "uvx",
  "args": ["feedflow"]
}

or if you use Gemini CLI or other terminal-based clients, you can run it from github:

"feedflow": {
  "command": "uvx",
  "args": ["--from", "git+https://github.com/geckod22/FeedFlow", "feedflow"]
}

🔧 Standard config\DEV:

if you cloned the repo on your machine

    "feedflow": {
		"command": "uv",
		"args": [
        "--directory", "full_path_to_FeedFlow_main_folder",
        "run", "feedflow"
    	]
    }
Client DOC
Claude Desktop here
Copilolt / VS Code here
Cursor Go to Cursor Settings -> MCP -> New MCP Server. Use the General config above.
Gemini CLI here
Windsurf here

🛠️ Available Tools & Resources

📦 Resources

  • feeds://feeds: Returns a list of all configured RSS feeds.
  • feeds://categories: Returns a list of all unique feed categories.
  • feeds://feeds/{category}: Returns a list of RSS feeds filtered by a specific category.

💬 Prompts

  • available_feeds_categories: Returns a list of all unique feed categories.

🔧 Tools

add_feed

Adds a new RSS feed to the database.

  • Parameters:
    • url (str, required): The URL of the RSS feed.
    • name (str, required): A descriptive name for the feed.
    • category (str, optional): The category for the feed (default: General).
    • lang (str, optional): The 2-letter ISO code for the language (default: en).

remove_feed

Removes a feed from the database.

  • Parameters:
    • feed (str, required): The URL or the title/name of the feed to remove.

list_feeds

Returns the list of saved RSS feeds.

  • Parameters:
    • category (str, optional): If provided, filters the feeds by this category.

fetch_rss_feed

Fetches and displays the latest articles from a given RSS feed URL.

  • Parameters:
    • url (str, required): The URL of the RSS feed to fetch.
    • max_results (int, optional): The maximum number of articles to return (default: 5, max: 10).

🔍 Test with modelcontextprotocol/inspector

from the project folder run:

npx @modelcontextprotocol/inspector uv run feedflow

🧪 Running Tests

To run the test suite, use pytest:

uv run pytest

with coverage

uv run pytest --cov=feedflow --cov-report=html

for coverage badge

uv run pytest --cov=feedflow --local-badge-output-dir .

📄 License

This project is licensed under the MIT License. See the LICENSE file for details.

🤝 Contributing

Contributions are welcome! Feel free to open issues or submit pull requests to improve the project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

feedflow-2.0.1.tar.gz (133.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

feedflow-2.0.1-py3-none-any.whl (67.0 kB view details)

Uploaded Python 3

File details

Details for the file feedflow-2.0.1.tar.gz.

File metadata

  • Download URL: feedflow-2.0.1.tar.gz
  • Upload date:
  • Size: 133.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.3

File hashes

Hashes for feedflow-2.0.1.tar.gz
Algorithm Hash digest
SHA256 cf23216470c375a88450130a32274ffd4e5c789185327b5cb88c11ff190c2aa3
MD5 cc0fafc1e60c5b10370589cf76549aab
BLAKE2b-256 0cd98a5bdb717c1219c285eb168c6a4bc5ff1392493abf6961b4176d44aed369

See more details on using hashes here.

File details

Details for the file feedflow-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: feedflow-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 67.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.3

File hashes

Hashes for feedflow-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 294b96755c0a0f626a8bd0da1255ab63f7147353d596f089b4cc893886e9a490
MD5 9c1021436491b398c975405419b82426
BLAKE2b-256 f679b65231b84601b8364293cea927e1d9324b80a36ab2d7e9b23bfc726600c4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page