# Miniflux (RSS Reader) MCP

> Miniflux (RSS Reader) MCP Server lets your AI client manage and read all your RSS feeds directly inside Miniflux. Use tools like `list_entries` to pull article content, discover new sources with `discover_subscriptions`, and organize knowledge using categories—all without leaving your chat window.

## Overview
- **Category:** productivity
- **Price:** Free
- **Tags:** rss-reader, feed-management, content-aggregation, news-tracking, information-consumption

## Description

Yo. This Miniflux MCP Server lets your AI client manage and read every damn RSS feed you've got, right inside your chat window. You don't gotta jump to another tab or open the whole web app just to check a few articles. You treat your entire knowledge base like one single source of truth using natural language prompts.

**Getting Your Feeds Set Up and Keeping 'Em Current**

You can start finding new sources by running `discover_subscriptions` on any URL, which searches for potential feeds you might want to track; or you can manually add a specific feed using `create_feed`. If you need to cut ties with an old source, `delete_feed` takes it out. To make sure your whole setup is solid, you've got `list_feeds` to see every single subscription—active and inactive—and you can even check the metadata for a specific feed using `get_feed`. If you want to know how many articles you haven't read from any given source, `get_feed_counters` gives you those numbers.

**Reading and Digging into Content**

When it comes to content, this thing is deep. You can get a high-level list of articles using `list_entries`, letting you narrow down results by date or status until you find what you need. Need the full story? Use `get_entry` to grab details on one article ID, and then call `fetch_entry_content` to pull the entire original text, stripped clean. You can also use `list_feed_entries` to see only articles from a single feed, or check out all entries tied to an organizational grouping with `list_category_entries`. If you just need general info on what user is logged in, `get_me` hands that over.

**Organizing and Marking Stuff as Read**

This isn't just a reader; it's a filing cabinet. You can create new organizational buckets using `create_category`, and then you'll have `list_categories` to see what you've got set up. When you find something important, use `toggle_entry_bookmark` to star it—it saves it for later. If an article belongs in a specific grouping, you can update that membership using `update_category`. To keep your reading flow clean, you have status tools: you can mark everything in an entire category as read with `mark_category_as_read`, or change the status of every single piece from one feed instantly using `mark_feed_as_read`. You've got bulk control too; `update_entries_status` lets you change the read/unread state for multiple articles all at once.

**Advanced Feed Management and Maintenance**

Keep your data fresh by triggering background updates for every single feed with `refresh_all_feeds`, or if you only care about one source, use `refresh_feed`. If a whole category's worth of feeds needs an update, run `refresh_category`. You can also manually bring in content that wasn't sourced from a feed using `import_entry`, and for massive migrations, the system handles entire collection imports via `import_opml` or backs up your whole library into a file with `export_opml`. To save a specific piece of reading material outside the app, you use `save_entry` to send it somewhere else. If you ever need to update the source URL or settings for an existing feed, `update_feed` handles that.

**Admin and Utility Stuff**

For system control, you can generate a new secret key using `create_api_key`, list every key attached to your account with `list_api_keys`, or delete old ones with `delete_api_key`. If you're managing users—and this is only for admins—you can create accounts via `create_user`, manage them through `list_users` and fetching details using `get_user`, and update their profile data with `update_user`; there are also tools to delete those user accounts completely. Finally, the system keeps itself running; you can check its status with `healthcheck`, or if you're just testing something out, `flush_history` clears local history data.

## Tools

### create_api_key
Generates a new API key for your Miniflux account.

### create_category
Creates a new organizational category in your feed library.

### create_feed
Adds a specific RSS feed URL to your subscriptions.

### create_user
Creates a new user account (Admin only).

### delete_api_key
Removes an existing API key from the system.

### delete_category
Permanently deletes a category you created.

### delete_feed
Removes a specific feed subscription entirely.

### delete_user
Deletes a user account (Admin only).

### discover_subscriptions
Searches and finds potential RSS feeds based on a given URL.

### export_opml
Exports your entire feed collection into an OPML file for backup or migration.

### fetch_entry_content
Retrieves the full, original article content for a specific entry ID.

