Binding feeds to the names in an OPML rather than to URLs means the reading list you already maintain becomes the tool's namespace — add a feed to the file and it is available, with no server change. It also bounds what the assistant can fetch, since anything not in the OPML is not addressable. The date argument is required rather than optional, which is the right default for a feed reader: you get what is new, not the whole archive.
A small RSS server with one tool. Feeds are not addressed by URL but by the name they carry in an OPML file you point the server at, so an assistant asks for a feed the way you have it filed rather than the way it is hosted.
- One tool that fetches a feed and returns its entries as formatted text — `get_rss`
- Two required arguments: `feed_name`, which is the name in your OPML, and `since`, which bounds how far back the entries go
- An optional `export_result` flag, defaulting to false, which additionally writes the entries out to a file rather than only returning them to the conversation
No account and no key. An OPML file listing the feeds you want reachable — its path is passed to the server with `--opml`, and the feed names inside it are what the tool accepts. The package is `rssmcp` (0.1.1 in pyproject) and the documented launch is `uvx` with `-U rssmcp`, so uv needs to be on the machine. A Smithery one-liner installs it into Claude Desktop.
One command — npx -y @smithery/cli install @Lunran/rssmcp --client claude
