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 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

🚀 Quick Start (No Download Required)

You can run FeedFlow directly without cloning the repository using uvx:

uvx --from git+[https://github.com/geckod22/FeedFlow](https://github.com/geckod22/FeedFlow) feedflow

🛠️ 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 (Recommended for CLI users)

If you use Gemini CLI or other terminal-based clients, you can run FeedFlow without installation:

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

or from PyPi

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

🔧 Standard config:

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.0.tar.gz (133.6 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.0-py3-none-any.whl (67.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for feedflow-2.0.0.tar.gz
Algorithm Hash digest
SHA256 422d438fc12f561d03bf0373a80c7e7e1b8c4ba7dd931831e6fcb2541ce7a9bd
MD5 d0af4558a453d655602626fcade3e59c
BLAKE2b-256 e4f146af5c98a9e11c5fdda0d5cf55d9184b593ffcc25d3769ab252c31b43428

See more details on using hashes here.

File details

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

File metadata

  • Download URL: feedflow-2.0.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ad31669d8f130f846e547277f3f7464f0cf575f2adefbfe867fac2826a81161
MD5 4d496ea3cefd4fc4b2aee975c3c2bf08
BLAKE2b-256 7179360bf500813575092594ebf5fdee6da2ba7a1ede37c497fd58b2ef086848

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