### flush_history
Clears out local history data for clean testing or use.

### get_entry
Fetches details about one single article entry by its ID.

### get_feed_counters
Gets the count of unread and read articles for any given feed.

### get_feed_icon
Fetches an icon image used to represent a particular feed.

### get_feed
Retrieves metadata and status for a specific feed subscription.

### get_icon
Fetches an icon image by its unique ID.

### get_integrations_status
Checks which third-party services are currently connected and enabled.

### get_me
Retrieves basic information about the current logged-in user.

### get_user
Fetches details for a specific user account (Admin only).

### get_version
Returns the application's version and build information.

### healthcheck
Performs a basic database check to confirm server uptime.

### import_entry
Allows manual import of an entry that wasn't sourced from a feed.

### import_opml
Imports an entire collection of feeds and entries from an OPML file.

### list_api_keys
Lists all API keys associated with the account.

### list_categories
Retrieves a list of all currently existing categories.

### list_category_entries
Gets every article entry contained within a specific category.

### list_entries
Lists articles, applying filters like date or status to narrow down results.

### list_feed_entries
Shows all entries belonging only to one specified feed ID.

### list_feeds
Retrieves a list of every active and inactive feed subscription.

### list_users
Lists all user accounts on the system (Admin only).

### liveness
Liveness probe

### mark_category_as_read
Marks every article in an entire category as read instantly.

### mark_feed_as_read
Changes the status of all entries within a specific feed to 'read'.

### mark_user_as_read
Marks all content associated with a user account as read.

### readiness
Readiness probe

### refresh_all_feeds
Triggers an automatic background refresh for every single subscribed feed.

### refresh_category
Forces a data update across all feeds linked to one category.

### refresh_feed
Synchronously updates the content of one specific feed right now.

### save_entry
Sends a selected article entry to an external service for archiving or sharing.

### toggle_entry_bookmark
Marks or unmarks an individual article as a saved bookmark (starring it).

### update_category
Modifies the name or settings of an existing category.

### update_entries_status
Bulk updates the status (read/unread) for multiple entries at once.

### update_entry
Changes the title or body content of a specific saved article entry.

### update_feed
Updates the settings or source URL for an existing feed subscription.

### update_user
Update a user (Admin only)

## Prompt Examples

**Prompt:** 
```
List all my current RSS feeds and their IDs.
```

**Response:** 
```
I've retrieved your feeds. You have 3 active subscriptions: 'TechCrunch' (ID: 12), 'Hacker News' (ID: 15), and 'Miniflux Blog' (ID: 20). Which one would you like to explore?
```

**Prompt:** 
```
Find RSS feeds for the website https://miniflux.app.
```

**Response:** 
```
Searching for feeds... I found one available subscription: 'Miniflux Blog' at https://miniflux.app/feed.xml. Would you like me to add it to your feeds?
```

**Prompt:** 
```
Show me the latest 5 unread entries from feed ID 15.
```

**Response:** 
```
Fetching unread entries for Hacker News (ID: 15)... Here are the latest 5: 'Show HN: MCP Server for Miniflux', 'New Rust Release', 'The Future of RSS', 'AI in 2024', and 'Web Standards Update'. Would you like to read the content of any of these?
```

## Capabilities

### Discovering and Adding Feeds
Finds available RSS feeds from any URL or creates an entirely new subscription source using `discover_subscriptions` or `create_feed`.

### Reading and Fetching Content
Retrieves lists of entries, fetches the full text content for a specific article (`fetch_entry_content`), or checks unread counts with `get_feed_counters`.

### Organizing Articles and Feeds
Adds categories using `create_category`, bookmarks individual articles (`toggle_entry_bookmark`), or marks entire feeds/categories as read to manage your reading flow.

### Advanced Feed Management
Allows you to bulk update entry statuses with `update_entries_status`, refresh all feed data, or export the whole library via `export_opml`.

## Use Cases

### The Research Dumpster Fire
A researcher needs to consolidate 40 articles from various academic feeds. Instead of opening tabs and copying links, they ask their agent: 'Get the titles for all my unread entries that mention AI.' The agent runs `list_entries` with filters, giving them a clean list they can process.

