Observed since 21 Oct, 09:37 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
@0xquinto/rss-mcp
MCP server for RSS feed management with full-text search and HackerNews ranking
An MCP server that lets AI assistants subscribe to, fetch, search, and manage RSS feeds. Built with TypeScript and SQLite with full-text search.
Inspired by Andrej Karpathy's post on reclaiming your information diet:
"Finding myself going back to RSS/Atom feeds a lot more recently. There's a lot more higher quality longform and a lot less slop intended to provoke... We should bring back RSS - it's open, pervasive, hackable."
Quick start with curated feeds: Import the Most Popular Blogs of Hacker News 2025 OPML file to get 92 high-quality tech blogs:
import the OPML file from https://gist.github.com/emschwartz/e6d2bf860ccc367fe37ff953ba6de66b
Claude will automatically use the import_opml tool to add all feeds.
/plugin marketplace add 0xQuinto/rss-mcp
/plugin install rss-mcp@0xquinto-rss-mcp
bunx @0xquinto/rss-mcp
npx @0xquinto/rss-mcp
| Tool | Description |
|---|---|
list_feeds | List all subscribed feeds |
add_feed | Subscribe to a feed by URL |
remove_feed | Unsubscribe and delete all posts for a feed |
import_opml | Bulk import feeds from an OPML file |
refresh_feeds | Fetch latest posts (all feeds or a specific one) |
get_posts | Query posts with filtering, pagination, and full-text search |
get_post_content | Retrieve article content with pagination (max_length, offset) |
get_daily_digest | Get compact digest of recent posts for synthesis |
get_popular_posts | Rank recent posts by HackerNews engagement |
mark_read | Mark posts as read |
mark_unread | Mark posts as unread |
Posts are stored in ~/.rss-mcp/rss.db (SQLite). The database and FTS5 index are created automatically on first run.
MIT
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
zodEnvironment{
"local_name": "zod",
"alias": false,
"peer_metadata": null
} | ^3.25.76 | runtime |
linkedomEnvironment{
"local_name": "linkedom",
"alias": false,
"peer_metadata": null
} | ^0.18.0 | runtime |
feedsmithEnvironment{
"local_name": "feedsmith",
"alias": false,
"peer_metadata": null
} | ^1.0.0 | runtime |
better-sqlite3Environment{
"local_name": "better-sqlite3",
"alias": false,
"peer_metadata": null
} | ^12.0.0 | runtime |
@mozilla/readabilityEnvironment{
"local_name": "@mozilla/readability",
"alias": false,
"peer_metadata": null
} | ^0.6.0 | runtime |
@modelcontextprotocol/sdkEnvironment{
"local_name": "@modelcontextprotocol/sdk",
"alias": false,
"peer_metadata": null
} | ^1.0.0 | runtime |
tsxEnvironment{
"local_name": "tsx",
"alias": false,
"peer_metadata": null
} | ^4.0.0 | development |
typescriptEnvironment{
"local_name": "typescript",
"alias": false,
"peer_metadata": null
} | ^5.7.0 | development |
@types/nodeEnvironment{
"local_name": "@types/node",
"alias": false,
"peer_metadata": null
} | ^22.0.0 | development |
@types/better-sqlite3Environment{
"local_name": "@types/better-sqlite3",
"alias": false,
"peer_metadata": null
} | ^7.6.0 | development |
Source distribution
{
"shasum": "debe7b9861f65a49c949747b5837e39798d01ebd",
"tarball": "https://registry.npmjs.org/@0xquinto/rss-mcp/-/rss-mcp-1.1.1.tgz",
"fileCount": 26,
"integrity": "sha512-SZxJ0yjrgzsF9KdCQX4i2B7UGXasbauH599ZIvXbwVI3ZCsnRDwvcM/Fyxdje6Rqzwqc4ccfmgjpmzZtLlmozQ==",
"signatures": [
{
"sig": "MEYCIQCILbmwfSafAna7SgaF7ts5l+jItqm52qR2GpQ3YzsYdwIhAP38oL8y7gU98B6TLbuXYait/ozWhgqzvfBBuDi/iesD",
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
}
],
"unpackedSize": 61083
}Shared repository data · GitHub
HTTP 301 · detected 22 Oct 2026
Reported destinationObserved since 21 Oct, 09:37 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:2137c74b01d5ffd4beaec487a6cfbe33d6488bf17e8573bfdc770ff2652095de