loading…
Search for a command to run...
loading…
An MCP server for the Inoreader RSS reader API that allows users to triage articles, analyze feed health, and manage subscriptions. It enables reading content,
An MCP server for the Inoreader RSS reader API that allows users to triage articles, analyze feed health, and manage subscriptions. It enables reading content, organizing folders, and performing batch tagging or status updates through natural language.
MCP server for the Inoreader RSS reader API. Lets Claude help you triage articles, analyze feed health, and manage subscriptions.
Go to the Inoreader Developer Portal and create a new application.
http://localhost:3333/callbackclaude mcp add -s user \
-e INOREADER_CLIENT_ID=your-client-id \
-e INOREADER_CLIENT_SECRET=your-client-secret \
inoreader -- npx inoreader-mcp
Or for Claude Desktop, add to your config file:
{
"mcpServers": {
"inoreader": {
"command": "npx",
"args": ["inoreader-mcp"],
"env": {
"INOREADER_CLIENT_ID": "your-client-id",
"INOREADER_CLIENT_SECRET": "your-client-secret"
}
}
}
}
On first use, ask Claude to call the setup_auth tool. It will give you an OAuth URL to open in your browser. After authorizing, copy the code parameter from the redirect URL and pass it back. Tokens are saved to ~/.config/inoreader-mcp/tokens.json and refresh automatically.
Context that MCP clients can read directly without tool calls. All are cached after first fetch.
| Resource | URI | Description | API Cost |
|---|---|---|---|
rate-limits |
inoreader://rate-limits |
Current API rate limit usage and remaining budget | 0 |
subscriptions |
inoreader://subscriptions |
All feeds with id, title, URL, and folder assignments | 1 Z1 |
folders |
inoreader://folders |
Folder and tag structure | 1 Z1 |
unread-counts |
inoreader://unread-counts |
Unread counts per feed and folder (non-zero, sorted descending) | 1 Z1 |
Thin wrappers around individual Inoreader API endpoints.
| Tool | Description | API Cost |
|---|---|---|
get_unread_counts |
Unread counts for all feeds/folders, sorted by count | 1 Z1 |
get_articles |
Fetch articles with filters (stream, status, date range, pagination). compact=true returns id/title/source/flags only (~10x smaller). include_total=false skips the count request. |
1-2 Z1/page |
get_article_ids |
Lightweight ID-only fetch for counting/batch ops. Use get_articles(compact=true) for a middle ground with titles. |
1 Z1 |
get_article_content |
Full HTML content for specific articles by ID | 1 Z1 |
search_articles |
Keyword search across all feeds. Supports compact=true. |
1 Z1/page |
| Tool | Description | API Cost |
|---|---|---|
list_subscriptions |
All feeds with folders, URLs, metadata | 1 Z1 |
manage_subscription |
Subscribe, edit (rename/move), or unsubscribe | 1 Z2 |
| Tool | Description | API Cost |
|---|---|---|
manage_tags |
Mark read/unread/starred, apply/remove tags (batch support) | 1 Z2 |
batch_manage_tags |
Apply different tags to different article groups in one call — ideal for triage workflows | 1 Z2/op |
mark_all_read |
Mark all items in a feed/folder as read | 1 Z2 |
list_folders_and_tags |
All folders and tags with unread counts (unread only; use get_article_ids for totals) |
1 Z1 |
| Tool | Description | API Cost |
|---|---|---|
get_user_info |
Authenticated user info | 1 Z1 |
get_rate_limit_status |
Check remaining API budget (uses cached headers) | 0 |
Higher-level workflows that combine multiple API calls or add client-side logic.
| Tool | Description | API Cost |
|---|---|---|
get_uncategorized_feeds |
Feeds with no folder, as compact tuples | 1 Z1 |
categorize_feeds |
Bulk-assign feeds to folders from a {folder: [id, ...]} map |
1 Z2/feed |
reassign_feeds |
Move feeds between folders in bulk | 1 Z2/feed |
analyze_feeds |
Bayesian feed health analysis with category-level priors | 3+ Z1 |
| Tool | Description | API Cost |
|---|---|---|
get_saved_items |
Union of starred articles + saved web pages + Keep-tagged items in one call. Deduplicates and adds saved_via field. Use instead of 3+ separate calls. |
3 Z1 |
get_saved_web_pages |
List saved pages with removable filter (excludes starred and keep-tagged). Supports compact=true. |
1 Z1/page |
remove_saved_web_pages |
Batch-remove saved pages by ID | 1 Z2 |
Starred articles, saved web pages, and Keep-tagged items are disjoint collections in the Inoreader API. get_saved_items fetches all three and deduplicates them. Each item includes a saved_via array (["starred"], ["saved_web_page", "keep"], etc.) showing which collections it belongs to.
The keep tag (via manage_tags add_tag='keep') protects a page from cleanup without starring it. Use get_saved_web_pages(filter='removable') for pages that are neither starred nor kept.
Z1 = Zone 1 (read), Z2 = Zone 2 (write). Inoreader enforces ~100 requests/day per zone.
Pre-built workflows that combine resources and tools into guided tasks.
| Prompt | Description | Arguments |
|---|---|---|
triage-unread |
Review unread articles, summarize each, suggest read/star/skip | folder?, count? |
feed-health-review |
Analyze feed engagement, identify unsubscribe candidates | months?, folder? |
organize-uncategorized |
Find feeds with no folder and suggest assignments | -- |
summarize-recent |
Digest recent articles grouped by source with key themes | folder?, hours? |
review-saved-web-pages |
Review saved pages, decide which to keep or remove | -- |
Every tool description includes its API cost so Claude can budget calls. The get_rate_limit_status tool returns current usage without making any API requests. Inoreader's free tier allows ~100 requests per day per zone.
MIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"inoreader-mcp": {
"command": "npx",
"args": []
}
}
}