### The Content Deadline Crunch
A curator needs to draft a newsletter on 'Web Development'. They ask the agent to find all articles in their 'Dev' category that haven't been read, and then save the top three using `save_entry`. This pulls content from multiple sources into one actionable list.

### The Tech Update Sweep
A developer wants to know which feeds are active but haven't been checked in a while. They ask for the feed status, and the agent runs `get_feed_counters` on all sources, immediately highlighting any feeds with unread articles.

## Benefits

- **Consolidate Data:** Instead of manually checking 15 different RSS pages, you use `list_entries` or `get_feed_counters`. Your AI agent pulls the latest titles and unread counts from all sources at once.
- **Structured Organization:** You don't lose important reads. Use `create_category` to build a custom knowledge structure, then assign articles with simple commands that call `list_category_entries`.
- **Deep Content Access:** Don't just read headlines. If you need the full text of an article, run `fetch_entry_content`. This gets the original source material so your agent can summarize or process it properly.
- **Workflow Efficiency:** Running a prompt like 'Mark everything from TechCrunch as read and save the rest to my Dev category' combines multiple functions—`mark_feed_as_read`, `create_category`, and `list_entries`—into one step.
- **Maintenance Control:** When you know your data is stale, use `refresh_all_feeds`. It forces all sources to update in the background, ensuring your agent always reads current information.

## How It Works

The bottom line is, your AI client uses the specific Miniflux API endpoints we expose to perform actions on your behalf, without needing direct web access.

1. First, subscribe to this server and provide your Miniflux Instance URL and API Key.
2. Next, prompt your AI client with a task (e.g., 'List all my current feeds' or 'Find RSS for Google').
3. The agent runs the necessary tools (like `list_feeds` or `discover_subscriptions`) and returns the data to you for review.

## Frequently Asked Questions

**How do I add a new feed using `create_feed`?**
You give your agent the RSS URL, and it executes the `create_feed` tool. It adds that subscription to your Miniflux account immediately.

**What is the difference between `list_entries` and `list_feed_entries`?**
`list_entries` searches across multiple feeds based on filters (like date). `list_feed_entries` only shows you articles from one specific, designated feed ID.

**How do I bulk mark items as read using this server?**
You use the dedicated status tools. For example, running 'Mark all entries in my 'Work' category as read' triggers `mark_category_as_read` instantly.

**Does `export_opml` save my data outside Miniflux?**
Yes. It downloads an OPML file containing your entire feed collection, giving you a backup or migration package of all your subscriptions and entries.

**If I use `list_api_keys`, how can my AI agent check which API keys are active or if one needs deletion?**
The tool lists all existing API keys associated with your account. It doesn't confirm 'activity,' but it shows what keys the system recognizes. You must then use `delete_api_key` manually to revoke access for any key you no longer need.

**When I call `fetch_entry_content`, am I getting just the raw article text, or does it include metadata too?**
It provides the original, full content of the entry. This means you get the complete body text and often associated media data from the source, not just the summary snippet available in a feed list.

**How does `refresh_all_feeds` operate? Is it instant, or is it a background job?**
It runs as an asynchronous background refresh. This means your AI agent sends the command and gets confirmation that the process started; you'll need to wait for the feed data to update before querying the latest content.

**What information does `get_me` provide about my user profile within Miniflux?**
This tool returns your current user details, including basic account metrics and identifiers. It helps your agent confirm which identity it's operating under when making changes like marking entries as read.

**Can I find RSS feeds from a website URL automatically?**
Yes! Use the `discover_subscriptions` tool with any website URL. The agent will scan the site and return all available RSS/Atom feed links found.

**How do I mark all articles in a specific feed as read?**
Simply use the `mark_feed_as_read` action providing the `feed_id`. This will instantly update the status of all entries within that feed to 'read'.

**Can I search for specific keywords across all my articles?**
Yes. Use the `list_entries` tool and provide a keyword in the `search` parameter. You can also filter by status (read/unread) or starred items.